diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2002-12-10 17:51:43 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2002-12-10 17:51:43 +0000 |
commit | 92bec6a3d90bec5f60f801c1c59bc74c59fc712e (patch) | |
tree | ecb4aae2c02e4584824a6a64c5a3c12d4f698876 /lib/libc | |
parent | 5fb7b5032f76470b117157822247a4bc04ddd4c2 (diff) |
When doing permutation, only treat "-" as an option if it was specified
in optstring. Problem noticed by Theo.
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/stdlib/getopt_long.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/libc/stdlib/getopt_long.c b/lib/libc/stdlib/getopt_long.c index 413ec24f4e4..0cdc4d652f0 100644 --- a/lib/libc/stdlib/getopt_long.c +++ b/lib/libc/stdlib/getopt_long.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getopt_long.c,v 1.10 2002/12/08 17:52:26 millert Exp $ */ +/* $OpenBSD: getopt_long.c,v 1.11 2002/12/10 17:51:42 millert Exp $ */ /* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ /* @@ -64,7 +64,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: getopt_long.c,v 1.10 2002/12/08 17:52:26 millert Exp $"; +static char *rcsid = "$OpenBSD: getopt_long.c,v 1.11 2002/12/10 17:51:42 millert Exp $"; #endif /* LIBC_SCCS and not lint */ #include <err.h> @@ -348,8 +348,9 @@ start: nonopt_start = nonopt_end = -1; return (-1); } - if (*(place = nargv[optind]) != '-') { /* found non-option */ - place = EMSG; + if (*(place = nargv[optind]) != '-' || + (place[1] == '\0' && strchr(options, '-') == NULL)) { + place = EMSG; /* found non-option */ if (flags & FLAG_ALLARGS) { /* * GNU extension: |