X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fgetopt.c;h=7c9f704061210f4473fee7edfe196350920dbab6;hb=a6b16b69fe1cad695b270dd5bf3deb2850fc4dd1;hp=2af8352ee9c93ba7d19e0c8e34fd37306332b885;hpb=cbf381169705782b144b2733798a62c11aa473a5;p=gnulib.git diff --git a/lib/getopt.c b/lib/getopt.c index 2af8352ee..7c9f70406 100644 --- a/lib/getopt.c +++ b/lib/getopt.c @@ -829,7 +829,7 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ - if (temp[0] == 'W' && temp[1] == ';' && longopts) + if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; @@ -839,6 +839,9 @@ _getopt_internal_r (int argc, char **argv, const char *optstring, int indfound = 0; int option_index; + if (longopts == NULL) + goto no_longs; + /* This is an option that requires an argument. */ if (*d->__nextchar != '\0') { @@ -1046,8 +1049,10 @@ _getopt_internal_r (int argc, char **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] == ':') {