diff options
Diffstat (limited to 'argp')
-rw-r--r-- | argp/Makefile | 2 | ||||
-rw-r--r-- | argp/argp-ba.c | 2 | ||||
-rw-r--r-- | argp/argp-eexst.c | 29 | ||||
-rw-r--r-- | argp/argp-help.c | 8 | ||||
-rw-r--r-- | argp/argp-pv.c | 2 | ||||
-rw-r--r-- | argp/argp.h | 8 |
6 files changed, 42 insertions, 9 deletions
diff --git a/argp/Makefile b/argp/Makefile index 68fab3cd14..c151569913 100644 --- a/argp/Makefile +++ b/argp/Makefile @@ -24,7 +24,7 @@ subdir := argp headers = argp.h distribute = argp-fmtstream.h argp-namefrob.h routines = $(addprefix argp-, ba fmtstream fs-xinl help parse pv \ - pvh xinl) + pvh xinl eexst) tests = argp-test diff --git a/argp/argp-ba.c b/argp/argp-ba.c index 61efc3466a..5d58cc6c51 100644 --- a/argp/argp-ba.c +++ b/argp/argp-ba.c @@ -23,4 +23,4 @@ the ARGP_HELP_BUG_ADDR flag is set (as it is by various standard help messages), embedded in a sentence that says something like `Report bugs to ADDR.'. */ -char *argp_program_bug_address = 0; +const char *argp_program_bug_address = 0; diff --git a/argp/argp-eexst.c b/argp/argp-eexst.c new file mode 100644 index 0000000000..676d1ec517 --- /dev/null +++ b/argp/argp-eexst.c @@ -0,0 +1,29 @@ +/* Default definition for ARGP_ERR_EXIT_STATUS + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Miles Bader <miles@gnu.ai.mit.edu>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "argp.h" + +/* The exit status that argp will use when exiting due to a parsing error. + If not defined or set by the user program, this defaults to 1. */ +error_t argp_err_exit_status = 1; diff --git a/argp/argp-help.c b/argp/argp-help.c index e954beb5a9..b3d8b36418 100644 --- a/argp/argp-help.c +++ b/argp/argp-help.c @@ -156,7 +156,7 @@ fill_in_uparams (const struct argp_state *state) arg++; SKIPWS (arg); } - + if (unspec) if (var[0] == 'n' && var[1] == 'o' && var[2] == '-') { @@ -878,7 +878,7 @@ arg (const struct argp_option *real, const char *req_fmt, const char *opt_fmt, /* Helper functions for hol_entry_help. */ /* State used during the execution of hol_help. */ -struct hol_help_state +struct hol_help_state { /* PREV_ENTRY should contain the previous entry printed, or 0. */ struct hol_entry *prev_entry; @@ -1600,7 +1600,7 @@ __argp_state_help (const struct argp_state *state, FILE *stream, unsigned flags) if (!state || ! (state->flags & ARGP_NO_EXIT)) { if (flags & ARGP_HELP_EXIT_ERR) - exit (1); + exit (argp_err_exit_status); if (flags & ARGP_HELP_EXIT_OK) exit (0); } @@ -1612,7 +1612,7 @@ weak_alias (__argp_state_help, argp_state_help) /* 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). */ + message, then exit (ARGP_ERR_EXIT_STATUS). */ void __argp_error (const struct argp_state *state, const char *fmt, ...) { diff --git a/argp/argp-pv.c b/argp/argp-pv.c index 59e6f8d07b..27d714b361 100644 --- a/argp/argp-pv.c +++ b/argp/argp-pv.c @@ -22,4 +22,4 @@ --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 ARGP_NO_EXIT flag is used). Overridden by ARGP_PROGRAM_VERSION_HOOK. */ -char *argp_program_version = 0; +const char *argp_program_version = 0; diff --git a/argp/argp.h b/argp/argp.h index cdb32b799a..d418253692 100644 --- a/argp/argp.h +++ b/argp/argp.h @@ -240,7 +240,7 @@ struct argp TEXT is NULL for this key. */ /* Explanatory note emitted when duplicate option arguments have been suppressed. */ -#define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005 +#define ARGP_KEY_HELP_DUP_ARGS_NOTE 0x2000005 /* 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. */ @@ -379,7 +379,7 @@ extern error_t __argp_parse __P ((__const struct argp *__argp, option --version is added (unless the ARGP_NO_HELP flag is used), which 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 const 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 @@ -395,6 +395,10 @@ extern void (*argp_program_version_hook) __P ((FILE *__stream, standard help messages), embedded in a sentence that says something like `Report bugs to ADDR.'. */ __const extern char *argp_program_bug_address; + +/* The exit status that argp will use when exiting due to a parsing error. + If not defined or set by the user program, this defaults to 1. */ +extern error_t argp_err_exit_status; /* Flags for argp_help. */ #define ARGP_HELP_USAGE 0x01 /* a Usage: message. */ |