Go to the first, previous, next, last section, table of contents.


Argp Parsing State

The third argument to argp parser functions (see section Argp Parser Functions) is a pointer to a struct argp_state, which contains information about the state of the option parsing.

Data Type: struct argp_state
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 argp passed into argp_parse by the invoking program (see section Parsing Program Options with Argp), but instead an internal argp parser that contains options implemented by argp_parse itself (such as `--help').
int argc
char **argv
The argument vector being parsed. May be modified.
int next
The index in argv of the next argument to be parsed. 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 the next field to find the consumed arguments). Also, you can cause the current option to be re-parsed by decrementing this field, and then modifying state->argv[state->next] to be the option that should be reexamined.
unsigned flags
The flags supplied to argp_parse. May be modified, although some flags may only take effect when argp_parse is first invoked. See section Flags for argp_parse.
unsigned arg_num
While calling a parsing function with the key argument ARGP_KEY_ARG, this is the number of the current arg, starting at 0, and incremented after each such call returns. At all other times, this is the number of such arguments that have been processed.
int quoted
If non-zero, the index in argv of the first argument following a special `--' argument (which prevents anything following being interpreted as an option). Only set once 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
Values to pass to child parsers. This vector will be the same length as the number of children in the current parser, and each child parser will be given the value of state->child_inputs[i] as its state->input field, where i is the index of the child in the this parser's children field. See section Combining Multiple Argp Parsers.
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], or program_invocation_name if that is unavailable.
FILE *err_stream
FILE *out_stream
Stdio streams used when argp prints something; error messages are printed to err_stream, and all other output (such as `--help' output) to out_stream. These are initialized to stderr and stdout respectively (see section Standard Streams).
void *pstate
Private, for use by the argp implementation.


Go to the first, previous, next, last section, table of contents.