X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fgetopts.pl;h=a0818d1e3a0a81c1d911315825e97c921da37a9d;hb=93d3b392e52f4dbaeb643dd62c1be55b27ef77d4;hp=926988516ec2cee4d866d4e0460c813b33347384;hpb=a687059cbaf2c6fdccb5e0fae2aee80ec15625a8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/getopts.pl b/lib/getopts.pl index 9269885..a0818d1 100644 --- a/lib/getopts.pl +++ b/lib/getopts.pl @@ -7,23 +7,26 @@ sub Getopts { local($argumentative) = @_; local(@args,$_,$first,$rest); + local($errs) = 0; + local($[) = 0; @args = split( / */, $argumentative ); - while(($_ = $ARGV[0]) =~ /^-(.)(.*)/) { + while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { ($first,$rest) = ($1,$2); $pos = index($argumentative,$first); if($pos >= $[) { if($args[$pos+1] eq ':') { - shift; + shift(@ARGV); if($rest eq '') { - $rest = shift; + ++$errs unless @ARGV; + $rest = shift(@ARGV); } eval "\$opt_$first = \$rest;"; } else { eval "\$opt_$first = 1"; if($rest eq '') { - shift; + shift(@ARGV); } else { $ARGV[0] = "-$rest"; @@ -31,15 +34,17 @@ sub Getopts { } } else { - print stderr "Unknown option: $first\n"; + print STDERR "Unknown option: $first\n"; + ++$errs; if($rest ne '') { $ARGV[0] = "-$rest"; } else { - shift; + shift(@ARGV); } } } + $errs == 0; } 1;