From 23bb49fa8c98c39adab74ba793fe7dad073789c2 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Tue, 7 Mar 2006 04:48:29 +0000 Subject: [PATCH] Upgrade to PathTools-3.17 p4raw-id: //depot/perl@27398 --- ext/Cwd/Cwd.xs | 2 +- ext/Cwd/t/cwd.t | 9 ++++++++- lib/Cwd.pm | 11 ++++++++++- lib/File/Spec.pm | 12 ++++++------ 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/ext/Cwd/Cwd.xs b/ext/Cwd/Cwd.xs index 4bcbf60..039adb9 100644 --- a/ext/Cwd/Cwd.xs +++ b/ext/Cwd/Cwd.xs @@ -409,7 +409,7 @@ PPCODE: } void -getcwd() +getcwd(...) PROTOTYPE: DISABLE PPCODE: { diff --git a/ext/Cwd/t/cwd.t b/ext/Cwd/t/cwd.t index 0b6edcd..4ec7b9a 100644 --- a/ext/Cwd/t/cwd.t +++ b/ext/Cwd/t/cwd.t @@ -18,7 +18,7 @@ use lib File::Spec->catdir('t', 'lib'); use Test::More; require VMS::Filespec if $^O eq 'VMS'; -my $tests = 29; +my $tests = 30; # _perl_abs_path() currently only works when the directory separator # is '/', so don't test it when it won't work. my $EXTRA_ABSPATH_TESTS = ($Config{prefix} =~ m/\//) && $^O ne 'cygwin'; @@ -125,6 +125,13 @@ foreach my $func (qw(cwd getcwd fastcwd fastgetcwd)) { dir_ends_with( $result, $Test_Dir, "$func()" ); } +{ + # Some versions of File::Path (e.g. that shipped with perl 5.8.5) + # call getcwd() with an argument (perhaps by calling it as a + # method?), so make sure that doesn't die. + is getcwd(), getcwd('foo'), "Call getcwd() with an argument"; +} + # Cwd::chdir should also update $ENV{PWD} dir_ends_with( $ENV{PWD}, $Test_Dir, 'Cwd::chdir() updates $ENV{PWD}' ); my $updir = File::Spec->updir; diff --git a/lib/Cwd.pm b/lib/Cwd.pm index b6f0a2a..21cc263 100644 --- a/lib/Cwd.pm +++ b/lib/Cwd.pm @@ -171,7 +171,7 @@ use strict; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); -$VERSION = '3.15'; +$VERSION = '3.17'; @ISA = qw/ Exporter /; @EXPORT = qw(cwd getcwd fastcwd fastgetcwd); @@ -357,6 +357,15 @@ unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) { } } +if ($^O eq 'cygwin') { + # We need to make sure cwd() is called with no args, because it's + # got an arg-less prototype and will die if args are present. + local $^W = 0; + my $orig_cwd = \&cwd; + *cwd = sub { &$orig_cwd() } +} + + # set a reasonable (and very safe) default for fastgetcwd, in case it # isn't redefined later (20001212 rspier) *fastgetcwd = \&cwd; diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm index 4554eb1..9aac374 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.15'; +$VERSION = '3.17'; $VERSION = eval $VERSION; my %module = (MacOS => 'Mac', @@ -230,10 +230,10 @@ from the base path to the destination path: $rel_path = File::Spec->abs2rel( $path ) ; $rel_path = File::Spec->abs2rel( $path, $base ) ; -If C<$base> is not present or '', then L is used. If C<$base> is +If C<$base> is not present or '', then L is used. If C<$base> is relative, then it is converted to absolute form using L. This means that it is taken to be relative to -L. +L. On systems with the concept of volume, if C<$path> and C<$base> appear to be on two different volumes, we will not attempt to resolve the two @@ -246,7 +246,7 @@ C<$base> filename as well. Otherwise all path components are assumed to be directories. If C<$path> is relative, it is converted to absolute form using L. -This means that it is taken to be relative to L. +This means that it is taken to be relative to L. No checks against the filesystem are made. On VMS, there is interaction with the working environment, as logicals and @@ -261,9 +261,9 @@ Converts a relative path to an absolute path. $abs_path = File::Spec->rel2abs( $path ) ; $abs_path = File::Spec->rel2abs( $path, $base ) ; -If C<$base> is not present or '', then L is used. If C<$base> is relative, +If C<$base> is not present or '', then L is used. If C<$base> is relative, then it is converted to absolute form using L. This means that it -is taken to be relative to L. +is taken to be relative to L. On systems with the concept of volume, if C<$path> and C<$base> appear to be on two different volumes, we will not attempt to resolve the two -- 1.8.3.1