summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2005-02-17 18:14:19 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2005-02-17 18:14:19 +0000
commit99f36a739b86a289062066efb312754683ab485a (patch)
tree39dbc8ad64a9d609173dcc2642bfeadb8d6f0c0b /lib
parentebb9462d35b8e2e4f8f628bc4e3e7af9194b146a (diff)
downloadperl-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.pm61
-rw-r--r--lib/File/Spec.pm9
-rw-r--r--lib/File/Spec/Cygwin.pm7
-rw-r--r--lib/File/Spec/Epoc.pm15
-rw-r--r--lib/File/Spec/Functions.pm10
-rw-r--r--lib/File/Spec/Mac.pm7
-rw-r--r--lib/File/Spec/OS2.pm7
-rw-r--r--lib/File/Spec/Unix.pm7
-rw-r--r--lib/File/Spec/VMS.pm15
-rw-r--r--lib/File/Spec/Win32.pm7
-rw-r--r--lib/File/Spec/t/Spec.t3
-rw-r--r--lib/File/Spec/t/crossplatform.t3
-rw-r--r--lib/File/Spec/t/rel2abs2rel.t4
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 {