X-Git-Url: https://git.tcpdump.org/libpcap/blobdiff_plain/be4e98d60fd5e7b7e9ddab4a13400a039865bc64..refs/heads/master:/missing/getopt.c?ds=sidebyside diff --git a/missing/getopt.c b/missing/getopt.c index 7c897c6f..c535776d 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. @@ -114,7 +123,7 @@ getopt(int nargc, char * const *nargv, const char *ostr) __progname, optopt); return (BADCH); } - else /* white space */ + else /* white space */ optarg = nargv[optind]; place = EMSG; ++optind;