diff --git a/tools/command.c b/tools/command.c index dd1f94194..131d2d3d3 100644 --- a/tools/command.c +++ b/tools/command.c @@ -246,19 +246,21 @@ struct cmd_name cmd_names[CMD_COUNT + 1] = { #ifdef MAN_PAGE_GENERATOR -struct command_name command_names[MAX_COMMAND_NAMES] = { +struct command_name command_names[] = { #define xx(a, b, c...) { # a, b, c }, #include "commands.h" #undef xx + { .name = NULL } }; struct command commands[COMMAND_COUNT]; #else /* MAN_PAGE_GENERATOR */ -struct command_name command_names[MAX_COMMAND_NAMES] = { +struct command_name command_names[] = { #define xx(a, b, c...) { # a, b, c, a}, #include "commands.h" #undef xx + { .name = NULL } }; extern struct command commands[COMMAND_COUNT]; /* defined in lvmcmdline.c */ @@ -514,12 +516,9 @@ static struct command_name *_find_command_name(const char *name) if (!islower(name[0])) return NULL; /* Commands starts with lower-case */ - for (i = 0; i < MAX_COMMAND_NAMES; i++) { - if (!command_names[i].name) - break; + for (i = 0; command_names[i].name; i++) if (!strcmp(command_names[i].name, name)) return &command_names[i]; - } return NULL; } @@ -1270,10 +1269,7 @@ void factor_common_options(void) int cn, opt_enum, ci, oo, ro, found; struct command *cmd; - for (cn = 0; cn < MAX_COMMAND_NAMES; cn++) { - if (!command_names[cn].name) - break; - + for (cn = 0; command_names[cn].name; cn++) { /* already factored */ if (command_names[cn].variants) continue; diff --git a/tools/command.h b/tools/command.h index dae3d0570..c0d7977dc 100644 --- a/tools/command.h +++ b/tools/command.h @@ -30,8 +30,6 @@ struct command_function { command_id_fn fn; }; -#define MAX_COMMAND_NAMES 64 - struct command_name { const char *name; const char *desc; /* general command description from commands.h */ diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index b6ad66d62..8ad1f5e99 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -74,7 +74,7 @@ extern struct lv_type lv_types[LVT_COUNT + 1]; /* * Table of command names */ -extern struct command_name command_names[MAX_COMMAND_NAMES]; +extern struct command_name command_names[]; /* * Table of commands (as defined in command-lines.in) @@ -1278,13 +1278,11 @@ static void _set_valid_args_for_command_name(int ci) static struct command_name *_find_command_name(const char *name) { int i; - - for (i = 0; i < MAX_COMMAND_NAMES; i++) { - if (!command_names[i].name) - break; + + for (i = 0; command_names[i].name; i++) if (!strcmp(command_names[i].name, name)) return &command_names[i]; - } + return NULL; } @@ -1354,14 +1352,12 @@ int lvm_register_commands(struct cmd_context *cmd, const char *run_name) } } - _cmdline.command_names = command_names; - _cmdline.num_command_names = 0; + /* Check how many command entries we have */ + for (i = 0; command_names[i].name; i++) + ; - for (i = 0; i < MAX_COMMAND_NAMES; i++) { - if (!command_names[i].name) - break; - _cmdline.num_command_names++; - } + _cmdline.num_command_names = i; + _cmdline.command_names = command_names; for (i = 0; i < _cmdline.num_command_names; i++) _set_valid_args_for_command_name(i); @@ -2074,11 +2070,8 @@ static void _usage_all(void) { int i; - for (i = 0; i < MAX_COMMAND_NAMES; i++) { - if (!command_names[i].name) - break; + for (i = 0; command_names[i].name; i++) _usage(command_names[i].name, 1, 1); - } print_usage_notes(NULL); }