| The GNU C Library | www.imodulo.com · 2003-04-05 | ||
| [ Software | Documentation | Contact ] |
The third argument to argp parser functions (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_argpThe top level argp parser being parsed. Note that this is often not the same struct argp passed into argp_parse by the invoking program. Argp. It is an internal argp parser that contains options implemented by argp_parse itself, such as -help.
int argcchar **argvThe argument vector being parsed. This may be modified.
int nextThe index in argv of 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 the next field 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 flagsThe flags supplied to argp_parse. These may be modified, although some flags may only take effect when argp_parse is first invoked. Argp Flags.
unsigned arg_numWhile 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 each ARGP_KEY_ARG call returns. At all other times, this is the number of ARGP_KEY_ARG arguments that have been processed.
int quotedIf non-zero, the index in argv of 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 *inputAn arbitrary pointer passed in from the caller of argp_parse, in the input argument.
void **child_inputsThese 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->input field, where i is the index of the child in the this parser's children field. Argp Children.
void *hookFor the parser function's use. Initialized to 0, but otherwise ignored by argp.
char *nameThe name used when printing messages. This is initialized to argv[0], or program_invocation_name if argv[0] is unavailable.
FILE *err_streamFILE *out_streamThe stdio streams used when argp prints. Error messages are printed to err_stream, all other output, such as -help output) to out_stream. These are initialized to stderr and stdout respectively. Standard Streams.
void *pstatePrivate, for use by the argp implementation.
| © Free Software Foundation, Inc. |