X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=args.c;h=7b2cc3a10104f6fdd3802af00d676fbc0bebedcc;hb=b843aa4eda473577e7d22cd4045fb59df521898f;hp=782929022a7137aa2ae041beef2bfe5978178524;hpb=9b1ece2cca93818200c3fc585b29d312e08a3e35;p=profile%2Fivi%2Flibvpx.git diff --git a/args.c b/args.c index 7829290..7b2cc3a 100644 --- a/args.c +++ b/args.c @@ -135,6 +135,17 @@ void arg_show_usage(FILE *fp, const struct arg_def *const *defs) def->long_name, long_val); fprintf(fp, " %-37s\t%s\n", option_text, def->desc); + + if(def->enums) + { + const struct arg_enum_list *listptr; + + fprintf(fp, " %-37s\t ", ""); + + for(listptr = def->enums; listptr->name; listptr++) + fprintf(fp, "%s%s", listptr->name, + listptr[1].name ? ", " : "\n"); + } } } @@ -218,3 +229,37 @@ struct vpx_rational arg_parse_rational(const struct arg *arg) return rat; } + + +int arg_parse_enum(const struct arg *arg) +{ + const struct arg_enum_list *listptr; + long int rawval; + char *endptr; + + /* First see if the value can be parsed as a raw value */ + rawval = strtol(arg->val, &endptr, 10); + if (arg->val[0] != '\0' && endptr[0] == '\0') + { + /* Got a raw value, make sure it's valid */ + for(listptr = arg->def->enums; listptr->name; listptr++) + if(listptr->val == rawval) + return rawval; + } + + /* Next see if it can be parsed as a string */ + for(listptr = arg->def->enums; listptr->name; listptr++) + if(!strcmp(arg->val, listptr->name)) + return listptr->val; + + die("Option %s: Invalid value '%s'\n", arg->name, arg->val); + return 0; +} + + +int arg_parse_enum_or_int(const struct arg *arg) +{ + if(arg->def->enums) + return arg_parse_enum(arg); + return arg_parse_int(arg); +}