Fix -W with optional parameters in getopt.
According to the getopt documentation, if "W;" is part of optstring, then '-W foo' should behave like '--foo'. But if "foo" uses an optional_argument, this is not the case, since optarg is not NULL when using -W.
This commit is contained in:
parent
22ef35456e
commit
aa7f642769
|
@ -1,3 +1,9 @@
|
||||||
|
2009-12-02 Eric Blake <ebb9@byu.net>
|
||||||
|
|
||||||
|
[BZ #11041]
|
||||||
|
* posix/getopt.c (_getopt_internal_r): Handle '-Wfoo' identically
|
||||||
|
to '--foo', with optional argument or non-ambiguous prefix.
|
||||||
|
|
||||||
2010-04-07 Ulrich Drepper <drepper@redhat.com>
|
2010-04-07 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
[BZ #11134]
|
[BZ #11134]
|
||||||
|
@ -9,7 +15,7 @@
|
||||||
if NSS_FLAG_ADJUNCT_AS_SHADOW is set.
|
if NSS_FLAG_ADJUNCT_AS_SHADOW is set.
|
||||||
(_nss_nis_getpwnam_r): Likewise.
|
(_nss_nis_getpwnam_r): Likewise.
|
||||||
(_nss_nis_getpwuid_r): Likewise.
|
(_nss_nis_getpwuid_r): Likewise.
|
||||||
* nis/nss_nis/nis-spwd.c (ent_adjunct_used): Nee global variable.
|
* nis/nss_nis/nis-spwd.c (ent_adjunct_used): New global variable.
|
||||||
(_nss_nis_setspent): Also reset ent_adjunct_used.
|
(_nss_nis_setspent): Also reset ent_adjunct_used.
|
||||||
(internal_nis_getspent_r): If new_start is set and shadow.byname table
|
(internal_nis_getspent_r): If new_start is set and shadow.byname table
|
||||||
does not exist and NSS_FLAG_ADJUNCT_AS_SHADOW is set, try to get
|
does not exist and NSS_FLAG_ADJUNCT_AS_SHADOW is set, try to get
|
||||||
|
|
|
@ -911,7 +911,10 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
|
||||||
pfound = p;
|
pfound = p;
|
||||||
indfound = option_index;
|
indfound = option_index;
|
||||||
}
|
}
|
||||||
else
|
else if (long_only
|
||||||
|
|| pfound->has_arg != p->has_arg
|
||||||
|
|| pfound->flag != p->flag
|
||||||
|
|| pfound->val != p->val)
|
||||||
/* Second or later nonexact match found. */
|
/* Second or later nonexact match found. */
|
||||||
ambig = 1;
|
ambig = 1;
|
||||||
}
|
}
|
||||||
|
@ -1028,6 +1031,8 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
|
||||||
return optstring[0] == ':' ? ':' : '?';
|
return optstring[0] == ':' ? ':' : '?';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
d->optarg = NULL;
|
||||||
d->__nextchar += strlen (d->__nextchar);
|
d->__nextchar += strlen (d->__nextchar);
|
||||||
if (longind != NULL)
|
if (longind != NULL)
|
||||||
*longind = option_index;
|
*longind = option_index;
|
||||||
|
|
Loading…
Reference in New Issue