Argp provides a number of functions available to the user of argp
(see Argp Parser Functions), mostly for producing error messages.
These take as their first argument the state argument to the
parser function. See Argp Parsing State.
Outputs the standard usage message for the argp parser referred to by
state to state->err_stream and terminate the program
with exit (argp_err_exit_status). See Argp Global Variables.
Prints the printf format string fmt and following args, preceded
by the program name and `:', and followed by a `Try ... --help' message, and terminates the program with an exit status of
argp_err_exit_status. See Argp Global Variables.
— Function: void argp_failure (const struct argp_state *state, int status, int errnum, const char *fmt, ...)
Similar to the standard gnu error-reporting function error, this
prints the program name and `:', the printf format string
fmt, and the appropriate following args. If it is non-zero, the
standard unix error text for errnum is printed. If status is
non-zero, it terminates the program with that value as its exit status.
The difference between argp_failure and argp_error is that
argp_error is for parsing errors, whereas
argp_failure is for other problems that occur during parsing but
don't reflect a syntactic problem with the input, such as illegal values
for options, bad phase of the moon, etc.
Outputs a help message for the argp parser referred to by state,
to stream. The flags argument determines what sort of help
message is produced. See Argp Help Flags.
Error output is sent to state->err_stream, and the program
name printed is state->name.
The output or program termination behavior of these functions may be
suppressed if the ARGP_NO_EXIT or ARGP_NO_ERRS flags are
passed to argp_parse. See Argp Flags.
This behavior is useful if an argp parser is exported for use by other
programs (e.g., by a library), and may be used in a context where it is
not desirable to terminate the program in response to parsing errors. In
argp parsers intended for such general use, and for the case where the
program doesn't terminate, calls to any of these functions should
be followed by code that returns the appropriate error code:
if (bad argument syntax)
{
argp_usage (state);
return EINVAL;
}
If a parser function will only be used when ARGP_NO_EXIT
is not set, the return may be omitted.
Published under the terms of the GNU General Public License