From 92bec6a3d90bec5f60f801c1c59bc74c59fc712e Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 10 Dec 2002 17:51:43 +0000 Subject: When doing permutation, only treat "-" as an option if it was specified in optstring. Problem noticed by Theo. --- lib/libc/stdlib/getopt_long.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'lib') 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 @@ -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: -- cgit v1.2.3