This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rational findConsole dispatch for Term::ReadLine.
authorCraig A. Berry <craigberry@mac.com>
Sun, 25 Nov 2012 14:54:32 +0000 (08:54 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sun, 25 Nov 2012 16:05:56 +0000 (10:05 -0600)
Back in 5.002 or so, if we didn't find /dev/tty and weren't on
Windows, the console was assumed to be sys$command, which only
makes sense on VMS (possibly $^O didn't work yet on VMS?).

Later accretions have assumed that the sys$command default meant
something other than laziness and a second if block with various
specific overrides was added, some of which set the console back
to undef after its having been set to sys$command.

That can all be avoided by simply checking we're on VMS before
setting the console to sys$command and letting it default to
STDIN for cases where we don't know of something else specific
that it should be.

dist/Term-ReadLine/lib/Term/ReadLine.pm

index 6f94981..115ce15 100644 (file)
@@ -238,19 +238,12 @@ sub findConsole {
     } elsif (-e "con" or $^O eq 'MSWin32' or $^O eq 'msys') {
        $console = 'CONIN$';
        $consoleOUT = 'CONOUT$';
-    } else {
+    } elsif ($^O eq 'VMS') {
        $console = "sys\$command";
-    }
-
-    if (($^O eq 'amigaos') || ($^O eq 'beos') || ($^O eq 'epoc')) {
-       $console = undef;
-    }
-    elsif ($^O eq 'os2') {
-      if ($DB::emacs) {
-       $console = undef;
-      } else {
+    } elsif ($^O eq 'os2' && !$DB::emacs) {
        $console = "/dev/con";
-      }
+    } else {
+       $console = undef;
     }
 
     $consoleOUT = $console unless defined $consoleOUT;