From 25236a963f78b23ecc17a51485c95be4eece9420 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sun, 12 May 2024 18:29:31 +0200 Subject: [PATCH] command: refactor inner loop Move part of the 'inner' loop which is would be otherwise always production same results for all 'opt_enum' values out of the loop, so it can be evaluated just once. --- tools/command.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/tools/command.c b/tools/command.c index f0f90260f..3107e2cb5 100644 --- a/tools/command.c +++ b/tools/command.c @@ -1184,10 +1184,29 @@ void factor_common_options(void) for (ci = 0; ci < COMMAND_COUNT; ci++) { cmd = &commands[ci]; + if (cmd->lvm_command_enum != command_names[cn].lvm_command_enum) continue; command_names_args[cn].variants++; + + if (cmd->ro_count || cmd->any_ro_count) + command_names_args[cn].variant_has_ro = 1; + if (cmd->rp_count) + command_names_args[cn].variant_has_rp = 1; + if (cmd->oo_count) + command_names_args[cn].variant_has_oo = 1; + if (cmd->op_count) + command_names_args[cn].variant_has_op = 1; + + for (ro = 0; ro < cmd->ro_count + cmd->any_ro_count; ro++) { + command_names_args[cn].all_options[cmd->required_opt_args[ro].opt] = 1; + + if ((cmd->required_opt_args[ro].opt == size_ARG) && !strncmp(cmd->name, "lv", 2)) + command_names_args[cn].all_options[extents_ARG] = 1; + } + for (oo = 0; oo < cmd->oo_count; oo++) + command_names_args[cn].all_options[cmd->optional_opt_args[oo].opt] = 1; } for (opt_enum = 0; opt_enum < ARG_COUNT; opt_enum++) { @@ -1198,26 +1217,7 @@ void factor_common_options(void) if (cmd->lvm_command_enum != command_names[cn].lvm_command_enum) continue; - if (cmd->ro_count || cmd->any_ro_count) - command_names_args[cn].variant_has_ro = 1; - if (cmd->rp_count) - command_names_args[cn].variant_has_rp = 1; - if (cmd->oo_count) - command_names_args[cn].variant_has_oo = 1; - if (cmd->op_count) - command_names_args[cn].variant_has_op = 1; - - for (ro = 0; ro < cmd->ro_count + cmd->any_ro_count; ro++) { - command_names_args[cn].all_options[cmd->required_opt_args[ro].opt] = 1; - - if ((cmd->required_opt_args[ro].opt == size_ARG) && !strncmp(cmd->name, "lv", 2)) - command_names_args[cn].all_options[extents_ARG] = 1; - } - for (oo = 0; oo < cmd->oo_count; oo++) - command_names_args[cn].all_options[cmd->optional_opt_args[oo].opt] = 1; - found = 0; - for (oo = 0; oo < cmd->oo_count; oo++) { if (cmd->optional_opt_args[oo].opt == opt_enum) { found = 1; -- 2.43.5