diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-07-06 21:27:14 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-07-06 21:27:14 -0400 |
commit | 01636b2140cd1281202b89f7103249ed598065c4 (patch) | |
tree | e375999db321c26fc21346185e3a152f87332d4a | |
parent | 9895c8bc62759a2d7abf95654fb2aefe5677a930 (diff) | |
download | glibc-01636b2140cd1281202b89f7103249ed598065c4.zip glibc-01636b2140cd1281202b89f7103249ed598065c4.tar.gz glibc-01636b2140cd1281202b89f7103249ed598065c4.tar.bz2 |
Handle W; without long options in getopt
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | posix/getopt.c | 9 |
3 files changed, 14 insertions, 3 deletions
@@ -1,3 +1,9 @@ +2011-07-06 Ulrich Drepper <drepper@gmail.com> + + [BZ #12922] + * posix/getopt.c (_getopt_internal_r): When "W;" is in short options + but no long options are defined, just return 'W'. + 2011-06-22 Marek Polacek <mpolacek@redhat.com> [BZ #9696] @@ -9,7 +9,7 @@ Version 2.15 * The following bugs are resolved with this release: - 9696, 12874, 12885, 12907, 12935 + 9696, 12874, 12885, 12907, 12922, 12935 * New program pldd to list loaded object of a process Implemented by Ulrich Drepper. diff --git a/posix/getopt.c b/posix/getopt.c index db89abf..3fa5a4d 100644 --- a/posix/getopt.c +++ b/posix/getopt.c @@ -871,6 +871,9 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring, /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { + if (longopts == NULL) + goto no_longs; + char *nameend; const struct option *p; const struct option *pfound = NULL; @@ -1086,8 +1089,10 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring, } return pfound->val; } - d->__nextchar = NULL; - return 'W'; /* Let the application handle it. */ + + no_longs: + d->__nextchar = NULL; + return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { |