diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-02-17 18:14:19 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-02-17 18:14:19 +0000 |
commit | 99f36a739b86a289062066efb312754683ab485a (patch) | |
tree | 39dbc8ad64a9d609173dcc2642bfeadb8d6f0c0b /lib | |
parent | ebb9462d35b8e2e4f8f628bc4e3e7af9194b146a (diff) | |
download | perl-99f36a739b86a289062066efb312754683ab485a.tar.gz |
Upgrade to PathTools 3.04
(plus tweaks to Cwd and cwd.t to run when building perl)
p4raw-id: //depot/perl@23977
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Cwd.pm | 61 | ||||
-rw-r--r-- | lib/File/Spec.pm | 9 | ||||
-rw-r--r-- | lib/File/Spec/Cygwin.pm | 7 | ||||
-rw-r--r-- | lib/File/Spec/Epoc.pm | 15 | ||||
-rw-r--r-- | lib/File/Spec/Functions.pm | 10 | ||||
-rw-r--r-- | lib/File/Spec/Mac.pm | 7 | ||||
-rw-r--r-- | lib/File/Spec/OS2.pm | 7 | ||||
-rw-r--r-- | lib/File/Spec/Unix.pm | 7 | ||||
-rw-r--r-- | lib/File/Spec/VMS.pm | 15 | ||||
-rw-r--r-- | lib/File/Spec/Win32.pm | 7 | ||||
-rw-r--r-- | lib/File/Spec/t/Spec.t | 3 | ||||
-rw-r--r-- | lib/File/Spec/t/crossplatform.t | 3 | ||||
-rw-r--r-- | lib/File/Spec/t/rel2abs2rel.t | 4 |
13 files changed, 128 insertions, 27 deletions
diff --git a/lib/Cwd.pm b/lib/Cwd.pm index febd296bd3..cf07cb484d 100644 --- a/lib/Cwd.pm +++ b/lib/Cwd.pm @@ -1,5 +1,4 @@ package Cwd; -$VERSION = $VERSION = '3.01'; =head1 NAME @@ -148,6 +147,19 @@ Originally by the perl5-porters. Maintained by Ken Williams <KWILLIAMS@cpan.org> +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +Portions of the C code in this library are copyright (c) 1994 by the +Regents of the University of California. All rights reserved. The +license on this code is compatible with the licensing of the rest of +the distribution - please see the source code in F<Cwd.xs> for the +details. + =head1 SEE ALSO L<File::chdir> @@ -156,7 +168,9 @@ L<File::chdir> use strict; use Exporter; -use vars qw(@ISA @EXPORT @EXPORT_OK); +use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); + +$VERSION = '3.04'; @ISA = qw/ Exporter /; @EXPORT = qw(cwd getcwd fastcwd fastgetcwd); @@ -186,11 +200,19 @@ if ($^O eq 'os2') { } eval { - require XSLoader; - local $^W = 0; - XSLoader::load('Cwd'); +if ( $] >= 5.006 ) { + require XSLoader; + XSLoader::load( __PACKAGE__, $VERSION ); +} else { + require DynaLoader; + push @ISA, 'DynaLoader'; + __PACKAGE__->bootstrap( $VERSION ); +} }; +# Must be after the DynaLoader stuff: +$VERSION = eval $VERSION; + # Big nasty table of function aliases my %METHOD_MAP = ( @@ -308,6 +330,7 @@ unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) { # The pwd command is not available in some chroot(2)'ed environments my $sep = $Config::Config{path_sep} || ':'; if( $^O eq 'MacOS' || (defined $ENV{PATH} && + $^O ne 'MSWin32' && # no pwd on Windows grep { -x "$_/pwd" } split($sep, $ENV{PATH})) ) { *cwd = \&_backtick_pwd; @@ -338,7 +361,7 @@ sub getcwd # This is a faster version of getcwd. It's also more dangerous because # you might chdir out of a directory that you can't chdir back into. -sub fastcwd { +sub fastcwd_ { my($odev, $oino, $cdev, $cino, $tdev, $tino); my(@path, $path); local(*DIR); @@ -376,6 +399,7 @@ sub fastcwd { if $cdev != $orig_cdev || $cino != $orig_cino; $path; } +if (not defined &fastcwd) { *fastcwd = \&fastcwd_ } # Keeps track of current working directory in PWD environment var @@ -449,9 +473,7 @@ sub chdir { } -# In case the XS version doesn't load. -*abs_path = \&_perl_abs_path unless defined &abs_path; -sub _perl_abs_path(;$) +sub _perl_abs_path { my $start = @_ ? shift : '.'; my($dotdots, $cwd, @pst, @cst, $dir, @tst); @@ -481,7 +503,7 @@ sub _perl_abs_path(;$) return abs_path($link_target); } - return abs_path($dir) . '/' . $file; + return $dir ? abs_path($dir) . "/$file" : "/$file"; } $cwd = ''; @@ -529,12 +551,9 @@ sub _perl_abs_path(;$) } -# added function alias for those of us more -# used to the libc function. --tchrist 27-Jan-00 -*realpath = \&abs_path; - my $Curdir; sub fast_abs_path { + local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage my $cwd = getcwd(); require File::Spec; my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir); @@ -564,7 +583,9 @@ sub fast_abs_path { return fast_abs_path($link_target); } - return fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; + return $dir eq File::Spec->rootdir + ? File::Spec->catpath($vol, $dir, $file) + : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; } if (!CORE::chdir($path)) { @@ -651,7 +672,7 @@ sub _qnx_abs_path { my $path = @_ ? shift : '.'; local *REALPATH; - open(REALPATH, '-|', '/usr/bin/fullpath', '-t', $path) or + defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or die "Can't open /usr/bin/fullpath: $!"; my $realpath = <REALPATH>; close REALPATH; @@ -671,11 +692,17 @@ sub _epoc_cwd { if (exists $METHOD_MAP{$^O}) { my $map = $METHOD_MAP{$^O}; foreach my $name (keys %$map) { - no warnings; # assignments trigger 'subroutine redefined' warning + local $^W = 0; # assignments trigger 'subroutine redefined' warning no strict 'refs'; *{$name} = \&{$map->{$name}}; } } +# In case the XS version doesn't load. +*abs_path = \&_perl_abs_path unless defined &abs_path; + +# added function alias for those of us more +# used to the libc function. --tchrist 27-Jan-00 +*realpath = \&abs_path; 1; diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm index a2c4b974c1..44771c97eb 100644 --- a/lib/File/Spec.pm +++ b/lib/File/Spec.pm @@ -3,7 +3,7 @@ package File::Spec; use strict; use vars qw(@ISA $VERSION); -$VERSION = '3.01'; +$VERSION = '3.04'; $VERSION = eval $VERSION; my %module = (MacOS => 'Mac', @@ -304,4 +304,11 @@ abs2rel() and rel2abs() written by Shigio Yamaguchi C<< <shigio@tamacom.com> >>, modified by Barrie Slaymaker C<< <barries@slaysys.com> >>. splitpath(), splitdir(), catpath() and catdir() by Barrie Slaymaker. +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =cut diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm index 0712add8e6..e01e03537a 100644 --- a/lib/File/Spec/Cygwin.pm +++ b/lib/File/Spec/Cygwin.pm @@ -82,6 +82,13 @@ sub tmpdir { =back +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =cut 1; diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm index 89ca0b99d9..a7168f9e49 100644 --- a/lib/File/Spec/Epoc.pm +++ b/lib/File/Spec/Epoc.pm @@ -24,10 +24,6 @@ the semantics. This package is still work in progress ;-) -=head1 AUTHORS - -o.flebbe@gmx.de - =cut sub case_tolerant { @@ -60,6 +56,17 @@ sub canonpath { =pod +=head1 AUTHOR + +o.flebbe@gmx.de + +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =head1 SEE ALSO See L<File::Spec> and L<File::Spec::Unix>. This package overrides the diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm index 1c36e8b946..38c898c5d8 100644 --- a/lib/File/Spec/Functions.pm +++ b/lib/File/Spec/Functions.pm @@ -93,7 +93,17 @@ The following functions are exported only by request. All the functions may be imported using the C<:ALL> tag. +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =head1 SEE ALSO File::Spec, File::Spec::Unix, File::Spec::Mac, File::Spec::OS2, File::Spec::Win32, File::Spec::VMS, ExtUtils::MakeMaker + +=cut + diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm index 34a7a015f2..e31737ca71 100644 --- a/lib/File/Spec/Mac.pm +++ b/lib/File/Spec/Mac.pm @@ -764,6 +764,13 @@ sub rel2abs { See the authors list in I<File::Spec>. Mac OS support by Paul Schinder <schinder@pobox.com> and Thomas Wegner <wegner_thomas@yahoo.com>. +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =head1 SEE ALSO See L<File::Spec> and L<File::Spec::Unix>. This package overrides the diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm index 47dc0a6ad6..9f2ca3c5a4 100644 --- a/lib/File/Spec/OS2.pm +++ b/lib/File/Spec/OS2.pm @@ -263,4 +263,11 @@ Volumes can be drive letters or UNC sharenames (\\server\share). =back +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =cut diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm index 349757b682..46158bddd9 100644 --- a/lib/File/Spec/Unix.pm +++ b/lib/File/Spec/Unix.pm @@ -445,6 +445,13 @@ sub rel2abs { =back +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =head1 SEE ALSO L<File::Spec> diff --git a/lib/File/Spec/VMS.pm b/lib/File/Spec/VMS.pm index 82d639f3f1..e085e0a63d 100644 --- a/lib/File/Spec/VMS.pm +++ b/lib/File/Spec/VMS.pm @@ -182,7 +182,7 @@ sub canonpath { $path =~ s/\.[^\]\.]+\.-\./\./g; # .foo.-. ==> . $path =~ s/\[[^\]\.]+\.-\./\[/g; # [foo.-. ==> [ $path =~ s/\.[^\]\.]+\.-\]/\]/g; # .foo.-] ==> ] - $path =~ s/\[[^\]\.]+\.-\]/\[\]/g; # [foo.-] ==> [] + $path =~ s/\[[^\]\.]+\.-\]/\[000000\]/g;# [foo.-] ==> [000000] $path =~ s/\[\]//; # [] ==> return $path; } @@ -477,7 +477,11 @@ sub rel2abs { my $self = shift ; my ($path,$base ) = @_; return undef unless defined $path; - $path = vmsify($path) if $path =~ m/\//; + if ($path =~ m/\//) { + $path = ( -d $path || $path =~ m/\/\z/ # educated guessing about + ? vmspath($path) # whether it's a directory + : vmsify($path) ); + } $base = vmspath($base) if defined $base && $base =~ m/\//; # Clean up and split up $path if ( ! $self->file_name_is_absolute( $path ) ) { @@ -518,6 +522,13 @@ sub rel2abs { =back +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =head1 SEE ALSO See L<File::Spec> and L<File::Spec::Unix>. This package overrides the diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm index 0d60cfb154..de560ce2ec 100644 --- a/lib/File/Spec/Win32.pm +++ b/lib/File/Spec/Win32.pm @@ -368,6 +368,13 @@ sub rel2abs { Novell NetWare inherits its File::Spec behaviour from File::Spec::Win32. +=head1 COPYRIGHT + +Copyright (c) 2004 by the Perl 5 Porters. All rights reserved. + +This program is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + =head1 SEE ALSO See L<File::Spec> and L<File::Spec::Unix>. This package overrides the diff --git a/lib/File/Spec/t/Spec.t b/lib/File/Spec/t/Spec.t index 0ceb81cee1..565eb8c213 100644 --- a/lib/File/Spec/t/Spec.t +++ b/lib/File/Spec/t/Spec.t @@ -322,6 +322,7 @@ if ($^O eq 'MacOS') { [ "VMS->canonpath('[d1.000000.][000000.][d3.--.000000]file.txt')", '[d1.000000]file.txt' ], [ "VMS->canonpath('volume:[d1.000000.][000000.][-.-.000000]file.txt')", 'volume:[000000]file.txt' ], [ "VMS->canonpath('[d1.000000.][000000.][--.-.000000]file.txt')", '[-.000000]file.txt' ], +[ "VMS->canonpath('[d1.d2.--]file')", '[000000]file' ], [ "VMS->splitdir('')", '' ], [ "VMS->splitdir('[]')", '' ], @@ -607,7 +608,7 @@ plan tests => scalar @tests; # Some funky stuff to override Cwd::getdcwd() for testing purposes, # in the limited scope of the rel2abs() method. - if ($Cwd::VERSION gt '2.17') { + if ($Cwd::VERSION && $Cwd::VERSION gt '2.17') { # Avoid a 'used only once' warning local $^W; *rel2abs = sub { my $self = shift; diff --git a/lib/File/Spec/t/crossplatform.t b/lib/File/Spec/t/crossplatform.t index a98e091b3a..2da585ec54 100644 --- a/lib/File/Spec/t/crossplatform.t +++ b/lib/File/Spec/t/crossplatform.t @@ -1,8 +1,9 @@ #!/usr/bin/perl -w use strict; -use Test::More; use File::Spec; +use lib File::Spec->catfile('t', 'lib'); +use Test::More; local $|=1; my @platforms = qw(Cygwin Epoc Mac OS2 Unix VMS Win32); diff --git a/lib/File/Spec/t/rel2abs2rel.t b/lib/File/Spec/t/rel2abs2rel.t index 7af1042c0b..0959d574b9 100644 --- a/lib/File/Spec/t/rel2abs2rel.t +++ b/lib/File/Spec/t/rel2abs2rel.t @@ -3,6 +3,9 @@ # Here we make sure File::Spec can properly deal with executables. # VMS has some trouble with these. +use File::Spec; +use lib File::Spec->catdir('t', 'lib'); + use Test::More (-x $^X ? (tests => 5) : (skip_all => "Can't find an executable file") @@ -22,7 +25,6 @@ END { use Config; -use File::Spec; # Change 'perl' to './perl' so the shell doesn't go looking through PATH. sub safe_rel { |