tools lib subcmd: Introduce OPTION_ULONG
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 4ba8b3ebf4f8f583c2c01da20e4d110a5881ffdd Gitweb: https://git.kernel.org/tip/4ba8b3ebf4f8f583c2c01da20e4d110a5881ffdd Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 18 Oct 2018 15:24:07 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Fri, 19 Oct 2018 11:56:58 -0300
tools lib subcmd: Introduce OPTION_ULONG
For completeness, will be used in 'perf trace --max-events'.
Cc Adrian Hunter <[email protected]>
Cc Andi Kleen <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Josh Poimboeuf <[email protected]>
Cc Kim Phillips <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/lib/subcmd/parse-options.c | 19 +++++++++++++++++++ tools/lib/subcmd/parse-options.h | 2 ++ 2 files changed, 21 insertions(+)
tools/lib/subcmd/parse-options.c +19 -0
@@ -116,6 +116,7 @@ static int get_value(struct parse_opt_ctx_t *p,case OPTION_INTEGER :case OPTION_UINTEGER :case OPTION_LONG : +case OPTION_ULONG :case OPTION_U64 :default :break ;
@@ -166,6 +167,7 @@ static int get_value(struct parse_opt_ctx_t *p,case OPTION_INTEGER :case OPTION_UINTEGER :case OPTION_LONG : +case OPTION_ULONG :case OPTION_U64 :default :break ;
@@ -295,6 +297,22 @@ static int get_value(struct parse_opt_ctx_t *p,return opterror (opt,"expects a numerical value" , flags);return 0 ; +case OPTION_ULONG : +if (unset) { + *(unsigned long *)opt->value =0 ; +return 0 ; + } +if (opt->flags &PARSE_OPT_OPTARG && !p->opt) { + *(unsigned long *)opt->value = opt->defval; +return 0 ; + } +if (get_arg (p, opt, flags, &arg)) +return -1 ; + *(unsigned long *)opt->value =strtoul (arg, (char **)&s,10 ); +if (*s) +return opterror (opt,"expects a numerical value" , flags); +return 0 ; +case OPTION_U64 :if (unset) { *(u64 *)opt->value =0 ;
@@ -703,6 +721,7 @@ static void print_option_help(const struct option *opts, int full)case OPTION_ARGUMENT :break ;case OPTION_LONG : +case OPTION_ULONG :case OPTION_U64 :case OPTION_INTEGER :case OPTION_UINTEGER :
tools/lib/subcmd/parse-options.h +2 -0
@@ -25,6 +25,7 @@ enum parse_opt_type {OPTION_STRING ,OPTION_INTEGER ,OPTION_LONG , +OPTION_ULONG ,OPTION_CALLBACK ,OPTION_U64 , OPTION_UINTEGER,
@@ -133,6 +134,7 @@ struct option {#define OPT_INTEGER (s, l, v, h) { .type = OPTION_INTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, int *), .help = (h) }#define OPT_UINTEGER (s, l, v, h) { .type = OPTION_UINTEGER, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned int *), .help = (h) }#define OPT_LONG (s, l, v, h) { .type = OPTION_LONG, .short_name = (s), .long_name = (l), .value = check_vtype(v, long *), .help = (h) } +#define OPT_ULONG (s, l, v, h) { .type = OPTION_ULONG, .short_name = (s), .long_name = (l), .value = check_vtype(v, unsigned long *), .help = (h) }#define OPT_U64 (s, l, v, h) { .type = OPTION_U64, .short_name = (s), .long_name = (l), .value = check_vtype(v, u64 *), .help = (h) }#define OPT_STRING (s, l, v, a, h) { .type = OPTION_STRING, .short_name = (s), .long_name = (l), .value = check_vtype(v, const char **), .argh = (a), .help = (h) }#define OPT_STRING_OPTARG (s, l, v, a, h, d) \