From 4dc035fd8ad5536a500fcb3ca6c8e4b44c357370 Mon Sep 17 00:00:00 2001 From: wiz Date: Fri, 21 Jun 2002 09:56:33 +0000 Subject: [PATCH] Undo last two, until I have time to take a good look at the problems. --- lib/libc/stdlib/getopt.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/libc/stdlib/getopt.c b/lib/libc/stdlib/getopt.c index 598647e66d3e..3820a656e8a0 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 != ':')