Merge from coreutils.
[pspp] / lib / argmatch.c
index 210689ba3f5f1fa3dbe43f63a5a0888393043865..1a8ec2f54ba4b6393a513d928e30520e13eb2de2 100644 (file)
@@ -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 = __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))