From: Thomas Rast Date: Thu, 22 Mar 2012 08:19:26 GMT Subject: Re: [PATCH 10/9 v4] difftool: fix regression in '--prompt' options Message-ID: <871uoljbe9.fsf@thomas.inf.ethz.ch> In-Reply-To: <7viphxz37j.fsf@alter.siamese.dyndns.org> Junio C Hamano writes: > Tim Henigan writes: > >> +# the '--prompt' and '--no-prompt' options require special treatment >> +# because they may be specified more than once...the last one "wins". >> +for (@ARGV) { >> + if (($_ eq "-y") or ($_ eq "--no-prompt")) { >> + $prompt = 0; >> + } elsif ($_ eq "--prompt") { >> + $prompt = 1; >> + } else { >> + push(@diffargs, $_); >> + } >> +} > > I really do not like the direction in which this series is going. We do > not have a similar --no-gui option to defeat --gui option that may appear > earlier on the command line, but when we fix that bug (isn't it a bug?), > we would have to teach this loop about that option, wouldn't we? > > In the end, won't you end up resurrecting the argument parsing loop that > you got rid of with the first patch in your series? Isn't this working > around the problem introduced only because you are using Getopt::Long and > hitting its limitations? Limitations? You can basically steal code from git-send-email. As an example: ---- 8< ---- #!/usr/bin/perl use strict; use warnings; use Getopt::Long; my $foo = 0; my $rc = GetOptions("foo!" => \$foo, "n" => sub { $foo = 0; }, "y" => \$foo); print "$foo\n"; ---- 8< ---- $ ./getopt-test.perl -n 0 $ ./getopt-test.perl -y 1 $ ./getopt-test.perl --foo 1 $ ./getopt-test.perl --no-foo 0 $ ./getopt-test.perl --foo --no-foo 0 $ ./getopt-test.perl -y -n 0 $ ./getopt-test.perl --foo -n 0 -- Thomas Rast trast@{inf,student}.ethz.ch