From 732ec1c45f656f493d824d38bccbf55b5384c527 Mon Sep 17 00:00:00 2001 From: Tokunori Ikegami Date: Thu, 4 May 2023 12:47:21 +0900 Subject: [PATCH] util: Delete argconfig value type to add option value as va lists instead Signed-off-by: Tokunori Ikegami --- nvme.c | 2 +- util/argconfig.c | 14 +++++++------- util/argconfig.h | 48 ++++++++++++++++++++++++------------------------ 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/nvme.c b/nvme.c index ae3749ee..455ac835 100644 --- a/nvme.c +++ b/nvme.c @@ -5313,7 +5313,7 @@ static int sanitize_cmd(int argc, char **argv, struct command *cmd, struct plugi OPT_FLAG("oipbp", 'i', &cfg.oipbp, oipbp_desc), OPT_BYTE("owpass", 'n', &cfg.owpass, owpass_desc), OPT_FLAG("ause", 'u', &cfg.ause, ause_desc), - OPT_VAL("sanact", 'a', &cfg.sanact, sanact_desc, sanact), + OPT_BYTE("sanact", 'a', &cfg.sanact, sanact_desc, sanact), OPT_UINT("ovrpat", 'p', &cfg.ovrpat, ovrpat_desc), OPT_END() }; diff --git a/util/argconfig.c b/util/argconfig.c index 1d284847..64835ac9 100644 --- a/util/argconfig.c +++ b/util/argconfig.c @@ -163,13 +163,13 @@ int argconfig_parse_byte(const char *opt, const char *str, unsigned char *val) } static int argconfig_parse_type(struct argconfig_commandline_options *s, struct option *option, - int index, enum argconfig_types type) + int index) { void *value = (void *)(char *)s->default_value; char *endptr; int ret = 0; - switch (type) { + switch (s->config_type) { case CFG_STRING: *((char **)value) = optarg; break; @@ -231,9 +231,6 @@ static int argconfig_parse_type(struct argconfig_commandline_options *s, struct case CFG_FLAG: *((bool *)value) = true; break; - case CFG_VAL: - ret = argconfig_parse_val(s, option, index); - break; default: break; } @@ -316,7 +313,7 @@ static int argconfig_parse_val(struct argconfig_commandline_options *s, struct o return argconfig_set_opt_val(v->type, &v->val, val); } - return argconfig_parse_type(s, option, index, s->opt_val->type); + return argconfig_parse_type(s, option, index); } bool argconfig_output_format_json(bool set) @@ -414,7 +411,10 @@ int argconfig_parse(int argc, char *argv[], const char *program_desc, if (!s->default_value) continue; - ret = argconfig_parse_type(s, long_opts, option_index, s->config_type); + if (s->opt_val) + ret = argconfig_parse_val(s, long_opts, option_index); + else + ret = argconfig_parse_type(s, long_opts, option_index); if (ret) break; } diff --git a/util/argconfig.h b/util/argconfig.h index 8ce28b7c..8825befb 100644 --- a/util/argconfig.h +++ b/util/argconfig.h @@ -62,40 +62,40 @@ enum argconfig_types { #define OPT_END() { NULL } -#define OPT_FLAG(l, s, v, d) \ - {l, s, NULL, CFG_FLAG, v, no_argument, d} +#define OPT_FLAG(l, s, v, d, ...) \ + {l, s, NULL, CFG_FLAG, v, no_argument, d, false, __VA_ARGS__} -#define OPT_SUFFIX(l, s, v, d) \ - {l, s, "IONUM", CFG_LONG_SUFFIX, v, required_argument, d} +#define OPT_SUFFIX(l, s, v, d, ...) \ + {l, s, "IONUM", CFG_LONG_SUFFIX, v, required_argument, d, false, __VA_ARGS__} -#define OPT_UINT(l, s, v, d) \ - {l, s, "NUM", CFG_POSITIVE, v, required_argument, d} +#define OPT_UINT(l, s, v, d, ...) \ + {l, s, "NUM", CFG_POSITIVE, v, required_argument, d, false, __VA_ARGS__} -#define OPT_INT(l, s, v, d) \ - {l, s, "NUM", CFG_INT, v, required_argument, d} +#define OPT_INT(l, s, v, d, ...) \ + {l, s, "NUM", CFG_INT, v, required_argument, d, false, __VA_ARGS__} -#define OPT_LONG(l, s, v, d) \ - {l, s, "NUM", CFG_LONG, v, required_argument, d} +#define OPT_LONG(l, s, v, d, ...) \ + {l, s, "NUM", CFG_LONG, v, required_argument, d, false, __VA_ARGS__} -#define OPT_DOUBLE(l, s, v, d) \ - {l, s, "NUM", CFG_DOUBLE, v, required_argument, d} +#define OPT_DOUBLE(l, s, v, d, ...) \ + {l, s, "NUM", CFG_DOUBLE, v, required_argument, d, false, __VA_ARGS__} -#define OPT_BYTE(l, s, v, d) \ - {l, s, "NUM", CFG_BYTE, v, required_argument, d} +#define OPT_BYTE(l, s, v, d, ...) \ + {l, s, "NUM", CFG_BYTE, v, required_argument, d, false, __VA_ARGS__} -#define OPT_SHRT(l, s, v, d) \ - {l, s, "NUM", CFG_SHORT, v, required_argument, d} +#define OPT_SHRT(l, s, v, d, ...) \ + {l, s, "NUM", CFG_SHORT, v, required_argument, d, false, __VA_ARGS__} -#define OPT_INCR(l, s, v, d) \ - {l, s, "NUM", CFG_INCREMENT, v, no_argument, d} +#define OPT_INCR(l, s, v, d, ...) \ + {l, s, "NUM", CFG_INCREMENT, v, no_argument, d, false, __VA_ARGS__} -#define OPT_STRING(l, s, m, v, d) \ - {l, s, m, CFG_STRING, v, required_argument, d} +#define OPT_STRING(l, s, m, v, d, ...) \ + {l, s, m, CFG_STRING, v, required_argument, d, false, __VA_ARGS__} -#define OPT_FMT(l, s, v, d) OPT_STRING(l, s, "FMT", v, d) -#define OPT_FILE(l, s, v, d) OPT_STRING(l, s, "FILE", v, d) -#define OPT_LIST(l, s, v, d) OPT_STRING(l, s, "LIST", v, d) -#define OPT_STR(l, s, v, d) OPT_STRING(l, s, "STRING", v, d) +#define OPT_FMT(l, s, v, d, ...) OPT_STRING(l, s, "FMT", v, d, __VA_ARGS__) +#define OPT_FILE(l, s, v, d, ...) OPT_STRING(l, s, "FILE", v, d, __VA_ARGS__) +#define OPT_LIST(l, s, v, d, ...) OPT_STRING(l, s, "LIST", v, d, __VA_ARGS__) +#define OPT_STR(l, s, v, d, ...) OPT_STRING(l, s, "STRING", v, d, __VA_ARGS__) #define OPT_VAL(l, s, v, d, o) \ {l, s, "VAL", CFG_VAL, v, required_argument, d, false, o} -- 2.49.0