summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>2004-03-06 14:24:10 +0000
committerache <ache@FreeBSD.org>2004-03-06 14:24:10 +0000
commitc94e5bebf56c687d9580ddca6ce99b3744c2b175 (patch)
tree405b32a3fc68f2299c2fc9cf4497f7c24a7cd70f /lib/libc
parent97dc367f937a8222c806908a545e7756d4e75444 (diff)
downloadFreeBSD-src-c94e5bebf56c687d9580ddca6ce99b3744c2b175.zip
FreeBSD-src-c94e5bebf56c687d9580ddca6ce99b3744c2b175.tar.gz
Make GNU-compatible following case:
single '-' in command line and '-' (non-first) in options
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/stdlib/getopt_long.346
-rw-r--r--lib/libc/stdlib/getopt_long.c4
2 files changed, 27 insertions, 23 deletions
diff --git a/lib/libc/stdlib/getopt_long.3 b/lib/libc/stdlib/getopt_long.3
index bd5d2b9..3c6c5ab 100644
--- a/lib/libc/stdlib/getopt_long.3
+++ b/lib/libc/stdlib/getopt_long.3
@@ -271,29 +271,29 @@ found in glibc-2.1.3:
.\" .Ev POSIXLY_CORRECT
.\" and stops at the first non-option.
.\" .El
-.It
-Handling of
-.Ql -
-within the option string (not the first character):
-.Bl -tag -width ".Bx"
-.It Tn GNU
-treats a
-.Ql -
-on the command line as a non-argument.
-.It Bx
-a
-.Ql -
-within the option string matches a
-.Ql -
-(single dash) on the command line.
-This functionality is provided for backward compatibility with
-programs, such as
-.Xr su 1 ,
-that use
-.Ql -
-as an option flag.
-This practice is wrong, and should not be used in any current development.
-.El
+.\" .It
+.\" Handling of
+.\" .Ql -
+.\" within the option string (not the first character):
+.\" .Bl -tag -width ".Bx"
+.\" .It Tn GNU
+.\" treats a
+.\" .Ql -
+.\" on the command line as a non-argument.
+.\" .It Bx
+.\" a
+.\" .Ql -
+.\" within the option string matches a
+.\" .Ql -
+.\" (single dash) on the command line.
+.\" This functionality is provided for backward compatibility with
+.\" programs, such as
+.\" .Xr su 1 ,
+.\" that use
+.\" .Ql -
+.\" as an option flag.
+.\" This practice is wrong, and should not be used in any current development.
+.\" .El
.\" .It
.\" Handling of
.\" .Ql ::
diff --git a/lib/libc/stdlib/getopt_long.c b/lib/libc/stdlib/getopt_long.c
index 74f8aa0..dfaff42 100644
--- a/lib/libc/stdlib/getopt_long.c
+++ b/lib/libc/stdlib/getopt_long.c
@@ -413,7 +413,11 @@ start:
return (-1);
}
if (*(place = nargv[optind]) != '-' ||
+#ifdef GNU_COMPATIBLE
+ place[1] == '\0') {
+#else
(place[1] == '\0' && strchr(options, '-') == NULL)) {
+#endif
place = EMSG; /* found non-option */
if (flags & FLAG_ALLARGS) {
/*
OpenPOWER on IntegriCloud