]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/options: quote the metavar in --help output
authorZbigniew Jędrzejewski-Szmek <zbyszek@amutable.com>
Sat, 4 Apr 2026 18:38:52 +0000 (20:38 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@amutable.com>
Tue, 7 Apr 2026 08:55:52 +0000 (10:55 +0200)
imdsd uses --extra-header='NAME: VALUE'. We could include the quotes
in the metavar string, but I think it's nicer to only do that in the
printed output, so that later, when we add introspection, the value
there will not include the quotes.

src/shared/options.c

index e6b82fe34d07cbaee378959664cb76e675cdfa3e..f94ba2843210480d89475cc8c5d41c8b0638cfd7 100644 (file)
@@ -297,6 +297,7 @@ int _option_parser_get_help_table(
                  * "=" is shown only when a long option is defined: -l --long=ARG, --long=ARG, -s ARG.
                  */
                 bool need_eq = option_takes_arg(opt) && opt->long_code;
+                bool need_quote = opt->metavar && strchr(opt->metavar, ' ');
                 _cleanup_free_ char *s = strjoin(
                                 "  ",
                                 sc,
@@ -305,7 +306,9 @@ int _option_parser_get_help_table(
                                 strempty(opt->long_code),
                                 option_arg_optional(opt) ? "[" : "",
                                 need_eq ? "=" : "",
+                                need_quote ? "'" : "",
                                 strempty(opt->metavar),
+                                need_quote ? "'" : "",
                                 option_arg_optional(opt) ? "]" : "");
                 if (!s)
                         return log_oom();