diff options
Diffstat (limited to 'missing/getopt.c')
-rw-r--r-- | missing/getopt.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/missing/getopt.c b/missing/getopt.c index 7c897c6f..a3d50cb3 100644 --- a/missing/getopt.c +++ b/missing/getopt.c @@ -80,9 +80,18 @@ getopt(int nargc, char * const *nargv, const char *ostr) place = EMSG; return (-1); } - } /* option letter okay? */ - if ((optopt = (int)*place++) == (int)':' || - !(oli = strchr(ostr, optopt))) { + } + optopt = (int)*place++; + if (optopt == (int)':') { /* option letter okay? */ + if (!*place) + ++optind; + if (opterr && *ostr != ':') + (void)fprintf(stderr, + "%s: illegal option -- %c\n", __progname, optopt); + return (BADCH); + } + oli = strchr(ostr, optopt); + if (!oli) { /* * if the user didn't specify '-' as an option, * assume it means -1. |