quilt-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Quilt-dev] [PATCH 1/2] compat/getopt: Handle a second separator


From: Jean Delvare
Subject: [Quilt-dev] [PATCH 1/2] compat/getopt: Handle a second separator
Date: Wed, 3 Oct 2018 17:32:33 +0200

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 <address@hidden>
---
 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;
        }


-- 
Jean Delvare
SUSE L3 Support



reply via email to

[Prev in Thread] Current Thread [Next in Thread]