1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-10 16:58:47 +03:00

cleanup: use ARG_LONG_OPT

Just like with _VAL strings, also _ARG strings do not need to
be present - as we can easily check for LONG opt version just
by adding attribute.

With attribute ARG_LONG_OPT string arg name[] becomes unused
and can be safely removed.

Also within _find_command_id_function() we do not need to handle
'command_enum == CMD_NONE' as separate case and just use single loop.
This commit is contained in:
Zdenek Kabelac 2024-05-18 01:38:18 +02:00
parent 59345da03f
commit 93918a1990
6 changed files with 14 additions and 15 deletions

View File

@ -137,7 +137,7 @@ arg(bootloaderareasize_ARG, '\0', "bootloaderareasize", sizemb_VAL, 0, 0,
"To see the bootloader area start and size of\n" "To see the bootloader area start and size of\n"
"an existing PV use pvs -o +pv_ba_start,pv_ba_size.\n") "an existing PV use pvs -o +pv_ba_start,pv_ba_size.\n")
arg(cache_long_ARG, '\0', "cache", 0, 0, 0, arg(cache_long_ARG, '\0', "cache", 0, ARG_LONG_OPT, 0,
"#pvscan\n" "#pvscan\n"
"Scan one or more devices and record that they are online.\n" "Scan one or more devices and record that they are online.\n"
"#vgscan\n" "#vgscan\n"
@ -301,7 +301,7 @@ arg(errorwhenfull_ARG, '\0', "errorwhenfull", bool_VAL, 0, 0,
"(Also see dm-thin-pool kernel module option no_space_timeout.)\n" "(Also see dm-thin-pool kernel module option no_space_timeout.)\n"
"See \\fBlvmthin\\fP(7) for more information.\n") "See \\fBlvmthin\\fP(7) for more information.\n")
arg(force_long_ARG, '\0', "force", 0, ARG_COUNTABLE, 0, arg(force_long_ARG, '\0', "force", 0, ARG_COUNTABLE | ARG_LONG_OPT, 0,
"Force metadata restore even with thin pool LVs.\n" "Force metadata restore even with thin pool LVs.\n"
"Use with extreme caution. Most changes to thin metadata\n" "Use with extreme caution. Most changes to thin metadata\n"
"cannot be reverted.\n" "cannot be reverted.\n"
@ -837,7 +837,7 @@ arg(showunsupported_ARG, '\0', "showunsupported", 0, 0, 0,
arg(startpoll_ARG, '\0', "startpoll", 0, 0, 0, arg(startpoll_ARG, '\0', "startpoll", 0, 0, 0,
"Start polling an LV to continue processing a conversion.\n") "Start polling an LV to continue processing a conversion.\n")
arg(stripes_long_ARG, '\0', "stripes", number_VAL, 0, 0, arg(stripes_long_ARG, '\0', "stripes", number_VAL, ARG_LONG_OPT, 0,
"Specifies the number of stripes in a striped LV. This is the number of\n" "Specifies the number of stripes in a striped LV. This is the number of\n"
"PVs (devices) that a striped LV is spread across. Data that\n" "PVs (devices) that a striped LV is spread across. Data that\n"
"appears sequential in the LV is spread across multiple devices in units of\n" "appears sequential in the LV is spread across multiple devices in units of\n"

View File

@ -47,7 +47,7 @@ static const struct val_name val_names[VAL_COUNT + 1] = {
/* create table of option names, e.g. --foo, and corresponding enum from args.h */ /* create table of option names, e.g. --foo, and corresponding enum from args.h */
static const struct opt_name opt_names[ARG_COUNT + 1] = { static const struct opt_name opt_names[ARG_COUNT + 1] = {
#define arg(a, b, c, d, e, f, g) { # a, b, a, "--" c, d, e, f, g }, #define arg(a, b, c, d, e, f, g) { g, "--" c, b, a, d, e, f },
#include "args.h" #include "args.h"
#undef arg #undef arg
}; };
@ -256,7 +256,7 @@ static int _opt_str_to_num(struct command *cmd, const char *str)
* check left & right side for possible match * check left & right side for possible match
*/ */
for (i = middle;;) { for (i = middle;;) {
if ((!p && !strstr(opt_names_alpha[i]->name, "_long_ARG")) || if ((!p && !(opt_names_alpha[i]->flags & ARG_LONG_OPT)) ||
(p && !opt_names_alpha[i]->short_opt)) (p && !opt_names_alpha[i]->short_opt))
return opt_names_alpha[i]->opt_enum; /* Found */ return opt_names_alpha[i]->opt_enum; /* Found */
/* Check if there is something on the 'left-side' */ /* Check if there is something on the 'left-side' */
@ -268,7 +268,7 @@ static int _opt_str_to_num(struct command *cmd, const char *str)
for (i = middle + 1; i <= last; ++i) { for (i = middle + 1; i <= last; ++i) {
if (strcmp(opt_names_alpha[i]->long_opt, long_name)) if (strcmp(opt_names_alpha[i]->long_opt, long_name))
break; break;
if ((!p && !strstr(opt_names_alpha[i]->name, "_long_ARG")) || if ((!p && !(opt_names_alpha[i]->flags & ARG_LONG_OPT)) ||
(p && !opt_names_alpha[i]->short_opt)) (p && !opt_names_alpha[i]->short_opt))
return opt_names_alpha[i]->opt_enum; /* Found */ return opt_names_alpha[i]->opt_enum; /* Found */
} }

View File

@ -226,14 +226,13 @@ struct command {
/* see global opt_names[] */ /* see global opt_names[] */
struct opt_name { struct opt_name {
const char name[27]; /* "foo_ARG" */ const char *desc;
const char long_opt[27];/* --foo */
const char short_opt; /* -f */ const char short_opt; /* -f */
uint16_t opt_enum; /* foo_ARG */ uint16_t opt_enum; /* foo_ARG */
const char long_opt[28]; /* --foo */
uint16_t val_enum; /* xyz_VAL when --foo takes a val like "--foo xyz" */ uint16_t val_enum; /* xyz_VAL when --foo takes a val like "--foo xyz" */
uint16_t flags; uint16_t flags;
uint16_t prio; uint16_t prio;
const char *desc;
}; };
/* see global val_names[] */ /* see global val_names[] */

View File

@ -71,6 +71,7 @@ static struct cmdline_context _cmdline;
* For now, any command id not included here uses the old command fn. * For now, any command id not included here uses the old command fn.
*/ */
static const struct command_function _command_functions[CMD_COUNT] = { static const struct command_function _command_functions[CMD_COUNT] = {
{ CMD_NONE, NULL },
{ lvmconfig_general_CMD, lvmconfig }, { lvmconfig_general_CMD, lvmconfig },
{ lvchange_properties_CMD, lvchange_properties_cmd }, { lvchange_properties_CMD, lvchange_properties_cmd },
{ lvchange_resync_CMD, lvchange_resync_cmd }, { lvchange_resync_CMD, lvchange_resync_cmd },
@ -1303,15 +1304,12 @@ static void _set_valid_args_for_command_name(int ci)
static command_fn _find_command_id_function(int command_enum) static command_fn _find_command_id_function(int command_enum)
{ {
int i; unsigned i;
if (!command_enum) for (i = 0; i < CMD_COUNT; i++)
return NULL;
for (i = 0; i < CMD_COUNT; i++) {
if (_command_functions[i].command_enum == command_enum) if (_command_functions[i].command_enum == command_enum)
return _command_functions[i].fn; return _command_functions[i].fn;
}
return NULL; return NULL;
} }

View File

@ -60,6 +60,7 @@ static void *dm_pool_alloc(void *p, size_t size)
#define ARG_COUNTABLE 0x00000001 #define ARG_COUNTABLE 0x00000001
#define ARG_GROUPABLE 0x00000002 #define ARG_GROUPABLE 0x00000002
#define ARG_NONINTERACTIVE 0x00000004 #define ARG_NONINTERACTIVE 0x00000004
#define ARG_LONG_OPT 0x00000008
struct arg_values; struct arg_values;
/* needed to include vals.h */ /* needed to include vals.h */

View File

@ -61,6 +61,7 @@
#define ARG_COUNTABLE 0x00000001 /* E.g. -vvvv */ #define ARG_COUNTABLE 0x00000001 /* E.g. -vvvv */
#define ARG_GROUPABLE 0x00000002 /* E.g. --addtag */ #define ARG_GROUPABLE 0x00000002 /* E.g. --addtag */
#define ARG_NONINTERACTIVE 0x00000004 /* only for use in noninteractive mode */ #define ARG_NONINTERACTIVE 0x00000004 /* only for use in noninteractive mode */
#define ARG_LONG_OPT 0x00000008 /* arg has long format option */
struct arg_values { struct arg_values {
char *value; char *value;