Cleanup the File::Spec tmpdir() implementations:
[p5sagit/p5-mst-13.2.git] / lib / File / Spec / Cygwin.pm
1
2 package File::Spec::Cygwin;
3
4 use strict;
5 use vars qw(@ISA $VERSION);
6 require File::Spec::Unix;
7
8 $VERSION = '1.0';
9
10 @ISA = qw(File::Spec::Unix);
11
12 =head1 NAME
13
14 File::Spec::Cygwin - methods for Cygwin file specs
15
16 =head1 SYNOPSIS
17
18  require File::Spec::Cygwin; # Done internally by File::Spec if needed
19
20 =head1 DESCRIPTION
21
22 See File::Spec::Unix for a documentation of the methods provided
23 there. This package overrides the implementation of these methods, not
24 the semantics.
25
26 This module is still in beta.  Cygwin-knowledgeable folks are invited
27 to offer patches and suggestions.
28
29 =cut
30
31 =pod
32
33 =item canonpath
34
35 Any C<\> (backslashes) are converted to C</> (forward slashes),
36 and then File::Spec::Unix canonpath() is called on the result.
37
38 =cut
39
40 sub canonpath {
41     my($self,$path) = @_;
42     $path =~ s|\\|/|g;
43     return $self->SUPER::canonpath($path);
44 }
45
46 =pod
47
48 =item file_name_is_absolute
49
50 True is returned if the file name begins with C<drive_letter:>,
51 and if not, File::Spec::Unix file_name_is_absolute() is called.
52
53 =cut
54
55
56 sub file_name_is_absolute {
57     my ($self,$file) = @_;
58     return 1 if $file =~ m{^([a-z]:)?[\\/]}is; # C:/test
59     return $self->SUPER::file_name_is_absolute($file);
60 }
61
62 =item tmpdir (override)
63
64 Returns a string representation of the first existing directory
65 from the following list:
66
67     $ENV{TMPDIR}
68     /tmp
69     C:/temp
70
71 Since Perl 5.8.0, if running under taint mode, and if the environment
72 variables are tainted, they are not used.
73
74 =cut
75
76 my $tmpdir;
77 sub tmpdir {
78     return $tmpdir if defined $tmpdir;
79     my $self = shift;
80     $tmpdir = $self->_tmpdir( $ENV{TMPDIR}, "/tmp", 'C:/temp' );
81 }
82
83 1;