changeset 5154:2fc698626922

Merge from coreutils.
author Paul Eggert <eggert@cs.ucla.edu>
date Fri, 06 Aug 2004 23:04:38 +0000
parents 8aef282914ee
children 13946e45e5e9
files lib/argmatch.c lib/argmatch.h
diffstat 2 files changed, 19 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/lib/argmatch.c
+++ b/lib/argmatch.c
@@ -27,6 +27,7 @@
 /* Specification.  */
 #include "argmatch.h"
 
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -79,14 +80,14 @@
      "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 @@
 		{
 		  /* There is a real ambiguity, or we could not
 		     disambiguate. */
-		  ambiguous = 1;
+		  ambiguous = true;
 		}
 	    }
 	}
@@ -127,7 +128,7 @@
    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 @@
 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 @@
    "--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 @@
 		      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))
--- 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 @@
 
 /* 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 @@
 /* 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. */