From b07d40d1a56d65f4915fabe4a1112496c8c0be29 Mon Sep 17 00:00:00 2001 From: Keith Bostic Date: Sat, 2 Apr 1994 16:01:34 -0800 Subject: [PATCH] use __progname instead of argv[0] for error messages SCCS-vsn: lib/libc/stdlib/getopt.c 8.2 --- usr/src/lib/libc/stdlib/getopt.c | 48 +++++++++++++------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/usr/src/lib/libc/stdlib/getopt.c b/usr/src/lib/libc/stdlib/getopt.c index e41f2e5d00..fdc37c9d78 100644 --- a/usr/src/lib/libc/stdlib/getopt.c +++ b/usr/src/lib/libc/stdlib/getopt.c @@ -1,21 +1,18 @@ /* - * Copyright (c) 1987, 1993 + * Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * %sccs.include.redist.c% */ #if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)getopt.c 8.1 (Berkeley) %G%"; +static char sccsid[] = "@(#)getopt.c 8.2 (Berkeley) %G%"; #endif /* LIBC_SCCS and not lint */ #include #include #include -/* - * get option letter from argument vector - */ int opterr = 1, /* if error message should be printed */ optind = 1, /* index into parent argv vector */ optopt, /* character checked for validity */ @@ -26,47 +23,46 @@ char *optarg; /* argument associated with option */ #define BADARG (int)':' #define EMSG "" +/* + * getopt -- + * Parse argc/argv argument vector. + */ int getopt(nargc, nargv, ostr) int nargc; char * const *nargv; const char *ostr; { + extern char *__progname; static char *place = EMSG; /* option letter processing */ - register char *oli; /* option letter list index */ - char *p; + char *oli; /* option letter list index */ if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc || *(place = nargv[optind]) != '-') { place = EMSG; - return(EOF); + return (EOF); } if (place[1] && *++place == '-') { /* found "--" */ ++optind; place = EMSG; - return(EOF); + return (EOF); } } /* option letter okay? */ if ((optopt = (int)*place++) == (int)':' || - !(oli = index(ostr, optopt))) { + !(oli = strchr(ostr, optopt))) { /* * if the user didn't specify '-' as an option, * assume it means EOF. */ if (optopt == (int)'-') - return(EOF); + return (EOF); if (!*place) ++optind; - if (opterr && *ostr != ':') { - if (!(p = rindex(*nargv, '/'))) - p = *nargv; - else - ++p; - (void)fprintf(stderr, "%s: illegal option -- %c\n", - p, optopt); - } - return(BADCH); + if (opterr && *ostr != ':') + (void)fprintf(stderr, + "%s: illegal option -- %c\n", __progname, optopt); + return (BADCH); } if (*++oli != ':') { /* don't need argument */ optarg = NULL; @@ -78,22 +74,18 @@ getopt(nargc, nargv, ostr) optarg = place; else if (nargc <= ++optind) { /* no arg */ place = EMSG; - if (!(p = rindex(*nargv, '/'))) - p = *nargv; - else - ++p; if (*ostr == ':') - return(BADARG); + return (BADARG); if (opterr) (void)fprintf(stderr, "%s: option requires an argument -- %c\n", - p, optopt); - return(BADCH); + __progname, optopt); + return (BADCH); } else /* white space */ optarg = nargv[optind]; place = EMSG; ++optind; } - return(optopt); /* dump back option letter */ + return (optopt); /* dump back option letter */ } -- 2.20.1