podlators 1.05 available
[p5sagit/p5-mst-13.2.git] / lib / Term / Cap.pm
index d4d91c6..0954000 100644 (file)
@@ -104,8 +104,11 @@ as C<$self-E<gt>{TERMCAP}>.
 sub termcap_path { ## private
     my @termcap_path;
     # $TERMCAP, if it's a filespec
-    push(@termcap_path, $ENV{TERMCAP}) if ((exists $ENV{TERMCAP}) &&
-                                           ($ENV{TERMCAP} =~ /^\//));
+    push(@termcap_path, $ENV{TERMCAP})
+       if ((exists $ENV{TERMCAP}) &&
+           (($^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'dos')
+            ? $ENV{TERMCAP} =~ /^[a-z]:[\\\/]/is
+            : $ENV{TERMCAP} =~ /^\//s));
     if ((exists $ENV{TERMPATH}) && ($ENV{TERMPATH})) {
        # Add the users $TERMPATH
        push(@termcap_path, split(/(:|\s+)/, $ENV{TERMPATH}))
@@ -154,7 +157,7 @@ sub Tgetent { ## public -- static method
     my $foo = (exists $ENV{TERMCAP} ? $ENV{TERMCAP} : '');
 
     # $entry is the extracted termcap entry
-    if (($foo !~ m:^/:) && ($foo =~ m/(^|\|)${termpat}[:|]/)) {
+    if (($foo !~ m:^/:s) && ($foo =~ m/(^|\|)${termpat}[:|]/s)) {
        $entry = $foo;
     }
 
@@ -185,21 +188,21 @@ sub Tgetent { ## public -- static method
 
     # This is eval'ed inside the while loop for each file
     $search = q{
-       while ($_ = <TERMCAP>) {
+       while (<TERMCAP>) {
            next if /^\\t/ || /^#/;
            if ($_ =~ m/(^|\\|)${termpat}[:|]/o) {
                chomp;
                s/^[^:]*:// if $first++;
                $state = 0;
-               while ($_ =~ s/\\\\$//) { $_ .= <TERMCAP>; chomp; }
+               while ($_ =~ s/\\\\$//) {
+                   defined(my $x = <TERMCAP>) or last;
+                   $_ .= $x; chomp;
+               }
                last;
            }
        }
-        if (defined $entry) {
-          $entry .= $_;
-        } else {
-          $entry = $_;
-        }
+       defined $entry or $entry = '';
+       $entry .= $_;
     };
 
     while ($state != 0) {