/* Specification. */
#include "argmatch.h"
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
"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);
{
/* There is a real ambiguity, or we could not
disambiguate. */
- ambiguous = 1;
+ ambiguous = true;
}
}
}
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")
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
"--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;
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))