File::Temp tests were failing in Cygwin if $ENV{TMPDIR}
Jarkko Hietaniemi [Wed, 12 Mar 2003 13:49:15 +0000 (13:49 +0000)]
was unset (the tests attempted to create files at the /)

p4raw-id: //depot/perl@18955

lib/File/Spec/Cygwin.pm

index 8773288..ac4e839 100644 (file)
@@ -20,6 +20,26 @@ sub file_name_is_absolute {
     return $self->SUPER::file_name_is_absolute($file);
 }
 
+my $tmpdir;
+sub tmpdir {
+    return $tmpdir if defined $tmpdir;
+    my @dirlist = ($ENV{TMPDIR}, "/tmp", 'C:/temp');
+    {
+       no strict 'refs';
+       if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0
+            require Scalar::Util;
+           shift @dirlist if Scalar::Util::tainted($ENV{TMPDIR});
+       }
+    }
+    foreach (@dirlist) {
+       next unless defined && -d && -w _;
+       $tmpdir = $_;
+       last;
+    }
+    $tmpdir = '' unless defined $tmpdir;
+    return $tmpdir;
+}
+
 1;
 __END__