X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fargmatch.c;h=f08fba35e91386f8a777d5b4d15199aaaef5df37;hb=0bb0c42bbc23b604ec21f3f9e30363eb17fdc484;hp=19d5aa4973b99f2a4148d49b8864aced5667879b;hpb=d904f22ef0dcd90ff4e828a16e24127e53925890;p=gnulib.git diff --git a/lib/argmatch.c b/lib/argmatch.c index 19d5aa497..f08fba35e 100644 --- a/lib/argmatch.c +++ b/lib/argmatch.c @@ -36,21 +36,31 @@ # define _(Text) Text #endif +#include "error.h" #include "quotearg.h" -/* When reporting a failing argument, make sure to show invisible - characters hidden using the quoting style - ARGMATCH_QUOTING_STYLE. literal_quoting_style is not good. */ - +/* When reporting an invalid argument, show nonprinting characters + by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use + literal_quoting_style. */ #ifndef ARGMATCH_QUOTING_STYLE # define ARGMATCH_QUOTING_STYLE escape_quoting_style #endif -extern char *program_name; +/* The following test is to work around the gross typo in + systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE + is defined to 0, not 1. */ +#if !EXIT_FAILURE +# undef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif /* Non failing version of argmatch call this function after failing. */ #ifndef ARGMATCH_DIE -# define ARGMATCH_DIE exit (2) +# define ARGMATCH_DIE exit (EXIT_FAILURE) +#endif + +#ifdef ARGMATCH_DIE_DECL +ARGMATCH_DIE_DECL; #endif static void @@ -59,7 +69,10 @@ __argmatch_die (void) ARGMATCH_DIE; } -argmatch_exit_fn argmatch_exit_failure = __argmatch_exit_failure; +/* Used by XARGMATCH and XARGCASEMATCH. See description in argmatch.h. + Default to __argmatch_die, but allow caller to change this at run-time. */ +argmatch_exit_fn argmatch_die = __argmatch_die; + /* If ARG is an unambiguous match for an element of the null-terminated array ARGLIST, return the index in ARGLIST @@ -151,10 +164,10 @@ argmatch_invalid (const char *context, const char *value, int problem) set_quoting_style (NULL, ARGMATCH_QUOTING_STYLE); format = (problem == -1 - ? _("%s: invalid argument `%s' for `%s'\n") - : _("%s: ambiguous argument `%s' for `%s'\n")); + ? _("invalid argument `%s' for `%s'") + : _("ambiguous argument `%s' for `%s'")); - fprintf (stderr, format, program_name, quotearg (value), context); + error (0, 0, format, quotearg (value), context); set_quoting_style (NULL, saved_quoting_style); }