From a60e505a41cfa0425b60ae64a2076d7cebcdc0b3 Mon Sep 17 00:00:00 2001 From: Bill Campbell Date: Thu, 5 Oct 2000 11:04:51 -0700 Subject: [PATCH] Two thirds of Subject: Proposed patches, Install.pm getopts.pl termcap.pl Message-ID: <20001005180451.A22029@kstarr.celestial.com> The Install.pm changes will be submitted separately because they need some work and discussion still. p4raw-id: //depot/perl@7209 --- lib/getopts.pl | 65 +++++++++++++++++++++++++++++++++------------------------- lib/termcap.pl | 2 +- 2 files changed, 38 insertions(+), 29 deletions(-) diff --git a/lib/getopts.pl b/lib/getopts.pl index 2595819..4a50b8f 100644 --- a/lib/getopts.pl +++ b/lib/getopts.pl @@ -16,41 +16,50 @@ sub Getopts { local($argumentative) = @_; local(@args,$_,$first,$rest); local($errs) = 0; + local($[) = 0; @args = split( / */, $argumentative ); while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) { - ($first,$rest) = ($1,$2); - $pos = index($argumentative,$first); - if($pos >= 0) { - if($pos < $#args && $args[$pos+1] eq ':') { - shift(@ARGV); - if($rest eq '') { - ++$errs unless @ARGV; - $rest = shift(@ARGV); - } - ${"opt_$first"} = $rest; - } - else { - ${"opt_$first"} = 1; - if($rest eq '') { - shift(@ARGV); + ($first,$rest) = ($1,$2); + $pos = index($argumentative,$first); + if($pos >= $[) { + if($args[$pos+1] eq ':') { + shift(@ARGV); + if($rest eq '') { + ++$errs unless(@ARGV); + $rest = shift(@ARGV); + } + eval " + push(\@opt_$first, \$rest); + if(\$opt_$first eq '') { + \$opt_$first = \$rest; + } + else { + \$opt_$first .= ' ' . \$rest; + } + "; + } + else { + eval "\$opt_$first = 1"; + if($rest eq '') { + shift(@ARGV); + } + else { + $ARGV[0] = "-$rest"; + } + } } else { - $ARGV[0] = "-$rest"; + print STDERR "Unknown option: $first\n"; + ++$errs; + if($rest ne '') { + $ARGV[0] = "-$rest"; + } + else { + shift(@ARGV); + } } - } - } - else { - print STDERR "Unknown option: $first\n"; - ++$errs; - if($rest ne '') { - $ARGV[0] = "-$rest"; - } - else { - shift(@ARGV); - } } - } $errs == 0; } diff --git a/lib/termcap.pl b/lib/termcap.pl index 06da956..f295a2d 100644 --- a/lib/termcap.pl +++ b/lib/termcap.pl @@ -22,7 +22,7 @@ sub Tgetent { local($TERM) = @_; local($TERMCAP,$_,$entry,$loop,$field); - warn "Tgetent: no ospeed set" unless $ospeed; + # warn "Tgetent: no ospeed set" unless $ospeed; foreach $key (keys %TC) { delete $TC{$key}; } -- 2.7.4