Handle W; without long options in getopt

This commit is contained in:
Ulrich Drepper 2011-07-06 21:27:14 -04:00
parent 9895c8bc62
commit 01636b2140
3 changed files with 14 additions and 3 deletions

View File

@ -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]

2
NEWS
View File

@ -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.

View File

@ -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] == ':')
{