summaryrefslogtreecommitdiff
path: root/lib/libc/stdlib
diff options
context:
space:
mode:
authorwiz <wiz@NetBSD.org>2002-06-21 09:56:33 +0000
committerwiz <wiz@NetBSD.org>2002-06-21 09:56:33 +0000
commit4dc035fd8ad5536a500fcb3ca6c8e4b44c357370 (patch)
tree1a93aa0e9c37c0c7307da5a061acaf052882f571 /lib/libc/stdlib
parentd1f10f9f7482f972b242e53dbffddb7cc3d564d8 (diff)
Undo last two, until I have time to take a good look at the problems.
Diffstat (limited to 'lib/libc/stdlib')
-rw-r--r--lib/libc/stdlib/getopt.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/libc/stdlib/getopt.c b/lib/libc/stdlib/getopt.c
index 598647e66d3..3820a656e8a 100644
--- a/lib/libc/stdlib/getopt.c
+++ b/lib/libc/stdlib/getopt.c
@@ -1,4 +1,4 @@
-/* $NetBSD: getopt.c,v 1.23 2002/06/13 21:18:50 wiz Exp $ */
+/* $NetBSD: getopt.c,v 1.24 2002/06/21 09:56:33 wiz Exp $ */
/*
* Copyright (c) 1987, 1993, 1994
@@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95";
#else
-__RCSID("$NetBSD: getopt.c,v 1.23 2002/06/13 21:18:50 wiz Exp $");
+__RCSID("$NetBSD: getopt.c,v 1.24 2002/06/21 09:56:33 wiz Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -83,12 +83,12 @@ getopt(nargc, nargv, ostr)
if (optreset || !*place) { /* update scanning pointer */
optreset = 0;
- if (optind >= nargc || *(place = nargv[optind]) != '-'
- || place[1] == '\0') {
+ if (optind >= nargc || *(place = nargv[optind]) != '-') {
place = EMSG;
return (-1);
}
- if (*++place == '-' && place[1] == '\0') { /* found "--" */
+ if (place[1] && *++place == '-' /* found "--" */
+ && place[1] == '\0') {
++optind;
place = EMSG;
return (-1);
@@ -96,6 +96,12 @@ getopt(nargc, nargv, ostr)
} /* option letter okay? */
if ((optopt = (int)*place++) == (int)':' ||
!(oli = strchr(ostr, optopt))) {
+ /*
+ * if the user didn't specify '-' as an option,
+ * assume it means -1.
+ */
+ if (optopt == (int)'-')
+ return (-1);
if (!*place)
++optind;
if (opterr && *ostr != ':')