Lines Matching refs:arg

28 struct arg arg_init(char **argv) {
29 struct arg a;
39 int arg_match(struct arg *arg_, const struct arg_def *def, char **argv) {
40 struct arg arg;
45 arg = arg_init(argv);
48 && strlen(arg.argv[0]) == strlen(def->short_name) + 1
49 && !strcmp(arg.argv[0] + 1, def->short_name)) {
51 arg.name = arg.argv[0] + 1;
52 arg.val = def->has_val ? arg.argv[1] : NULL;
53 arg.argv_step = def->has_val ? 2 : 1;
57 if (strlen(arg.argv[0]) >= name_len + 2
58 && arg.argv[0][1] == '-'
59 && !strncmp(arg.argv[0] + 2, def->long_name, name_len)
60 && (arg.argv[0][name_len + 2] == '='
61 || arg.argv[0][name_len + 2] == '\0')) {
63 arg.name = arg.argv[0] + 2;
64 arg.val = arg.name[name_len] == '=' ? arg.name + name_len + 1 : NULL;
65 arg.argv_step = 1;
69 if (arg.name && !arg.val && def->has_val)
70 die("Error: option %s requires argument.\n", arg.name);
72 if (arg.name && arg.val && !def->has_val)
73 die("Error: option %s requires no argument.\n", arg.name);
75 if (arg.name
76 && (arg.val || !def->has_val)) {
77 arg.def = def;
78 *arg_ = arg;
86 const char *arg_next(struct arg *arg) {
87 if (arg->argv[0])
88 arg->argv += arg->argv_step;
90 return *arg->argv;
108 char *short_val = def->has_val ? " <arg>" : "";
109 char *long_val = def->has_val ? "=<arg>" : "";
139 unsigned int arg_parse_uint(const struct arg *arg) {
143 rawval = strtol(arg->val, &endptr, 10);
145 if (arg->val[0] != '\0' && endptr[0] == '\0') {
150 arg->name, rawval);
153 die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
158 int arg_parse_int(const struct arg *arg) {
162 rawval = strtol(arg->val, &endptr, 10);
164 if (arg->val[0] != '\0' && endptr[0] == '\0') {
169 arg->name, rawval);
172 die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
181 struct vpx_rational arg_parse_rational(const struct arg *arg) {
187 rawval = strtol(arg->val, &endptr, 10);
189 if (arg->val[0] != '\0' && endptr[0] == '/') {
193 arg->name, rawval);
194 } else die("Option %s: Expected / at '%c'\n", arg->name, *endptr);
199 if (arg->val[0] != '\0' && endptr[0] == '\0') {
203 arg->name, rawval);
204 } else die("Option %s: Invalid character '%c'\n", arg->name, *endptr);
210 int arg_parse_enum(const struct arg *arg) {
216 rawval = strtol(arg->val, &endptr, 10);
217 if (arg->val[0] != '\0' && endptr[0] == '\0') {
219 for (listptr = arg->def->enums; listptr->name; listptr++)
225 for (listptr = arg->def->enums; listptr->name; listptr++)
226 if (!strcmp(arg->val, listptr->name))
229 die("Option %s: Invalid value '%s'\n", arg->name, arg->val);
234 int arg_parse_enum_or_int(const struct arg *arg) {
235 if (arg->def->enums)
236 return arg_parse_enum(arg);
237 return arg_parse_int(arg);