summaryrefslogtreecommitdiff
path: root/lib/argmatch.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-08-02 17:24:00 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-08-02 17:24:00 +0000
commit3ed11627ffeac20c70ebb6eeca5fd132ee0dac1b (patch)
treeb0422dff8699d93ed04a11ab230e2e2c513c6fab /lib/argmatch.c
parent233d4fe941412085f77aa476332bd1156d73ce19 (diff)
downloadcoreutils-3ed11627ffeac20c70ebb6eeca5fd132ee0dac1b.tar.xz
(argmatch, __xargmatch_internal, argmatch_invalid):
Use ptrdiff_t, not int, when counting arguments, to allow more than INT_MAX arguments. Use bool when appropriate.
Diffstat (limited to 'lib/argmatch.c')
-rw-r--r--lib/argmatch.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/argmatch.c b/lib/argmatch.c
index 210689ba3..1a8ec2f54 100644
--- 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 @@ 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))