[Top][All Lists]
[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))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug-gnulib] argmatch merge from coreutils,
Paul Eggert <=