1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

cmdline: drop MAX and check NULL

Remove MAX_COMMAND_NAMES and check for the last element as NULL pointer.
This commit is contained in:
Zdenek Kabelac 2021-02-25 18:09:33 +01:00
parent e946a5e690
commit 589c654562
3 changed files with 16 additions and 29 deletions

View File

@ -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;

View File

@ -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 */

View File

@ -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)
@ -1279,12 +1279,10 @@ 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);
}