X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/6dc26e92c20eedcfcba9e0b75a015a5b160748c5..fcd2239eb2849432269ba4456718b657fdff3972:/avr/getopt-min.c diff --git a/avr/getopt-min.c b/avr/getopt-min.c index 571c14f..8508f40 100644 --- a/avr/getopt-min.c +++ b/avr/getopt-min.c @@ -1,7 +1,3 @@ -#include "common.h" -#include - - /* * Minimum getopt, original version was: */ @@ -14,9 +10,10 @@ */ /* $Id: getopt.c,v 1.2 1992/12/07 11:12:52 nickc Exp $ */ -#include +#include "common.h" /* definition of FLASH */ +#include -int optind = 1; /* next argv[] index */ +int optind = 0; /* next argv[] index */ char *optarg; /* option parameter if any */ @@ -26,12 +23,16 @@ getopt( /* returns letter, '?', EOF */ char *const argv[], /* argument vector from main */ const FLASH char *optstring ) /* allowed args, e.g. "ab:c" */ { - static int sp = 1; /* position within argument */ + static int sp; /* position within argument */ int osp; /* saved `sp' for param test */ int c; /* option letter */ const FLASH char *cp; /* -> option in `optstring' */ optarg = NULL; + if (optind == 0) { /* start a new argument scan */ + optind = 1; + sp = 1; + } if ( sp == 1 ) /* fresh argument */ { @@ -41,7 +42,7 @@ getopt( /* returns letter, '?', EOF */ ) return -1; } - + c = argv[optind][sp]; /* option letter */ osp = sp++; /* get ready for next letter */ @@ -73,4 +74,3 @@ getopt( /* returns letter, '?', EOF */ return c; } -