Specifying Argp Parsers
-----------------------
The first argument to the `argp_parse' function is a pointer to a
`struct argp', which is known as an "argp parser":
- Data Type: struct argp
This structure specifies how to parse a given set of options and
arguments, perhaps in conjunction with other argp parsers. It has
the following fields:
`const struct argp_option *options'
A pointer to a vector of `argp_option' structures specifying
which options this argp parser understands; it may be zero if
there are no options at all. Note:Argp Option Vectors.
`argp_parser_t parser'
A pointer to a function that defines actions for this parser;
it is called for each option parsed, and at other
well-defined points in the parsing process. A value of zero
is the same as a pointer to a function that always returns
`ARGP_ERR_UNKNOWN'. Note:Argp Parser Functions.
`const char *args_doc'
If non-zero, a string describing what non-option arguments
are called by this parser. This is only used to print the
`Usage:' message. If it contains newlines, the strings
separated by them are considered alternative usage patterns
and printed on separate lines. Lines after the first are
prefixed by ` or: ' instead of `Usage:'.
`const char *doc'
If non-zero, a string containing extra text to be printed
before and after the options in a long help message, with the
two sections separated by a vertical tab (`'\v'', `'\013'')
character. By convention, the documentation before the
options is just a short string explaining what the program
does. Documentation printed after the options describe
behavior in more detail.
`const struct argp_child *children'
A pointer to a vector of `argp_children' structures. This
pointer specifies which additional argp parsers should be
combined with this one. Note:Argp Children.
`char *(*help_filter)(int KEY, const char *TEXT, void *INPUT)'
If non-zero, a pointer to a function that filters the output
of help messages. Note:Argp Help Filtering.
`const char *argp_domain'
If non-zero, the strings used in the argp library are
translated using the domain described by this string. If
zero, the current default domain is used.
Of the above group, `options', `parser', `args_doc', and the `doc'
fields are usually all that are needed. If an argp parser is defined
as an initialized C variable, only the fields used need be specified in
the initializer. The rest will default to zero due to the way C
structure initialization works. This design is exploited in most argp
structures; the most-used fields are grouped near the beginning, the
unused fields left unspecified.