From a3dc331390ccb9aa30c00d2e9c4998b69411204a Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 6 Aug 2004 23:04:38 +0000 Subject: [PATCH] Merge from coreutils. --- lib/argmatch.c | 21 +++++++++++---------- lib/argmatch.h | 15 ++++++++------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lib/argmatch.c b/lib/argmatch.c index 210689ba3f..1a8ec2f54b 100644 --- a/lib/argmatch.c +++ b/lib/argmatch.c @@ -27,6 +27,7 @@ /* Specification. */ #include "argmatch.h" +#include #include #include #include @@ -79,14 +80,14 @@ argmatch_exit_fn argmatch_die = __argmatch_die; "no", "nope" -> 1 "y" is a valid argument, for `0', and "n" for `1'. */ -int +ptrdiff_t argmatch (const char *arg, const char *const *arglist, const char *vallist, size_t valsize) { - int i; /* Temporary index in ARGLIST. */ + size_t i; /* Temporary index in ARGLIST. */ size_t arglen; /* Length of ARG. */ - int matchind = -1; /* Index of first nonexact match. */ - int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */ + ptrdiff_t matchind = -1; /* Index of first nonexact match. */ + bool ambiguous = false; /* If true, multiple nonexact match(es). */ arglen = strlen (arg); @@ -110,7 +111,7 @@ argmatch (const char *arg, const char *const *arglist, { /* There is a real ambiguity, or we could not disambiguate. */ - ambiguous = 1; + ambiguous = true; } } } @@ -127,7 +128,7 @@ argmatch (const char *arg, const char *const *arglist, PROBLEM is the return value from argmatch. */ void -argmatch_invalid (const char *context, const char *value, int problem) +argmatch_invalid (const char *context, const char *value, ptrdiff_t problem) { char const *format = (problem == -1 ? _("invalid argument %s for %s") @@ -145,7 +146,7 @@ void argmatch_valid (const char *const *arglist, const char *vallist, size_t valsize) { - int i; + size_t i; const char *last_val = NULL; /* We try to put synonyms on the same line. The assumption is that @@ -171,13 +172,13 @@ argmatch_valid (const char *const *arglist, "--version-control", or "$VERSION_CONTROL" etc.). Upon failure, calls the (supposed never to return) function EXIT_FN. */ -int +ptrdiff_t __xargmatch_internal (const char *context, const char *arg, const char *const *arglist, const char *vallist, size_t valsize, argmatch_exit_fn exit_fn) { - int res = argmatch (arg, arglist, vallist, valsize); + ptrdiff_t res = argmatch (arg, arglist, vallist, valsize); if (res >= 0) /* Success. */ return res; @@ -197,7 +198,7 @@ argmatch_to_argument (const char *value, const char *const *arglist, const char *vallist, size_t valsize) { - int i; + size_t i; for (i = 0; arglist[i]; i++) if (!memcmp (value, vallist + valsize * i, valsize)) diff --git a/lib/argmatch.h b/lib/argmatch.h index e8bb23c667..8952394fda 100644 --- a/lib/argmatch.h +++ b/lib/argmatch.h @@ -49,8 +49,8 @@ false ambiguities (i.e., different matches of ARG but corresponding to the same values in VALLIST). */ -int argmatch (char const *arg, char const *const *arglist, - char const *vallist, size_t valsize); +ptrdiff_t argmatch (char const *arg, char const *const *arglist, + char const *vallist, size_t valsize); # define ARGMATCH(Arg, Arglist, Vallist) \ argmatch (Arg, Arglist, (char const *) (Vallist), sizeof *(Vallist)) @@ -63,7 +63,8 @@ extern argmatch_exit_fn argmatch_die; /* Report on stderr why argmatch failed. Report correct values. */ -void argmatch_invalid (char const *context, char const *value, int problem); +void argmatch_invalid (char const *context, char const *value, + ptrdiff_t problem); /* Left for compatibility with the old name invalid_arg */ @@ -85,10 +86,10 @@ void argmatch_valid (char const *const *arglist, /* Same as argmatch, but upon failure, reports a explanation on the failure, and exits using the function EXIT_FN. */ -int __xargmatch_internal (char const *context, - char const *arg, char const *const *arglist, - char const *vallist, size_t valsize, - argmatch_exit_fn exit_fn); +ptrdiff_t __xargmatch_internal (char const *context, + char const *arg, char const *const *arglist, + char const *vallist, size_t valsize, + argmatch_exit_fn exit_fn); /* Programmer friendly interface to __xargmatch_internal. */ -- 2.30.2