fix CPAN.pm problem, OS2 tweaks
Ilya Zakharevich [Fri, 3 Jul 1998 00:59:35 +0000 (20:59 -0400)]
Message-Id: <199807030459.AAA00097@monk.mps.ohio-state.edu>
Subject: [PATCH 5.004_68] PAtch to CPAN first-time

p4raw-id: //depot/perl@1301

lib/CPAN/FirstTime.pm
lib/ExtUtils/MM_OS2.pm
lib/ExtUtils/MakeMaker.pm

index 3fa21c6..8d7a118 100644 (file)
@@ -41,6 +41,7 @@ sub init {
     $CPAN::Config ||= {};
     local($/) = "\n";
     local($\) = "";
+    local($|) = 1;
 
     my($ans,$default,$local,$cont,$url,$expected_size);
     
@@ -152,6 +153,7 @@ those.
        $path = "";
     }
     $path ||= $ENV{SHELL};
+    $path =~ s,\\,/,g if $^O eq 'os2'; # Cosmetic only
     $ans = prompt("What is your favorite shell?",$path);
     $CPAN::Config->{'shell'} = $ans;
 
@@ -210,7 +212,7 @@ the default and recommended setting.
     if (@{$CPAN::Config->{urllist}||[]}) {
        print qq{
 I found a list of URLs in CPAN::Config and will use this.
-You can change it later with the 'o conf urllist' command.
+You can change it later from CPAN shell with the 'o conf urllist' command.
 
 }
     } elsif (
@@ -221,11 +223,18 @@ You can change it later with the 'o conf urllist' command.
        read_mirrored_by($local);
     } else {
        $CPAN::Config->{urllist} ||= [];
+       my $val = 'http://this.field.should.be.inserted/';
+       my $cnt = 0;
        while (! @{$CPAN::Config->{urllist}}) {
            my($input) = prompt(qq{
-We need to know the URL of your favorite CPAN site.
-Please enter it here:});
+We need to know the URL of your favorite CPAN site.  Any one will go,
+you can change it later from CPAN shell with the 'o conf urllist' command.
+A short list is available in 'perlmodlib', as in
+       perldoc perlmodlib
+Please enter it here:}, $val);
            $input =~ s/\s//g;
+           die "Did not obtain required field" if $cnt > 10;
+           $cnt++, next if $input eq $val;
            next unless $input;
            my($wanted) = "MIRRORED.BY";
            print qq{
@@ -285,7 +294,7 @@ sub find_exe {
     #warn "in find_exe exe[$exe] path[@$path]";
     for $dir (@$path) {
        my $abs = MM->catfile($dir,$exe);
-       if (MM->maybe_command($abs)) {
+       if (($abs = MM->maybe_command($abs))) {
            return $abs;
        }
     }
index 5a603ca..8bddb42 100644 (file)
@@ -43,6 +43,7 @@ sub replace_manpage_separator {
 
 sub maybe_command {
     my($self,$file) = @_;
+    $file =~ s,[/\\]+,/,g;
     return $file if -x $file && ! -d _;
     return "$file.exe" if -x "$file.exe" && ! -d _;
     return "$file.cmd" if -x "$file.cmd" && ! -d _;
index 375a699..e4fe4ed 100644 (file)
@@ -180,15 +180,17 @@ sub WriteMakefile {
 
 sub prompt ($;$) {
     my($mess,$def)=@_;
-    $ISA_TTY = -t STDIN && -t STDOUT ;
+    $ISA_TTY = -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)) ;  # Pipe?
     Carp::confess("prompt function called without an argument") unless defined $mess;
     my $dispdef = defined $def ? "[$def] " : " ";
     $def = defined $def ? $def : "";
     my $ans;
+    local $|=1;
+    print "$mess $dispdef";
     if ($ISA_TTY) {
-       local $|=1;
-       print "$mess $dispdef";
        chomp($ans = <STDIN>);
+    } else {
+       print "$def\n";
     }
     return $ans || $def;
 }