Lines Matching refs:parser
221 argp_parser_t parser; member
250 if (group->parser) in group_parse()
257 err = (*group->parser)(key, arg, state); in group_parse()
265 struct parser struct
302 struct parser *parser; member
321 if (real || argp->parser) in convert_options()
349 && find_long_option (cvt->parser->long_opts, opt->name) < 0) in convert_options()
368 + (((group - cvt->parser->groups) + 1) << USER_BITS); in convert_options()
376 group->parser = argp->parser; in convert_options()
415 parser_convert (struct parser *parser, const struct argp *argp, int flags) in parser_convert() argument
419 cvt.parser = parser; in parser_convert()
420 cvt.short_end = parser->short_opts; in parser_convert()
421 cvt.long_end = parser->long_opts; in parser_convert()
422 cvt.child_inputs_end = parser->child_inputs; in parser_convert()
432 parser->argp = argp; in parser_convert()
435 parser->egroup = convert_options (argp, 0, 0, parser->groups, &cvt); in parser_convert()
437 parser->egroup = parser->groups; /* No parsers at all! */ in parser_convert()
459 if (opt || argp->parser) in calc_sizes()
482 parser_init (struct parser *parser, const struct argp *argp, in parser_init() argument
504 parser->storage = malloc (GLEN + CLEN + LLEN + SLEN); in parser_init()
505 if (! parser->storage) in parser_init()
508 parser->groups = parser->storage; in parser_init()
509 parser->child_inputs = parser->storage + GLEN; in parser_init()
510 parser->long_opts = parser->storage + GLEN + CLEN; in parser_init()
511 parser->short_opts = parser->storage + GLEN + CLEN + LLEN; in parser_init()
512 parser->opt_data = opt_data; in parser_init()
514 memset (parser->child_inputs, 0, szs.num_child_inputs * sizeof (void *)); in parser_init()
515 parser_convert (parser, argp, flags); in parser_init()
517 memset (&parser->state, 0, sizeof (struct argp_state)); in parser_init()
518 parser->state.root_argp = parser->argp; in parser_init()
519 parser->state.argc = argc; in parser_init()
520 parser->state.argv = argv; in parser_init()
521 parser->state.flags = flags; in parser_init()
522 parser->state.err_stream = stderr; in parser_init()
523 parser->state.out_stream = stdout; in parser_init()
524 parser->state.next = 0; /* Tell getopt to initialize. */ in parser_init()
525 parser->state.pstate = parser; in parser_init()
527 parser->try_getopt = 1; in parser_init()
531 if (parser->groups < parser->egroup) in parser_init()
532 parser->groups->input = input; in parser_init()
533 for (group = parser->groups; in parser_init()
534 group < parser->egroup && (!err || err == EBADKEY); in parser_init()
541 if (!group->parser in parser_init()
548 err = group_parse (group, &parser->state, ARGP_KEY_INIT, 0); in parser_init()
556 if (parser->state.flags & ARGP_NO_ERRS) in parser_init()
558 parser->opt_data.opterr = 0; in parser_init()
559 if (parser->state.flags & ARGP_PARSE_ARGV0) in parser_init()
562 parser->state.argv--, parser->state.argc++; in parser_init()
565 parser->opt_data.opterr = 1; /* Print error messages. */ in parser_init()
567 if (parser->state.argv == argv && argv[0]) in parser_init()
571 parser->state.name = short_name ? short_name + 1 : argv[0]; in parser_init()
574 parser->state.name = __argp_short_program_name (); in parser_init()
581 parser_finalize (struct parser *parser, in parser_finalize() argument
592 if (parser->state.next == parser->state.argc) in parser_finalize()
596 for (group = parser->groups; in parser_finalize()
597 group < parser->egroup && (!err || err==EBADKEY); in parser_finalize()
600 err = group_parse (group, &parser->state, ARGP_KEY_NO_ARGS, 0); in parser_finalize()
601 for (group = parser->egroup - 1; in parser_finalize()
602 group >= parser->groups && (!err || err==EBADKEY); in parser_finalize()
604 err = group_parse (group, &parser->state, ARGP_KEY_END, 0); in parser_finalize()
611 *end_index = parser->state.next; in parser_finalize()
615 *end_index = parser->state.next; in parser_finalize()
619 if (!(parser->state.flags & ARGP_NO_ERRS) in parser_finalize()
620 && parser->state.err_stream) in parser_finalize()
621 fprintf (parser->state.err_stream, in parser_finalize()
622 dgettext (parser->argp->argp_domain, in parser_finalize()
624 parser->state.name); in parser_finalize()
638 __argp_state_help (&parser->state, parser->state.err_stream, in parser_finalize()
642 for (group = parser->groups; group < parser->egroup; group++) in parser_finalize()
643 group_parse (group, &parser->state, ARGP_KEY_ERROR, 0); in parser_finalize()
651 for (group = parser->egroup - 1 in parser_finalize()
652 ; group >= parser->groups && (!err || err == EBADKEY) in parser_finalize()
654 err = group_parse (group, &parser->state, ARGP_KEY_SUCCESS, 0); in parser_finalize()
660 for (group = parser->egroup - 1; group >= parser->groups; group--) in parser_finalize()
661 group_parse (group, &parser->state, ARGP_KEY_FINI, 0); in parser_finalize()
666 free (parser->storage); in parser_finalize()
677 parser_parse_arg (struct parser *parser, char *val) in parser_parse_arg() argument
681 int index = --parser->state.next; in parser_parse_arg()
687 for (group = parser->groups in parser_parse_arg()
688 ; group < parser->egroup && err == EBADKEY in parser_parse_arg()
691 parser->state.next++; /* For ARGP_KEY_ARG, consume the arg. */ in parser_parse_arg()
693 err = group_parse (group, &parser->state, key, val); in parser_parse_arg()
698 parser->state.next--; /* For ARGP_KEY_ARGS, put back the arg. */ in parser_parse_arg()
700 err = group_parse (group, &parser->state, key, 0); in parser_parse_arg()
710 parser->state.next = parser->state.argc; in parser_parse_arg()
712 if (parser->state.next > index) in parser_parse_arg()
716 (--group)->args_processed += (parser->state.next - index); in parser_parse_arg()
719 parser->try_getopt = 1; in parser_parse_arg()
728 parser_parse_opt (struct parser *parser, int opt, char *val) in parser_parse_opt() argument
741 char *short_index = strchr (parser->short_opts, opt); in parser_parse_opt()
744 for (group = parser->groups; group < parser->egroup; group++) in parser_parse_opt()
747 err = group_parse (group, &parser->state, opt, in parser_parse_opt()
748 parser->opt_data.optarg); in parser_parse_opt()
756 group_parse (&parser->groups[group_key - 1], &parser->state, in parser_parse_opt()
758 parser->opt_data.optarg); in parser_parse_opt()
768 __argp_error (&parser->state, "-%c: %s", opt, in parser_parse_opt()
769 dgettext (parser->argp->argp_domain, bad_key_err)); in parser_parse_opt()
772 struct option *long_opt = parser->long_opts; in parser_parse_opt()
775 __argp_error (&parser->state, "--%s: %s", in parser_parse_opt()
777 dgettext (parser->argp->argp_domain, bad_key_err)); in parser_parse_opt()
789 parser_parse_next (struct parser *parser, int *arg_ebadkey) in parser_parse_next() argument
794 if (parser->state.quoted && parser->state.next < parser->state.quoted) in parser_parse_next()
799 parser->state.quoted = 0; in parser_parse_next()
801 if (parser->try_getopt && !parser->state.quoted) in parser_parse_next()
805 parser->opt_data.optind = parser->state.next; in parser_parse_next()
807 parser->opt_data.optopt = KEY_END; in parser_parse_next()
808 if (parser->state.flags & ARGP_LONG_ONLY) in parser_parse_next()
809 opt = _getopt_long_only_r (parser->state.argc, parser->state.argv, in parser_parse_next()
810 parser->short_opts, parser->long_opts, 0, in parser_parse_next()
811 &parser->opt_data); in parser_parse_next()
813 opt = _getopt_long_r (parser->state.argc, parser->state.argv, in parser_parse_next()
814 parser->short_opts, parser->long_opts, 0, in parser_parse_next()
815 &parser->opt_data); in parser_parse_next()
817 parser->state.next = parser->opt_data.optind; in parser_parse_next()
823 parser->try_getopt = 0; in parser_parse_next()
824 if (parser->state.next > 1 in parser_parse_next()
825 && strcmp (parser->state.argv[parser->state.next - 1], QUOTE) in parser_parse_next()
831 parser->state.quoted = parser->state.next; in parser_parse_next()
833 else if (opt == KEY_ERR && parser->opt_data.optopt != KEY_END) in parser_parse_next()
848 if (parser->state.next >= parser->state.argc in parser_parse_next()
849 || (parser->state.flags & ARGP_NO_ARGS)) in parser_parse_next()
859 parser->opt_data.optarg = parser->state.argv[parser->state.next++]; in parser_parse_next()
865 err = parser_parse_arg (parser, parser->opt_data.optarg); in parser_parse_next()
867 err = parser_parse_opt (parser, opt, parser->opt_data.optarg); in parser_parse_next()
885 struct parser parser; in __argp_parse() local
915 err = parser_init (&parser, argp, argc, argv, flags, input); in __argp_parse()
921 err = parser_parse_next (&parser, &arg_ebadkey); in __argp_parse()
922 err = parser_finalize (&parser, err, arg_ebadkey, end_index); in __argp_parse()
939 struct parser *parser = state->pstate; in weak_alias() local
941 for (group = parser->groups; group < parser->egroup; group++) in weak_alias()