Next: Argp Helper Functions, Previous: Argp Special Keys, Up: Argp Parser Functions
The third argument to argp parser functions (see Argp Parser Functions) is a pointer to a struct argp_state, which contains
information about the state of the option parsing.
This structure has the following fields, which may be modified as noted:
const struct argp *const root_argp- The top level argp parser being parsed. Note that this is often not the same
struct argppassed intoargp_parseby the invoking program. See Argp. It is an internal argp parser that contains options implemented byargp_parseitself, such as `--help'.int argcchar **argv- The argument vector being parsed. This may be modified.
int next- The index in
argvof the next argument to be parsed. This may be modified.One way to consume all remaining arguments in the input is to set state
->next =state->argc, perhaps after recording the value of thenextfield to find the consumed arguments. The current option can be re-parsed immediately by decrementing this field, then modifying state->argv[state->next]to reflect the option that should be reexamined.unsigned flags- The flags supplied to
argp_parse. These may be modified, although some flags may only take effect whenargp_parseis first invoked. See Argp Flags.unsigned arg_num- While calling a parsing function with the key argument
ARGP_KEY_ARG, this represents the number of the current arg, starting at 0. It is incremented after eachARGP_KEY_ARGcall returns. At all other times, this is the number ofARGP_KEY_ARGarguments that have been processed.int quoted- If non-zero, the index in
argvof the first argument following a special `--' argument. This prevents anything that follows from being interpreted as an option. It is only set after argument parsing has proceeded past this point.void *input- An arbitrary pointer passed in from the caller of
argp_parse, in the input argument.void **child_inputs- These are values that will be passed to child parsers. This vector will be the same length as the number of children in the current parser. Each child parser will be given the value of state
->child_inputs[i]as its state->inputfield, where i is the index of the child in the this parser'schildrenfield. See Argp Children.void *hook- For the parser function's use. Initialized to 0, but otherwise ignored by argp.
char *name- The name used when printing messages. This is initialized to
argv[0], orprogram_invocation_nameifargv[0]is unavailable.FILE *err_streamFILE *out_stream- The stdio streams used when argp prints. Error messages are printed to
err_stream, all other output, such as `--help' output) toout_stream. These are initialized tostderrandstdoutrespectively. See Standard Streams.void *pstate- Private, for use by the argp implementation.