]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machinectl: reorder cases in parse_argv() to match order in --help
authorZbigniew Jędrzejewski-Szmek <zbyszek@amutable.com>
Fri, 15 May 2026 16:34:03 +0000 (18:34 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@amutable.com>
Fri, 15 May 2026 19:49:05 +0000 (21:49 +0200)
--no-pager, --no-legend, --no-ask-password, --quiet are shifted to
the end.

Co-developed-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
src/machine/machinectl.c

index 1e704e4d962142c4d211f1c2848b0ac677441f59..657c69e2a17d68b12c17ec391d0f11971b688b5d 100644 (file)
@@ -2520,6 +2520,24 @@ static int parse_argv(int argc, char *argv[]) {
                 case ARG_VERSION:
                         return version();
 
+                case 'H':
+                        arg_transport = BUS_TRANSPORT_REMOTE;
+                        arg_host = optarg;
+                        break;
+
+                case 'M':
+                        arg_transport = BUS_TRANSPORT_MACHINE;
+                        arg_host = optarg;
+                        break;
+
+                case ARG_SYSTEM:
+                        arg_runtime_scope = RUNTIME_SCOPE_SYSTEM;
+                        break;
+
+                case ARG_USER:
+                        arg_runtime_scope = RUNTIME_SCOPE_USER;
+                        break;
+
                 case 'p':
                 case 'P':
                         r = strv_extend(&arg_property, optarg);
@@ -2546,33 +2564,6 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_full = true;
                         break;
 
-                case 'n':
-                        if (safe_atou(optarg, &arg_lines) < 0)
-                                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
-                                                       "Failed to parse lines '%s'", optarg);
-                        break;
-
-                case 'o':
-                        if (streq(optarg, "help"))
-                                return DUMP_STRING_TABLE(output_mode, OutputMode, _OUTPUT_MODE_MAX);
-
-                        r = output_mode_from_string(optarg);
-                        if (r < 0)
-                                return log_error_errno(r, "Unknown output '%s'.", optarg);
-                        arg_output = r;
-
-                        if (OUTPUT_MODE_IS_JSON(arg_output))
-                                arg_legend = false;
-                        break;
-
-                case ARG_NO_PAGER:
-                        arg_pager_flags |= PAGER_DISABLE;
-                        break;
-
-                case ARG_NO_LEGEND:
-                        arg_legend = false;
-                        break;
-
                 case ARG_KILL_WHOM:
                         arg_kill_whom = optarg;
                         break;
@@ -2583,18 +2574,14 @@ static int parse_argv(int argc, char *argv[]) {
                                 return r;
                         break;
 
-                case ARG_NO_ASK_PASSWORD:
-                        arg_ask_password = false;
-                        break;
-
-                case 'H':
-                        arg_transport = BUS_TRANSPORT_REMOTE;
-                        arg_host = optarg;
+                case ARG_UID:
+                        arg_uid = optarg;
                         break;
 
-                case 'M':
-                        arg_transport = BUS_TRANSPORT_MACHINE;
-                        arg_host = optarg;
+                case 'E':
+                        r = strv_env_replace_strdup_passthrough(&arg_setenv, optarg);
+                        if (r < 0)
+                                return log_error_errno(r, "Cannot assign environment variable %s: %m", optarg);
                         break;
 
                 case ARG_READ_ONLY:
@@ -2605,22 +2592,39 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_mkdir = true;
                         break;
 
-                case 'q':
-                        arg_quiet = true;
+                case 'n':
+                        if (safe_atou(optarg, &arg_lines) < 0)
+                                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                                       "Failed to parse lines '%s'", optarg);
                         break;
 
-                case ARG_VERIFY:
+                case ARG_MAX_ADDRESSES:
+                        if (streq(optarg, "all"))
+                                arg_max_addresses = UINT_MAX;
+                        else if (safe_atou(optarg, &arg_max_addresses) < 0)
+                                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
+                                                       "Invalid number of addresses: %s", optarg);
+                        break;
+
+                case 'o':
                         if (streq(optarg, "help"))
-                                return DUMP_STRING_TABLE(import_verify, ImportVerify, _IMPORT_VERIFY_MAX);
+                                return DUMP_STRING_TABLE(output_mode, OutputMode, _OUTPUT_MODE_MAX);
 
-                        r = import_verify_from_string(optarg);
+                        r = output_mode_from_string(optarg);
                         if (r < 0)
-                                return log_error_errno(r, "Failed to parse --verify= setting: %s", optarg);
-                        arg_verify = r;
+                                return log_error_errno(r, "Unknown output '%s'.", optarg);
+                        arg_output = r;
+
+                        if (OUTPUT_MODE_IS_JSON(arg_output))
+                                arg_legend = false;
                         break;
 
-                case 'V':
-                        arg_runner = RUNNER_VMSPAWN;
+                case ARG_FORCE:
+                        arg_force = true;
+                        break;
+
+                case ARG_NOW:
+                        arg_now = true;
                         break;
 
                 case ARG_RUNNER:
@@ -2631,12 +2635,18 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_runner = r;
                         break;
 
-                case ARG_NOW:
-                        arg_now = true;
+                case 'V':
+                        arg_runner = RUNNER_VMSPAWN;
                         break;
 
-                case ARG_FORCE:
-                        arg_force = true;
+                case ARG_VERIFY:
+                        if (streq(optarg, "help"))
+                                return DUMP_STRING_TABLE(import_verify, ImportVerify, _IMPORT_VERIFY_MAX);
+
+                        r = import_verify_from_string(optarg);
+                        if (r < 0)
+                                return log_error_errno(r, "Failed to parse --verify= setting: %s", optarg);
+                        arg_verify = r;
                         break;
 
                 case ARG_FORMAT:
@@ -2647,30 +2657,20 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_format = optarg;
                         break;
 
-                case ARG_UID:
-                        arg_uid = optarg;
-                        break;
-
-                case 'E':
-                        r = strv_env_replace_strdup_passthrough(&arg_setenv, optarg);
-                        if (r < 0)
-                                return log_error_errno(r, "Cannot assign environment variable %s: %m", optarg);
+                case ARG_NO_PAGER:
+                        arg_pager_flags |= PAGER_DISABLE;
                         break;
 
-                case ARG_MAX_ADDRESSES:
-                        if (streq(optarg, "all"))
-                                arg_max_addresses = UINT_MAX;
-                        else if (safe_atou(optarg, &arg_max_addresses) < 0)
-                                return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
-                                                       "Invalid number of addresses: %s", optarg);
+                case ARG_NO_LEGEND:
+                        arg_legend = false;
                         break;
 
-                case ARG_USER:
-                        arg_runtime_scope = RUNTIME_SCOPE_USER;
+                case ARG_NO_ASK_PASSWORD:
+                        arg_ask_password = false;
                         break;
 
-                case ARG_SYSTEM:
-                        arg_runtime_scope = RUNTIME_SCOPE_SYSTEM;
+                case 'q':
+                        arg_quiet = true;
                         break;
 
                 case '?':