Lines Matching refs:options
342 static int parse_short_opt(struct parse_opt_ctx_t *p, const struct option *options) in parse_short_opt() argument
345 for (; options->type != OPTION_END; options++) { in parse_short_opt()
346 if (options->short_name == *p->opt) { in parse_short_opt()
348 return get_value(p, options, OPT_SHORT); in parse_short_opt()
352 if (options->parent) { in parse_short_opt()
353 options = options->parent; in parse_short_opt()
361 const struct option *options) in parse_long_opt() argument
371 for (; options->type != OPTION_END; options++) { in parse_long_opt()
375 if (!options->long_name) in parse_long_opt()
378 rest = skip_prefix(arg, options->long_name); in parse_long_opt()
379 if (options->type == OPTION_ARGUMENT) { in parse_long_opt()
383 return opterror(options, "takes no value", flags); in parse_long_opt()
390 if (strstarts(options->long_name, "no-")) { in parse_long_opt()
397 rest = skip_prefix(arg, options->long_name + 3); in parse_long_opt()
403 if (strstarts(options->long_name + 3, arg)) { in parse_long_opt()
409 if (!strncmp(options->long_name, arg, arg_end - arg)) { in parse_long_opt()
423 abbrev_option = options; in parse_long_opt()
436 rest = skip_prefix(arg + 3, options->long_name); in parse_long_opt()
438 if (!rest && strstarts(options->long_name, arg + 3)) in parse_long_opt()
449 return get_value(p, options, flags); in parse_long_opt()
465 if (options->parent) { in parse_long_opt()
466 options = options->parent; in parse_long_opt()
473 static void check_typos(const char *arg, const struct option *options) in check_typos() argument
483 for (; options->type != OPTION_END; options++) { in check_typos()
484 if (!options->long_name) in check_typos()
486 if (strstarts(options->long_name, arg)) { in check_typos()
512 const struct option *options, in parse_options_step() argument
534 return usage_with_options_internal(usagestr, options, 0, ctx); in parse_options_step()
536 switch (parse_short_opt(ctx, options)) { in parse_options_step()
538 return parse_options_usage(usagestr, options, arg, 1); in parse_options_step()
547 check_typos(arg, options); in parse_options_step()
550 return usage_with_options_internal(usagestr, options, 0, ctx); in parse_options_step()
552 switch (parse_short_opt(ctx, options)) { in parse_options_step()
554 return parse_options_usage(usagestr, options, arg, 1); in parse_options_step()
583 return usage_with_options_internal(usagestr, options, 1, ctx); in parse_options_step()
585 return usage_with_options_internal(usagestr, options, 0, ctx); in parse_options_step()
590 switch (parse_long_opt(ctx, arg, options)) { in parse_options_step()
592 return parse_options_usage(usagestr, options, arg, 0); in parse_options_step()
611 parse_options_usage(usagestr, options, arg, excl_short_opt); in parse_options_step()
615 parse_options_usage(NULL, options, &opt, 1); in parse_options_step()
617 parse_options_usage(NULL, options, ctx->excl_opt->long_name, 0); in parse_options_step()
629 int parse_options_subcommand(int argc, const char **argv, const struct option *options, in parse_options_subcommand() argument
651 switch (parse_options_step(&ctx, options, usagestr)) { in parse_options_subcommand()
657 while (options->type != OPTION_END) { in parse_options_subcommand()
658 if (options->long_name) in parse_options_subcommand()
659 printf("--%s ", options->long_name); in parse_options_subcommand()
660 options++; in parse_options_subcommand()
677 usage_with_options(usagestr, options); in parse_options_subcommand()
683 int parse_options(int argc, const char **argv, const struct option *options, in parse_options() argument
686 return parse_options_subcommand(argc, argv, options, NULL, in parse_options()