* gnu/packages/patches/quilt-compat-getopt-fix-second-separator.patch, gnu/packages/patches/quilt-compat-getopt-fix-option-with-nondigit-param.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/patchutils.scm (quilt)[source]: Use them. [arguments]: Remove workarounds in 'patch-tests' phase.
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Jean Delvare <jdelvare@suse.de>
 | |
| Subject: compat/getopt: Handle a second separator
 | |
| 
 | |
| getopt can be passed 2 '--' separators. The first one tells that
 | |
| getopt options are over and target program options start. The second
 | |
| one tells that the target program's options are over and following
 | |
| arguments should be treated as non-options even if they look like
 | |
| options.
 | |
| 
 | |
| This second separator was not handled, causing the compatibility
 | |
| getopt script to treat the following arguments as options, eventually
 | |
| failing one way or another.
 | |
| 
 | |
| Properly detect and handle the second separator. This fixes the first
 | |
| half of bug #54772:
 | |
| https://savannah.nongnu.org/bugs/index.php?54772
 | |
| 
 | |
| Signed-off-by: Jean Delvare <jdelvare@suse.de>
 | |
| ---
 | |
|  compat/getopt.in |   13 ++++++++++---
 | |
|  1 file changed, 10 insertions(+), 3 deletions(-)
 | |
| 
 | |
| --- quilt.orig/compat/getopt.in	2018-10-03 15:23:21.147620172 +0200
 | |
| +++ quilt/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
 | |
| @@ -8,12 +8,12 @@
 | |
|  
 | |
|  use strict;
 | |
|  
 | |
| -my $opts;
 | |
| +my $opts = '';
 | |
|  my @words;
 | |
|  my $found_sep = 0;
 | |
|  
 | |
|  foreach my $arg (@ARGV) {
 | |
| -  if ($arg eq '--') {
 | |
| +  if (!$found_sep && $arg eq '--') {
 | |
|      $found_sep = 1;
 | |
|    }
 | |
|    else {
 | |
| @@ -62,10 +62,17 @@ sub quote_word
 | |
|  	return "'$word'";
 | |
|  }
 | |
|  
 | |
| +# there can be a second separator, to inhibit processing following arguments
 | |
| +# as options
 | |
| +$found_sep = 0;
 | |
|  foreach my $word (@words) {
 | |
| +	if ($word eq '--') {
 | |
| +		$found_sep = 1;
 | |
| +		next;
 | |
| +	}
 | |
|  
 | |
|  	# allow '-' to be an option value
 | |
| -	if (!$need_param && $word !~ /^-./) {
 | |
| +	if ($found_sep || (!$need_param && $word !~ /^-./)) {
 | |
|  		push @barewords, quote_word($word);
 | |
|  		next;
 | |
|  	}
 |