46 lines
1.7 KiB
Diff
46 lines
1.7 KiB
Diff
|
From: Jean Delvare <jdelvare@suse.de>
|
||
|
Subject: compat/getopt: Allow non-digit parameter embedded in short option
|
||
|
|
||
|
The compatibility getopt script allows only digit parameters to be
|
||
|
embedded in short options. Util-linux's getopt implementation does
|
||
|
not have such a restriction and allows any parameter to be embedded
|
||
|
in short options. As a consequence, using the compatibility getopt
|
||
|
script would choke for example on "-pab", which is a legal option
|
||
|
of the "quilt refresh" command.
|
||
|
|
||
|
Remove the limitation on digits so that the compatibility getopt
|
||
|
script allows what util-linux allows. This fixes the second half
|
||
|
of bug #54772:
|
||
|
https://savannah.nongnu.org/bugs/index.php?54772
|
||
|
|
||
|
As a side note, this feature of the compatibility script was broken
|
||
|
anyway, as it would output the digits in reverse order.
|
||
|
|
||
|
Signed-off-by: Jean Delvare <jdelvare@suse.de>
|
||
|
---
|
||
|
compat/getopt.in | 13 ++++---------
|
||
|
1 file changed, 4 insertions(+), 9 deletions(-)
|
||
|
|
||
|
--- quilt.orig/compat/getopt.in 2018-10-03 16:05:56.818667040 +0200
|
||
|
+++ quilt/compat/getopt.in 2018-10-03 16:12:17.624841732 +0200
|
||
|
@@ -108,15 +108,10 @@ foreach my $word (@words) {
|
||
|
if (scalar(@letters) == 0) {
|
||
|
$need_param = $letter;
|
||
|
} else {
|
||
|
- # short options can have numerical args
|
||
|
- # embedded in the short option list: -UO
|
||
|
- die "unexpected character after option $letter"
|
||
|
- if ($letters[$#letters] !~ /[0-9]/);
|
||
|
- my @digits;
|
||
|
- while (scalar(@letters) && ($letters[$#letters] =~ /[0-9]/)) {
|
||
|
- push @digits, pop @letters;
|
||
|
- }
|
||
|
- push @options, quote_word(join('', reverse @digits));
|
||
|
+ # short options can have args
|
||
|
+ # embedded in the short option list
|
||
|
+ push @options, quote_word(join('', reverse @letters));
|
||
|
+ @letters = ();
|
||
|
}
|
||
|
}
|
||
|
}
|