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:
Nick Clifton 2019-07-24 12:17:37 +01:00
parent cc364be6ff
commit 2f86d55940
2 changed files with 19 additions and 1 deletions

View File

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

View File

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