Fix ar so that it can correctly detect non-dash prefixed options that appear after dash prefixed options.
PR 13256 * ar.c (decode_options): Restart option scanning if no operation is detected and argument remain to be scanned.
This commit is contained in:
parent
cc364be6ff
commit
2f86d55940
|
@ -1,3 +1,9 @@
|
|||
2019-07-24 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 13256
|
||||
* ar.c (decode_options): Restart option scanning if no operation
|
||||
is detected and argument remain to be scanned.
|
||||
|
||||
2019-07-23 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 24818
|
||||
|
|
|
@ -432,9 +432,10 @@ decode_options (int argc, char **argv)
|
|||
{
|
||||
int c;
|
||||
|
||||
/* Convert old-style tar call by exploding option element and rearranging
|
||||
/* Convert old-style ar call by exploding option element and rearranging
|
||||
options accordingly. */
|
||||
|
||||
restart:
|
||||
if (argc > 1 && argv[1][0] != '-')
|
||||
{
|
||||
int new_argc; /* argc value for rearranged arguments */
|
||||
|
@ -598,6 +599,17 @@ decode_options (int argc, char **argv)
|
|||
}
|
||||
}
|
||||
|
||||
/* PR 13256: Allow for the possibility that the first command line option
|
||||
started with a dash (eg --plugin) but then the following option(s) are
|
||||
old style, non-dash-prefixed versions. */
|
||||
if (operation == none && optind > 0 && optind < argc)
|
||||
{
|
||||
argv += (optind - 1);
|
||||
argc -= (optind - 1);
|
||||
optind = 0;
|
||||
goto restart;
|
||||
}
|
||||
|
||||
return &argv[optind];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue