diff --git a/man/systemd-sysext.xml b/man/systemd-sysext.xml index 8705fa7275d..050e21fafcb 100644 --- a/man/systemd-sysext.xml +++ b/man/systemd-sysext.xml @@ -389,8 +389,8 @@ - - Set mutable mode. + + Set mutable mode. The special value help will list the known values. @@ -438,6 +438,12 @@ with the modifications made to the host file system being discarded after unmerge. + + + + list known values and exit immediately. + + diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index 5255ac1df1c..c88c1042960 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -79,7 +79,7 @@ static const char* const mutable_mode_table[_MUTABLE_MAX] = { [MUTABLE_EPHEMERAL_IMPORT] = "ephemeral-import", }; -DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(mutable_mode, MutableMode, MUTABLE_YES); +DEFINE_PRIVATE_STRING_TABLE_LOOKUP_WITH_BOOLEAN(mutable_mode, MutableMode, MUTABLE_YES); static char **arg_hierarchies = NULL; /* "/usr" + "/opt" by default for sysext and /etc by default for confext */ static char *arg_root = NULL; @@ -2462,7 +2462,7 @@ static int verb_help(int argc, char **argv, void *userdata) { " -h --help Show this help\n" " --version Show package version\n" "\n%3$sOptions:%4$s\n" - " --mutable=yes|no|auto|import|ephemeral|ephemeral-import\n" + " --mutable=yes|no|auto|import|ephemeral|ephemeral-import|help\n" " Specify a mutability mode of the merged hierarchy\n" " --no-pager Do not pipe output into a pager\n" " --no-legend Do not show the headers and footers\n" @@ -2577,6 +2577,14 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_MUTABLE: + if (streq(optarg, "help")) { + if (arg_legend) + puts("Known mutability modes:"); + + DUMP_STRING_TABLE(mutable_mode, MutableMode, _MUTABLE_MAX); + return 0; + } + r = parse_mutable_mode(optarg); if (r < 0) return log_error_errno(r, "Failed to parse argument to --mutable=: %s", optarg);