Handle W; without long options in getopt
authorUlrich Drepper <drepper@gmail.com>
Thu, 7 Jul 2011 01:27:14 +0000 (21:27 -0400)
committerUlrich Drepper <drepper@gmail.com>
Thu, 7 Jul 2011 01:27:14 +0000 (21:27 -0400)
ChangeLog
NEWS
posix/getopt.c

index 547cd4e..6ac3ae0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
diff --git a/NEWS b/NEWS
index 1e1e220..dd5565f 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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.
index db89abf..3fa5a4d 100644 (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] == ':')
       {