diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-08-14 14:04:37 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2015-08-14 18:34:58 +0100 |
commit | f83789bb6d8cda46a87a61ca846843376261ad35 (patch) | |
tree | b93a7f11e107279fc71cdb7bbd4fb3b3c7a8bfd1 | |
parent | 3b2ac8fff57ddcca1e38472dafc55d93c430038a (diff) |
Break out $valopt (nfc)
-rwxr-xr-x | dgit | 41 |
1 files changed, 19 insertions, 22 deletions
@@ -3135,6 +3135,20 @@ sub parseopts () { } my $oi; + my $val; + my $valopt = sub { + my ($what) = @_; + @rvalopts = ($_); + if (!defined $val) { + badusage "$what needs a value" unless length @ARGV; + $val = shift @ARGV; + push @rvalopts, $val; + } + badusage "bad value \`$val' for $what" unless + $val =~ m/^$oi->{Re}$(?!\n)/s; + $oi->{Fn}($val); + push @ropts, @rvalopts; + }; while (@ARGV) { last unless $ARGV[0] =~ m/^-/; @@ -3204,17 +3218,8 @@ sub parseopts () { push @ropts, $_; push @deliberatelies, $&; } elsif (m/^(--[-0-9a-z]+)(=|$)/ && ($oi = $valopts_long{$1})) { - @rvalopts = ($_); - my $val = $'; #'; - if ($2 eq '') { - badusage "$oi->{Long} needs a value" unless @ARGV; - $val = shift @ARGV; - push @rvalopts, $val; - } - badusage "bad value for $oi->{Long}" unless - $val =~ m/^$oi->{Re}$(?!\n)/s; - $oi->{Fn}($val); - push @ropts, @rvalopts; + $val = $2 ? $' : undef; #'; + $valopt->($oi->{Long}); } else { badusage "unknown long option \`$_'"; } @@ -3275,17 +3280,9 @@ sub parseopts () { push @ropts, $&; $cleanmode = 'check'; } elsif (m/^-[a-zA-Z]/ && ($oi = $valopts_short{$&})) { - @rvalopts = ($_); - my $val = $'; #'; - if (!length $val) { - badusage "$oi->{Short} needs a value" unless @ARGV; - $val = shift @ARGV; - push @rvalopts, $val; - } - badusage "bad value for $oi->{Short}" unless - $val =~ m/^$oi->{Re}$(?!\n)/s; - $oi->{Fn}($val); - push @ropts, @rvalopts; + $val = $'; #'; + $val = undef unless length $val; + $valopt->($oi->{Short}); $_ = ''; } else { badusage "unknown short option \`$_'"; |