bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gnulib] argmatch merge from coreutils


From: Paul Eggert
Subject: [Bug-gnulib] argmatch merge from coreutils
Date: Fri, 06 Aug 2004 16:06:38 -0700
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)

I installed this:

2004-08-06  Paul Eggert  <address@hidden>

        * argmatch.h (argmatch, __xargmatch_internal, argmatch_invalid):
        Use ptrdiff_t, not int, when counting arguments, to allow more
        than INT_MAX arguments.
        * argmatch.c: Likewise.  Use bool when appropriate.

Index: lib/argmatch.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/argmatch.h,v
retrieving revision 1.22
diff -p -u -r1.22 argmatch.h
--- lib/argmatch.h      24 Jan 2004 07:22:34 -0000      1.22
+++ lib/argmatch.h      6 Aug 2004 23:04:19 -0000
@@ -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 *
 /* 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. */
 
Index: lib/argmatch.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/argmatch.c,v
retrieving revision 1.33
diff -p -u -r1.33 argmatch.c
--- lib/argmatch.c      24 Jan 2004 07:22:33 -0000      1.33
+++ lib/argmatch.c      6 Aug 2004 23:04:19 -0000
@@ -27,6 +27,7 @@
 /* Specification.  */
 #include "argmatch.h"
 
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -79,14 +80,14 @@ argmatch_exit_fn argmatch_die = __argmat
      "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 *c
                {
                  /* There is a real ambiguity, or we could not
                     disambiguate. */
-                 ambiguous = 1;
+                 ambiguous = true;
                }
            }
        }
@@ -127,7 +128,7 @@ argmatch (const char *arg, const char *c
    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 *argli
    "--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))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]