summaryrefslogtreecommitdiff
path: root/argp/argp.h
diff options
context:
space:
mode:
Diffstat (limited to 'argp/argp.h')
-rw-r--r--argp/argp.h66
1 files changed, 51 insertions, 15 deletions
diff --git a/argp/argp.h b/argp/argp.h
index be727561a1..2e20ea67f3 100644
--- a/argp/argp.h
+++ b/argp/argp.h
@@ -22,14 +22,20 @@
#define __ARGP_H__
#include <stdio.h>
-#include <errno.h>
#include <ctype.h>
#include <getopt.h>
+#define __need_error_t
+#include <errno.h>
+
#ifndef __const
#define __const const
#endif
+#ifndef __error_t_defined
+typedef int error_t;
+#endif
+
#ifndef __P
# if (defined (__STDC__) && __STDC__) || defined (__cplusplus)
# define __P(args) args
@@ -194,7 +200,26 @@ struct argp
their own argp structure, which you want to use in conjunction with your
own. */
__const struct argp_child *children;
+
+ /* If non-zero, this should be a function to filter the output of help
+ messages. KEY is either a key from an option, in which case TEXT is
+ that option's help text, or a special key from the ARGP_KEY_HELP_
+ defines, below, describing which other help text TEXT is. The function
+ should return either TEXT, if it should be used as-is, a replacement
+ string, which should be malloced, and will be freed by argp, or NULL,
+ meaning `print nothing'. The value for TEXT is *after* any translation
+ has been done, so if any of the replacement text also needs translation,
+ that should be done by the filter function. INPUT is either the input
+ supplied to argp_parse, or NULL, if argp_help was called directly. */
+ char *(*help_filter)(int __key, __const char *__text, void *__input);
};
+
+/* Possible KEY arguments to a help filter function. */
+#define ARGP_KEY_HELP_PRE_DOC 0x2000001 /* Help text preceeding options. */
+#define ARGP_KEY_HELP_POST_DOC 0x2000002 /* Help text following options. */
+#define ARGP_KEY_HELP_HEADER 0x2000003 /* Option header string. */
+#define ARGP_KEY_HELP_EXTRA 0x2000004 /* After all other documentation;
+ TEXT is NULL for this key. */
/* When an argp has a non-zero CHILDREN field, it should point to a vector of
argp_child structures, each of which describes a subsidiary argp. */
@@ -265,6 +290,8 @@ struct argp_state
/* Streams used when argp prints something. */
FILE *err_stream; /* For errors; initialized to stderr. */
FILE *out_stream; /* For information; initialized to stdout. */
+
+ void *pstate; /* Private, for use by argp. */
};
/* Flags for argp_parse (note that the defaults are those that are
@@ -318,20 +345,20 @@ struct argp_state
routine returned a non-zero value, it is returned; otherwise 0 is
returned. This function may also call exit unless the ARGP_NO_HELP flag
is set. INPUT is a pointer to a value to be passed in to the parser. */
-error_t argp_parse __P ((__const struct argp *__argp,
- int __argc, char **__argv, unsigned __flags,
- int *__arg_index, void *__input));
-error_t __argp_parse __P ((__const struct argp *__argp,
- int __argc, char **__argv, unsigned __flags,
- int *__arg_index, void *__input));
+extern error_t argp_parse __P ((__const struct argp *__argp,
+ int __argc, char **__argv, unsigned __flags,
+ int *__arg_index, void *__input));
+extern error_t __argp_parse __P ((__const struct argp *__argp,
+ int __argc, char **__argv, unsigned __flags,
+ int *__arg_index, void *__input));
/* Global variables. */
/* If defined or set by the user program to a non-zero value, then a default
option --version is added (unless the ARGP_NO_HELP flag is used), which
- will print this this string followed by a newline and exit (unless the
+ will print this string followed by a newline and exit (unless the
ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */
-extern char *argp_program_version;
+extern const char *argp_program_version;
/* If defined or set by the user program to a non-zero value, then a default
option --version is added (unless the ARGP_NO_HELP flag is used), which
@@ -406,9 +433,11 @@ extern void __argp_usage __P ((struct argp_state *__state));
/* If appropriate, print the printf string FMT and following args, preceded
by the program name and `:', to stderr, and followed by a `Try ... --help'
message, then exit (1). */
-void argp_error __P ((struct argp_state *__state, __const char *__fmt, ...))
+extern void argp_error __P ((struct argp_state *__state, __const char *__fmt,
+ ...))
__attribute__ ((__format__ (__printf__, 2, 3)));
-void __argp_error __P ((struct argp_state *__state, __const char *__fmt, ...))
+extern void __argp_error __P ((struct argp_state *__state,
+ __const char *__fmt, ...))
__attribute__ ((__format__ (__printf__, 2, 3)));
/* Similar to the standard gnu error-reporting function error(), but will
@@ -419,11 +448,11 @@ void __argp_error __P ((struct argp_state *__state, __const char *__fmt, ...))
difference between this function and argp_error is that the latter is for
*parsing errors*, and the former is for other problems that occur during
parsing but don't reflect a (syntactic) problem with the input. */
-void argp_failure __P ((struct argp_state *__state,
- int __status, int __errnum, __const char *__fmt, ...))
+extern void argp_failure __P ((struct argp_state *__state, int __status,
+ int __errnum, __const char *__fmt, ...))
__attribute__ ((__format__ (__printf__, 4, 5)));
-void __argp_failure __P ((struct argp_state *__state,
- int __status, int __errnum, __const char *__fmt, ...))
+extern void __argp_failure __P ((struct argp_state *__state, int __status,
+ int __errnum, __const char *__fmt, ...))
__attribute__ ((__format__ (__printf__, 4, 5)));
/* Returns true if the option OPT is a valid short option. */
@@ -434,6 +463,13 @@ extern int __option_is_short __P ((__const struct argp_option *__opt));
options array. */
extern int _option_is_end __P ((__const struct argp_option *__opt));
extern int __option_is_end __P ((__const struct argp_option *__opt));
+
+/* Return the input field for ARGP in the parser corresponding to STATE; used
+ by the help routines. */
+extern void *_argp_input __P ((__const struct argp *argp,
+ __const struct argp_state *state));
+extern void *__argp_input __P ((__const struct argp *argp,
+ __const struct argp_state *state));
#ifdef __OPTIMIZE__