Add toys.optc, an argv-style count for toys.optargs.
diff --git a/lib/args.c b/lib/args.c
index 96e1e6d..2391daa 100644
--- a/lib/args.c
+++ b/lib/args.c
@@ -66,15 +66,13 @@
long *arg;
};
-struct getoptflagstate
+static struct getoptflagstate
{
int argc;
char *arg;
struct opts *opts, *this;
int noerror, nodash_now;
-};
-
-static struct getoptflagstate gof;
+} gof;
static void gotflag(void)
{
@@ -123,7 +121,7 @@
void get_optflags(void)
{
- int stopearly = 0, optarg = 0, nodash = 0, minargs = 0, maxargs;
+ int stopearly = 0, nodash = 0, minargs = 0, maxargs;
struct longopts {
struct longopts *next;
struct opts *opt;
@@ -293,13 +291,13 @@
// Not a flag, save value in toys.optargs[]
notflag:
if (stopearly) stopearly++;
- toys.optargs[optarg++] = toys.argv[gof.argc];
+ toys.optargs[toys.optc++] = toys.argv[gof.argc];
}
// Sanity check
- if (optarg<minargs)
+ if (toys.optc<minargs)
error_exit("Need %d argument%s", minargs, minargs ? "s" : "");
- if (optarg>maxargs)
+ if (toys.optc>maxargs)
error_exit("Max %d argument%s", maxargs, maxargs ? "s" : "");
if (CFG_HELP) toys.exithelp = 0;
}
diff --git a/toys.h b/toys.h
index 3c48fb8..f1f83c6 100644
--- a/toys.h
+++ b/toys.h
@@ -77,6 +77,7 @@
char **argv; // Original command line arguments
unsigned optflags; // Command line option flags from get_optflags()
char **optargs; // Arguments left over from get_optflags()
+ int optc; // Count of optargs
int exithelp; // Should error_exit print a usage message first? (Option parsing.)
} toys;