Compare commits

...

No commits in common. "c8-stream-5.24" and "c8-stream-5.3" have entirely different histories.

7 changed files with 380 additions and 303 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/PathTools-3.62.tar.gz
SOURCES/PathTools-3.75.tar.gz

View File

@ -1 +1 @@
356530987ccfb61779ce038978a614aa64679d72 SOURCES/PathTools-3.62.tar.gz
ff2f9e55e33a1cfe1247e29f4e136b9a78f4be3a SOURCES/PathTools-3.75.tar.gz

View File

@ -1,204 +0,0 @@
diff --git a/Cwd.pm b/Cwd.pm
index 9b5183e..e8b9f19 100644
--- a/Cwd.pm
+++ b/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
-$VERSION = '3.62';
+$VERSION = '3.63';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index 2709c39..32b987e 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.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
my %module = (MacOS => 'Mac',
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
index e6d6f5f2a..7a5889c 100644
--- a/lib/File/Spec/AmigaOS.pm
+++ b/lib/File/Spec/AmigaOS.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.62';
+$VERSION = '3.64';
$VERSION =~ tr/_//d;
@ISA = qw(File::Spec::Unix);
@@ -15,7 +15,8 @@ File::Spec::AmigaOS - File::Spec for AmigaOS
=head1 SYNOPSIS
- require File::Spec::AmigaOS; # Done automatically by File::Spec if needed
+ require File::Spec::AmigaOS; # Done automatically by File::Spec
+ # if needed
=head1 DESCRIPTION
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
index 67f056f..2092eb8 100644
--- a/lib/File/Spec/Cygwin.pm
+++ b/lib/File/Spec/Cygwin.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
@ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
index 17e3f54..22f0192 100644
--- a/lib/File/Spec/Epoc.pm
+++ b/lib/File/Spec/Epoc.pm
@@ -3,7 +3,7 @@ package File::Spec::Epoc;
use strict;
use vars qw($VERSION @ISA);
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
index 470c771..af2c498 100644
--- a/lib/File/Spec/Functions.pm
+++ b/lib/File/Spec/Functions.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
index 329451f..52c3bfe 100644
--- a/lib/File/Spec/Mac.pm
+++ b/lib/File/Spec/Mac.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
@ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
index 55e6d33..804ecdb 100644
--- a/lib/File/Spec/OS2.pm
+++ b/lib/File/Spec/OS2.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
@ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
index 586e9b0..3916a11 100644
--- a/lib/File/Spec/Unix.pm
+++ b/lib/File/Spec/Unix.pm
@@ -3,7 +3,7 @@ package File::Spec::Unix;
use strict;
use vars qw($VERSION);
-$VERSION = '3.62';
+$VERSION = '3.63';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
diff --git a/lib/File/Spec/VMS.pm b/lib/File/Spec/VMS.pm
index 600c49f..02cc0b0 100644
--- a/lib/File/Spec/VMS.pm
+++ b/lib/File/Spec/VMS.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
@ISA = qw(File::Spec::Unix);
@@ -437,15 +437,13 @@ Attempt to convert an absolute file specification to a relative specification.
sub abs2rel {
my $self = shift;
- return vmspath(File::Spec::Unix::abs2rel( $self, @_ ))
- if ((grep m{/}, @_) && !(grep m{(?<!\^)[\[<:]}, @_));
-
my($path,$base) = @_;
+
$base = $self->_cwd() unless defined $base and length $base;
# If there is no device or directory syntax on $base, make sure it
# is treated as a directory.
- $base = VMS::Filespec::vmspath($base) unless $base =~ m{(?<!\^)[\[<:]};
+ $base = vmspath($base) unless $base =~ m{(?<!\^)[\[<:]};
for ($path, $base) { $_ = $self->rel2abs($_) }
@@ -461,7 +459,7 @@ sub abs2rel {
my ($path_volume, $path_directories, $path_file) = $self->splitpath($path);
my ($base_volume, $base_directories, $base_file) = $self->splitpath($base);
- return $path unless lc($path_volume) eq lc($base_volume);
+ return $self->canonpath( $path ) unless lc($path_volume) eq lc($base_volume);
# Now, remove all leading components that are the same
my @pathchunks = $self->splitdir( $path_directories );
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index 6df7ee8..1105b67 100644
--- a/lib/File/Spec/Win32.pm
+++ b/lib/File/Spec/Win32.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw(@ISA $VERSION);
require File::Spec::Unix;
-$VERSION = '3.62';
+$VERSION = '3.63';
$VERSION =~ tr/_//d;
@ISA = qw(File::Spec::Unix);
diff --git a/t/abs2rel.t b/t/abs2rel.t
index 5e33ab6..b77a1c2 100644
--- a/t/abs2rel.t
+++ b/t/abs2rel.t
@@ -6,7 +6,7 @@ use Test::More;
use Cwd qw(cwd getcwd abs_path);
use File::Spec();
use File::Temp qw(tempdir);
-use File::Path qw(make_path);
+use File::Path qw(mkpath);
my $startdir = cwd();
my @files = ( 'anyfile', './anyfile', '../first_sub_dir/anyfile', '../second_sub_dir/second_file' );
@@ -25,8 +25,8 @@ sub test_rel2abs {
File::Spec->catdir('first_sub_dir', 'sub_sub_dir'),
'second_sub_dir'
);
- make_path(@subdirs, { mode => 0711 })
- or die "Unable to make_path: $!";
+ mkpath(@subdirs, { mode => 0711 })
+ or die "Unable to mkpath: $!";
open my $OUT2, '>',
File::Spec->catfile('second_sub_dir', 'second_file')

View File

@ -1,62 +0,0 @@
diff -up PathTools/Cwd.pm.cve PathTools/Cwd.pm
--- PathTools/Cwd.pm.cve 2016-03-01 13:33:02.000000000 +0100
+++ PathTools/Cwd.pm 2016-08-02 13:39:39.814316060 +0200
@@ -40,7 +40,10 @@ if ($^O eq 'os2') {
my $use_vms_feature;
BEGIN {
if ($^O eq 'VMS') {
- if (eval { local $SIG{__DIE__}; require VMS::Feature; }) {
+ if (eval { local $SIG{__DIE__};
+ local @INC = @INC;
+ pop @INC if $INC[-1] eq '.';
+ require VMS::Feature; }) {
$use_vms_feature = 1;
}
}
diff -up PathTools/lib/File/Spec/Cygwin.pm.cve PathTools/lib/File/Spec/Cygwin.pm
--- PathTools/lib/File/Spec/Cygwin.pm.cve 2016-03-01 13:33:02.000000000 +0100
+++ PathTools/lib/File/Spec/Cygwin.pm 2016-08-02 13:39:39.814316060 +0200
@@ -137,7 +137,11 @@ sub case_tolerant {
if ($mntopts and ($mntopts =~ /,managed/)) {
return 0;
}
- eval { require Win32API::File; } or return 1;
+ eval {
+ local @INC = @INC;
+ pop @INC if $INC[-1] eq '.';
+ require Win32API::File;
+ } or return 1;
my $osFsType = "\0"x256;
my $osVolName = "\0"x256;
my $ouFsFlags = 0;
diff -up PathTools/lib/File/Spec/VMS.pm.cve PathTools/lib/File/Spec/VMS.pm
--- PathTools/lib/File/Spec/VMS.pm.cve 2016-03-01 13:33:02.000000000 +0100
+++ PathTools/lib/File/Spec/VMS.pm 2016-08-02 13:39:39.814316060 +0200
@@ -39,7 +39,10 @@ via the C<DECC$FILENAME_UNIX_REPORT> CRT
my $use_feature;
BEGIN {
- if (eval { local $SIG{__DIE__}; require VMS::Feature; }) {
+ if (eval { local $SIG{__DIE__};
+ local @INC = @INC;
+ pop @INC if $INC[-1] eq '.';
+ require VMS::Feature; }) {
$use_feature = 1;
}
}
diff -up PathTools/lib/File/Spec/Win32.pm.cve PathTools/lib/File/Spec/Win32.pm
--- PathTools/lib/File/Spec/Win32.pm.cve 2016-03-01 13:33:02.000000000 +0100
+++ PathTools/lib/File/Spec/Win32.pm 2016-08-02 13:39:39.814316060 +0200
@@ -90,7 +90,11 @@ Default: 1
=cut
sub case_tolerant {
- eval { require Win32API::File; } or return 1;
+ eval {
+ local @INC = @INC;
+ pop @INC if $INC[-1] eq '.';
+ require Win32API::File;
+ } or return 1;
my $drive = shift || "C:";
my $osFsType = "\0"x256;
my $osVolName = "\0"x256;

View File

@ -1,6 +1,20 @@
diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t
--- PathTools-3.47/t/Spec.t.orig 2014-05-23 18:39:28.000000000 +0200
+++ PathTools-3.47/t/Spec.t 2014-05-27 12:32:22.473486887 +0200
From 27cd91c8d8c0aa03a954097e24d78df08905dc8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Thu, 11 May 2017 11:36:46 +0200
Subject: [PATCH] Disable VMS test (bug #973713)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
t/Spec.t | 196 +--------------------------------------------------------------
1 file changed, 1 insertion(+), 195 deletions(-)
diff --git a/t/Spec.t b/t/Spec.t
index 84ed6b1..7ef976f 100644
--- a/t/Spec.t
+++ b/t/Spec.t
@@ -38,7 +38,7 @@ if ( $@ ) {
$INC{"VMS/Filespec.pm"} = 1 ;
}
@ -10,7 +24,7 @@ diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t
require_ok("File::Spec::$_");
}
@@ -322,190 +322,6 @@ my @tests = (
@@ -326,200 +326,6 @@ my @tests = (
[ "FakeWin32->rel2abs('../','//prague_main/work')", '\\\\prague_main\\work' ],
[ "FakeWin32->rel2abs('D:foo.txt')", 'D:\\alpha\\beta\\foo.txt' ],
@ -139,7 +153,14 @@ diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t
-[ "VMS->canonpath('[d1.d2.--]file')", $vms_unix_rpt ? '../file.txt' : '[000000]file' ],
-# During the Perl 5.8 era, FS::Unix stopped eliminating redundant path elements, so mimic that here.
-[ "VMS->canonpath('a/../../b/c.dat')", $vms_unix_rpt ? 'a/../../b/c.dat' : '[-.b]c.dat' ],
-[ "VMS->canonpath('^<test^.new.-.caret^ escapes^>')", '^<test^.new.-.caret^ escapes^>' ],
-[ "VMS->canonpath('^<test^.new.-.caret^ escapes^>')", $vms_unix_rpt ? '/<test.new.-.caret escapes>' : '^<test^.new.-.caret^ escapes^>' ],
-# Check that directory specs with caret-dot component is treated correctly
-[ "VMS->canonpath('foo:[bar.coo.kie.--]file.txt')", $vms_unix_rpt ? '/foo/bar/file.txt' : "foo:[bar]file.txt" ],
-[ "VMS->canonpath('foo:[bar^.coo.kie.--]file.txt')", $vms_unix_rpt ? '/foo/file.txt' : "foo:[000000]file.txt" ],
-[ "VMS->canonpath('foo:[bar.coo^.kie.--]file.txt')", $vms_unix_rpt ? '/foo/file.txt' : "foo:[000000]file.txt" ],
-[ "VMS->canonpath('foo:[bar.coo.kie.-]file.txt')", $vms_unix_rpt ? '/foo/bar/coo/file.txt' : "foo:[bar.coo]file.txt" ],
-[ "VMS->canonpath('foo:[bar^.coo.kie.-]file.txt')", $vms_unix_rpt ? '/foo/bar.coo/file.txt' : "foo:[bar^.coo]file.txt" ],
-[ "VMS->canonpath('foo:[bar.coo^.kie.-]file.txt')", $vms_unix_rpt ? '/foo/bar/file.txt' : "foo:[bar]file.txt" ],
-
-[ "VMS->splitdir('')", '' ],
-[ "VMS->splitdir('[]')", '' ],
@ -175,6 +196,8 @@ diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t
-[ "VMS->abs2rel('node::volume:[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t3/' : 'node::volume:[t1.t2.t3]' ],
-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','node::volume:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ],
-[ "VMS->abs2rel('node::volume:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/node//volume/t1/t2/t4/' : 'node::volume:[t1.t2.t4]' ],
-[ "VMS->abs2rel('/volume/t1/t2/t3','/volume/t1')", $vms_unix_rpt ? 't2/t3' : '[.t2]t3' ],
-[ "VMS->abs2rel('/volume/t1/t2/t3/t4','/volume/t1/xyz')", $vms_unix_rpt ? '../t2/t3/t4' : '[-.t2.t3]t4' ],
-[ "VMS->abs2rel('[t1.t2.t3]','[t1.t2.t3]')", $vms_unix_rpt ? './' : '[]' ],
-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2.t3]')", 'file' ],
-[ "VMS->abs2rel('[t1.t2.t3]file','[t1.t2]')", $vms_unix_rpt ? 't3/file' : '[.t3]file' ],
@ -185,7 +208,7 @@ diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t
-[ "VMS->abs2rel('[t4.t5.t6]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../t4/t5/t6/' : '[---.t4.t5.t6]' ],
-[ "VMS->abs2rel('[000000]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../' : '[---]' ],
-[ "VMS->abs2rel('a:[t1.t2.t4]','a:[t1.t2.t3]')", $vms_unix_rpt ? '../t4/' : '[-.t4]' ],
-[ "VMS->abs2rel('a:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/a/t1/t2/t4/' : 'a:[t1.t2.t4]' ],
-[ "VMS->abs2rel('a:[t1.t2.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/a/t1/t2/t4' : 'a:[t1.t2.t4]' ],
-[ "VMS->abs2rel('[a.-.b.c.-]','[t1.t2.t3]')", $vms_unix_rpt ? '../../../b/' : '[---.b]' ],
-
-[ "VMS->rel2abs('[.t4]','[t1.t2.t3]')", $vms_unix_rpt ? '/sys$disk/t1/t2/t3/t4/' : '[t1.t2.t3.t4]' ],
@ -198,6 +221,10 @@ diff -up PathTools-3.47/t/Spec.t.orig PathTools-3.47/t/Spec.t
-[ "VMS->file_name_is_absolute('foo:')", '1' ],
-[ "VMS->file_name_is_absolute('foo:bar.dat')", '1' ],
-[ "VMS->file_name_is_absolute('foo:[000000]bar.dat')", '1' ],
-
[ "OS2->case_tolerant()", '1' ],
[ "OS2->catdir('A:/d1','B:/d2','d3','')", 'A:/d1/B:/d2/d3' ],
--
2.13.6

View File

@ -0,0 +1,283 @@
From 3c570b93e7ca990b3274219dd828e8fdaac0bf9d Mon Sep 17 00:00:00 2001
From: Jitka Plesnikova <jplesnik@redhat.com>
Date: Thu, 25 Apr 2019 17:04:30 +0200
Subject: [PATCH] Upgrade to 3.78
---
Cwd.pm | 8 ++++++--
lib/File/Spec.pm | 2 +-
lib/File/Spec/AmigaOS.pm | 2 +-
lib/File/Spec/Cygwin.pm | 2 +-
lib/File/Spec/Epoc.pm | 2 +-
lib/File/Spec/Functions.pm | 2 +-
lib/File/Spec/Mac.pm | 2 +-
lib/File/Spec/OS2.pm | 2 +-
lib/File/Spec/Unix.pm | 2 +-
lib/File/Spec/Win32.pm | 14 ++------------
t/Spec.t | 4 ++--
t/cwd.t | 11 ++++++++++-
t/cwd_enoent.t | 9 ++++++---
13 files changed, 34 insertions(+), 28 deletions(-)
diff --git a/Cwd.pm b/Cwd.pm
index 16d5b11..9b173c2 100644
--- a/Cwd.pm
+++ b/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
@@ -171,7 +171,7 @@ if($^O ne 'MSWin32') {
if ($^O =~ /android/) {
# If targetsh is executable, then we're either a full
# perl, or a miniperl for a native build.
- if (-x $Config::Config{targetsh}) {
+ if ( exists($Config::Config{targetsh}) && -x $Config::Config{targetsh}) {
$pwd_cmd = "$Config::Config{targetsh} -c pwd"
}
else {
@@ -659,6 +659,10 @@ if (exists $METHOD_MAP{$^O}) {
}
}
+# built-in from 5.30
+*getcwd = \&Internals::getcwd
+ if !defined &getcwd && defined &Internals::getcwd;
+
# In case the XS version doesn't load.
*abs_path = \&_perl_abs_path unless defined &abs_path;
*getcwd = \&_perl_getcwd unless defined &getcwd;
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
index eb3b55a..7fe3272 100644
--- a/lib/File/Spec.pm
+++ b/lib/File/Spec.pm
@@ -2,7 +2,7 @@ package File::Spec;
use strict;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
my %module = (
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
index 1355768..2b7d18a 100644
--- a/lib/File/Spec/AmigaOS.pm
+++ b/lib/File/Spec/AmigaOS.pm
@@ -3,7 +3,7 @@ package File::Spec::AmigaOS;
use strict;
require File::Spec::Unix;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
index 9dc15a1..d44ced3 100644
--- a/lib/File/Spec/Cygwin.pm
+++ b/lib/File/Spec/Cygwin.pm
@@ -3,7 +3,7 @@ package File::Spec::Cygwin;
use strict;
require File::Spec::Unix;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
index bd87b68..b611cd9 100644
--- a/lib/File/Spec/Epoc.pm
+++ b/lib/File/Spec/Epoc.pm
@@ -2,7 +2,7 @@ package File::Spec::Epoc;
use strict;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
index 19ab4db..3f617bd 100644
--- a/lib/File/Spec/Functions.pm
+++ b/lib/File/Spec/Functions.pm
@@ -3,7 +3,7 @@ package File::Spec::Functions;
use File::Spec;
use strict;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
index 926a5dd..d920d2f 100644
--- a/lib/File/Spec/Mac.pm
+++ b/lib/File/Spec/Mac.pm
@@ -4,7 +4,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
index 4404fe8..603781a 100644
--- a/lib/File/Spec/OS2.pm
+++ b/lib/File/Spec/OS2.pm
@@ -4,7 +4,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
index cd29f76..6749e60 100644
--- a/lib/File/Spec/Unix.pm
+++ b/lib/File/Spec/Unix.pm
@@ -3,7 +3,7 @@ package File::Spec::Unix;
use strict;
use Cwd ();
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
=head1 NAME
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
index 0cf0e28..5934010 100644
--- a/lib/File/Spec/Win32.pm
+++ b/lib/File/Spec/Win32.pm
@@ -5,7 +5,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.75';
+our $VERSION = '3.78';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
@@ -137,7 +137,7 @@ sub catfile {
# Legacy / compatibility support
#
shift, return _canon_cat( "/", @_ )
- if $_[0] eq "";
+ if !@_ || $_[0] eq "";
# Compatibility with File::Spec <= 3.26:
# catfile('A:', 'foo') should return 'A:\foo'.
@@ -407,16 +407,6 @@ sub _canon_cat # @path -> path
)+ # performance boost -- I do not know why
}{\\}gx;
- # XXX I do not know whether more dots are supported by the OS supporting
- # this ... annotation (NetWare or symbian but not MSWin32).
- # Then .... could easily become ../../.. etc:
- # Replace \.\.\. by (\.\.\.+) and substitute with
- # { $1 . ".." . "\\.." x (length($2)-2) }gex
- # ... --> ../..
- $path =~ s{ (\A|\\) # at begin or after a slash
- \.\.\.
- (?=\\|\z) # at end or followed by slash
- }{$1..\\..}gx;
# xx\yy\..\zz --> xx\zz
while ( $path =~ s{(?:
(?:\A|\\) # at begin or after a slash
diff --git a/t/Spec.t b/t/Spec.t
index 1b26190..c953391 100644
--- a/t/Spec.t
+++ b/t/Spec.t
@@ -277,9 +277,9 @@ my @tests = (
[ "Win32->canonpath('//a/b/../../c')", '\\\\a\\b\\c' ],
[ "Win32->canonpath('//a/b/c/../d')", '\\\\a\\b\\d' ],
[ "Win32->canonpath('//a/b/c/../../d')",'\\\\a\\b\\d' ],
-[ "Win32->canonpath('//a/b/c/.../d')", '\\\\a\\b\\d' ],
+[ "Win32->canonpath('//a/b/c/.../d')", '\\\\a\\b\\c\\...\\d' ],
[ "Win32->canonpath('/a/b/c/../../d')", '\\a\\d' ],
-[ "Win32->canonpath('/a/b/c/.../d')", '\\a\\d' ],
+[ "Win32->canonpath('/a/b/c/.../d')", '\\a\\b\\c\\...\\d' ],
[ "Win32->canonpath('\\../temp\\')", '\\temp' ],
[ "Win32->canonpath('\\../')", '\\' ],
[ "Win32->canonpath('\\..\\')", '\\' ],
diff --git a/t/cwd.t b/t/cwd.t
index 483b437..c056938 100644
--- a/t/cwd.t
+++ b/t/cwd.t
@@ -10,6 +10,7 @@ chdir 't';
use Config;
use File::Spec;
use File::Path;
+use Errno qw(EACCES);
use lib File::Spec->catdir('t', 'lib');
use Test::More;
@@ -208,7 +209,15 @@ SKIP: {
like($abs_path, qr|$want$|i, "Cwd::abs_path produced $abs_path");
like($fast_abs_path, qr|$want$|i, "Cwd::fast_abs_path produced $fast_abs_path");
- like($pas, qr|$want$|i, "Cwd::_perl_abs_path produced $pas") if $EXTRA_ABSPATH_TESTS;
+ if ($EXTRA_ABSPATH_TESTS) {
+ # _perl_abs_path() can fail if some ancestor directory isn't readable
+ if (defined $pas) {
+ like($pas, qr|$want$|i, "Cwd::_perl_abs_path produced $pas");
+ }
+ else {
+ is($!+0, EACCES, "check we got the expected error on failure");
+ }
+ }
rmtree($test_dirs[0], 0, 0);
1 while unlink $file;
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
index 8f3a1fb..510c65e 100644
--- a/t/cwd_enoent.t
+++ b/t/cwd_enoent.t
@@ -2,7 +2,7 @@ use warnings;
use strict;
use Config;
-use Errno qw(ENOENT);
+use Errno qw();
use File::Temp qw(tempdir);
use Test::More;
@@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){
plan tests => 8;
require Cwd;
+my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ()));
foreach my $type (qw(regular perl)) {
SKIP: {
skip "_perl_abs_path() not expected to work", 4
@@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) {
$res = Cwd::getcwd();
$eno = 0+$!;
is $res, undef, "$type getcwd result on non-existent directory";
- is $eno, ENOENT, "$type getcwd errno on non-existent directory";
+ ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory")
+ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos);
$! = 0;
$res = Cwd::abs_path(".");
$eno = 0+$!;
is $res, undef, "$type abs_path result on non-existent directory";
- is $eno, ENOENT, "$type abs_path errno on non-existent directory";
+ ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory")
+ or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos);
}
}
--
2.20.1

View File

@ -1,39 +1,37 @@
%global base_version 3.62
%global base_version 3.75
Name: perl-PathTools
Version: 3.63
Release: 368%{?dist}
Version: 3.78
Release: 439%{?dist}
Summary: PathTools Perl module (Cwd, File::Spec)
# Cwd.xs: BSD
# other files: GPL+ or Artistic
## Not in the binary package
# t/lib/Test/Tutorial.pod: (GPL+ or Artistic) and Public Domain
License: (GPL+ or Artistic) and BSD
Group: Development/Libraries
URL: http://search.cpan.org/dist/PathTools/
Source0: http://www.cpan.org/authors/id/R/RJ/RJBS/PathTools-%{base_version}.tar.gz
# Disable VMS test (bug #973713)
Patch0: PathTools-3.47-Disable-VMS-tests.patch
# Unbundled from perl 5.24.0
Patch1: PathTools-3.62-Upgrade-to-3.63.patch
# Avoid loading optional modules from default . (CVE-2016-1238)
Patch2: PathTools-3.63-CVE-2016-1238-avoid-loading-optional-modules-from.patch
URL: https://metacpan.org/release/PathTools
Source0: https://cpan.metacpan.org/authors/id/X/XS/XSAWYERX/PathTools-%{base_version}.tar.gz
# Disable VMS tests (bug #973713)
Patch0: PathTools-3.74-Disable-VMS-tests.patch
# Unbundled from perl 5.29.10
Patch1: PathTools-3.75-Upgrade-to-3.78.patch
BuildRequires: coreutils
BuildRequires: findutils
BuildRequires: gcc
BuildRequires: make
BuildRequires: perl
BuildRequires: perl-devel
BuildRequires: perl-generators
BuildRequires: perl(ExtUtils::MakeMaker)
BuildRequires: perl-interpreter
BuildRequires: perl(ExtUtils::MakeMaker) >= 6.76
BuildRequires: sed
# Run-time:
BuildRequires: perl(Carp)
BuildRequires: perl(constant)
BuildRequires: perl(Errno)
BuildRequires: perl(Exporter)
# File::Basename not needed because of removed File::Spec::VMS
BuildRequires: perl(Scalar::Util)
BuildRequires: perl(strict)
BuildRequires: perl(vars)
# Optional run-time:
BuildRequires: perl(XSLoader)
# Tests:
BuildRequires: perl(Carp::Heavy)
BuildRequires: perl(Config)
@ -41,9 +39,14 @@ BuildRequires: perl(File::Path)
BuildRequires: perl(File::Temp)
BuildRequires: perl(lib)
BuildRequires: perl(Test::More) >= 0.88
BuildRequires: perl(warnings)
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires: perl(Carp)
Requires: perl(Errno)
Requires: perl(Scalar::Util)
# XSLoader is optional only because miniperl does not support XS. With perl we
# almost certainly want it.
Recommends: perl(XSLoader)
%{?perl_default_filter}
@ -54,39 +57,69 @@ This is the combined distribution for the File::Spec and Cwd modules.
%setup -q -n PathTools-%{base_version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
# Do not distribute File::Spec::VMS as it works on VMS only (bug #973713)
rm lib/File/Spec/VMS.pm
sed -i -e '/^lib\/File\/Spec\/VMS.pm/d' MANIFEST
# Remove bundled modules
rm -rf t/lib
sed -i -e '/t\/lib\//d' MANIFEST
%build
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS"
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 OPTIMIZE="$RPM_OPT_FLAGS"
make %{?_smp_mflags}
%install
make pure_install DESTDIR=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -exec rm -f {} \;
find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -delete
%{_fixperms} $RPM_BUILD_ROOT/*
%check
make test
%files
%doc Changes README
%doc Changes
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/Cwd.pm
%{perl_vendorarch}/File/
%{_mandir}/man3/*
%changelog
* Fri Mar 29 2019 Jitka Plesnikova <jplesnik@redhat.com> - 3.63-368
- Rebuild with enable hardening (bug #1636329)
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.78-439
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Thu May 30 2019 Jitka Plesnikova <jplesnik@redhat.com> - 3.78-438
- Increase release to favour standalone package
* Thu Apr 25 2019 Jitka Plesnikova <jplesnik@redhat.com> - 3.78-1
- Upgrade to 3.78 as provided in perl-5.29.10
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.75-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Aug 30 2018 Petr Pisar <ppisar@redhat.com> - 3.75-1
- 3.75 bump
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.74-417
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Jun 27 2018 Jitka Plesnikova <jplesnik@redhat.com> - 3.74-416
- Increase release to favour standalone package
* Mon Feb 19 2018 Petr Pisar <ppisar@redhat.com> - 3.74-1
- 3.74 bump
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.67-396
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.67-395
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.67-394
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Jun 03 2017 Jitka Plesnikova <jplesnik@redhat.com> - 3.67-393
- Perl 5.26 rebuild
* Thu May 11 2017 Petr Pisar <ppisar@redhat.com> - 3.67-1
- Upgrade to 3.67 as provided in perl-5.25.12
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.63-367
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild