Compare commits
No commits in common. 'c9' and 'c10-beta' have entirely different histories.
@ -0,0 +1,278 @@
|
|||||||
|
From 2aa3d01bca010903b9cdb848e61ca45f84ce6bcf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jitka Plesnikova <jplesnik@redhat.com>
|
||||||
|
Date: Thu, 6 May 2021 08:31:26 +0200
|
||||||
|
Subject: [PATCH] Upgrade to 3.80
|
||||||
|
|
||||||
|
---
|
||||||
|
Cwd.pm | 2 +-
|
||||||
|
Cwd.xs | 24 +++--
|
||||||
|
META.json | 2 +-
|
||||||
|
META.yml | 2 +-
|
||||||
|
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 | 4 +-
|
||||||
|
t/cwd.t | 4 +
|
||||||
|
t/cwd_enoent.t | 2 +
|
||||||
|
16 files changed, 232 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Cwd.pm b/Cwd.pm
|
||||||
|
index 9b173c2..6a1d2f1 100644
|
||||||
|
--- a/Cwd.pm
|
||||||
|
+++ b/Cwd.pm
|
||||||
|
@@ -3,7 +3,7 @@ use strict;
|
||||||
|
use Exporter;
|
||||||
|
|
||||||
|
|
||||||
|
-our $VERSION = '3.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
my $xs_version = $VERSION;
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
diff --git a/Cwd.xs b/Cwd.xs
|
||||||
|
index 8662400..223e1a6 100644
|
||||||
|
--- a/Cwd.xs
|
||||||
|
+++ b/Cwd.xs
|
||||||
|
@@ -84,6 +84,9 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
||||||
|
unsigned symlinks;
|
||||||
|
int serrno;
|
||||||
|
char remaining[MAXPATHLEN], next_token[MAXPATHLEN];
|
||||||
|
+#ifdef PERL_IMPLICIT_SYS
|
||||||
|
+ dTHX;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
serrno = errno;
|
||||||
|
symlinks = 0;
|
||||||
|
@@ -119,15 +122,24 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
||||||
|
|
||||||
|
p = strchr(remaining, '/');
|
||||||
|
s = p ? p : remaining + remaining_len;
|
||||||
|
+
|
||||||
|
if ((STRLEN)(s - remaining) >= (STRLEN)sizeof(next_token)) {
|
||||||
|
errno = ENAMETOOLONG;
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
memcpy(next_token, remaining, s - remaining);
|
||||||
|
next_token[s - remaining] = '\0';
|
||||||
|
- remaining_len -= s - remaining;
|
||||||
|
- if (p != NULL)
|
||||||
|
- memmove(remaining, s + 1, remaining_len + 1);
|
||||||
|
+
|
||||||
|
+ /* shift first component off front of path, including '/' */
|
||||||
|
+ if (p) {
|
||||||
|
+ s++; /* skip '/' */
|
||||||
|
+ remaining_len -= s - remaining;
|
||||||
|
+ /* the +1 includes the trailing '\0' */
|
||||||
|
+ memmove(remaining, s, remaining_len + 1);
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ remaining_len = 0;
|
||||||
|
+
|
||||||
|
if (resolved[resolved_len - 1] != '/') {
|
||||||
|
if (resolved_len + 1 >= MAXPATHLEN) {
|
||||||
|
errno = ENAMETOOLONG;
|
||||||
|
@@ -166,8 +178,8 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
||||||
|
}
|
||||||
|
#if defined(HAS_LSTAT) && defined(HAS_READLINK) && defined(HAS_SYMLINK)
|
||||||
|
{
|
||||||
|
- struct stat sb;
|
||||||
|
- if (lstat(resolved, &sb) != 0) {
|
||||||
|
+ Stat_t sb;
|
||||||
|
+ if (PerlLIO_lstat(resolved, &sb) != 0) {
|
||||||
|
if (errno == ENOENT && p == NULL) {
|
||||||
|
errno = serrno;
|
||||||
|
return (resolved);
|
||||||
|
@@ -182,7 +194,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
||||||
|
errno = ELOOP;
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
- slen = readlink(resolved, symlink, sizeof(symlink) - 1);
|
||||||
|
+ slen = PerlLIO_readlink(resolved, symlink, sizeof(symlink) - 1);
|
||||||
|
if (slen < 0)
|
||||||
|
return (NULL);
|
||||||
|
symlink[slen] = '\0';
|
||||||
|
diff --git a/META.json b/META.json
|
||||||
|
index e41b849..ad429a5 100644
|
||||||
|
--- a/META.json
|
||||||
|
+++ b/META.json
|
||||||
|
@@ -50,6 +50,6 @@
|
||||||
|
"url" : "git://perl5.git.perl.org/perl.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
- "version" : "3.75",
|
||||||
|
+ "version" : "3.73",
|
||||||
|
"x_serialization_backend" : "JSON::PP version 2.27400_02"
|
||||||
|
}
|
||||||
|
diff --git a/META.yml b/META.yml
|
||||||
|
index c53f36e..c2adfcf 100644
|
||||||
|
--- a/META.yml
|
||||||
|
+++ b/META.yml
|
||||||
|
@@ -26,5 +26,5 @@ resources:
|
||||||
|
bugtracker: https://rt.perl.org/rt3/
|
||||||
|
homepage: http://dev.perl.org/
|
||||||
|
repository: git://perl5.git.perl.org/perl.git
|
||||||
|
-version: '3.75'
|
||||||
|
+version: '3.73'
|
||||||
|
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
|
||||||
|
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
|
||||||
|
index 7fe3272..30d883b 100644
|
||||||
|
--- a/lib/File/Spec.pm
|
||||||
|
+++ b/lib/File/Spec.pm
|
||||||
|
@@ -2,7 +2,7 @@ package File::Spec;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
-our $VERSION = '3.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
my %module = (
|
||||||
|
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
|
||||||
|
index 2b7d18a..fd9da81 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
|
||||||
|
index d44ced3..953c233 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
|
||||||
|
index b611cd9..fcb9e89 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require File::Spec::Unix;
|
||||||
|
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
|
||||||
|
index 3f617bd..e14ad2f 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require Exporter;
|
||||||
|
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
|
||||||
|
index d920d2f..8026edc 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
|
||||||
|
index 603781a..3c35ba9 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
|
||||||
|
index 6749e60..c06d18f 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
|
||||||
|
index 5934010..1537442 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.78';
|
||||||
|
+our $VERSION = '3.80';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
@@ -84,7 +84,7 @@ sub tmpdir {
|
||||||
|
MSWin32 case-tolerance depends on GetVolumeInformation() $ouFsFlags == FS_CASE_SENSITIVE,
|
||||||
|
indicating the case significance when comparing file specifications.
|
||||||
|
Since XP FS_CASE_SENSITIVE is effectively disabled for the NT subsubsystem.
|
||||||
|
-See http://cygwin.com/ml/cygwin/2007-07/msg00891.html
|
||||||
|
+See L<http://cygwin.com/ml/cygwin/2007-07/msg00891.html>
|
||||||
|
Default: 1
|
||||||
|
|
||||||
|
=cut
|
||||||
|
diff --git a/t/cwd.t b/t/cwd.t
|
||||||
|
index c056938..d155e33 100644
|
||||||
|
--- a/t/cwd.t
|
||||||
|
+++ b/t/cwd.t
|
||||||
|
@@ -187,6 +187,10 @@ rmtree($test_dirs[0], 0, 0);
|
||||||
|
SKIP: {
|
||||||
|
skip "no symlinks on this platform", 2+$EXTRA_ABSPATH_TESTS unless $Config{d_symlink} && $^O !~ m!^(qnx|nto)!;
|
||||||
|
|
||||||
|
+ # on Win32 GetCurrentDirectory() includes the symlink if
|
||||||
|
+ # you chdir() to a path including the symlink.
|
||||||
|
+ skip "Win32 symlinks are unusual", 2+$EXTRA_ABSPATH_TESTS if $^O eq "MSWin32";
|
||||||
|
+
|
||||||
|
my $file = "linktest";
|
||||||
|
mkpath([$Test_Dir], 0, 0777);
|
||||||
|
symlink $Test_Dir, $file;
|
||||||
|
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
|
||||||
|
index 510c65e..2e94bad 100644
|
||||||
|
--- a/t/cwd_enoent.t
|
||||||
|
+++ b/t/cwd_enoent.t
|
||||||
|
@@ -26,6 +26,8 @@ foreach my $type (qw(regular perl)) {
|
||||||
|
if $type eq "perl" &&
|
||||||
|
!(($Config{prefix} =~ m/\//) && $^O ne "cygwin");
|
||||||
|
|
||||||
|
+ # https://github.com/Perl/perl5/issues/16525
|
||||||
|
+ # https://bugs.dragonflybsd.org/issues/3250
|
||||||
|
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
|
||||||
|
if $type eq 'regular' && $^O eq 'dragonfly';
|
||||||
|
|
||||||
|
--
|
||||||
|
2.30.2
|
||||||
|
|
@ -0,0 +1,371 @@
|
|||||||
|
From 29821ef8025dddc95c122e87afb09d5b3a5ef6ed Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jitka Plesnikova <jplesnik@redhat.com>
|
||||||
|
Date: Thu, 12 May 2022 10:53:47 +0200
|
||||||
|
Subject: [PATCH] Upgrade to 3.84
|
||||||
|
|
||||||
|
---
|
||||||
|
Changes | 30 ++++++++++++++++++++++++++
|
||||||
|
Cwd.pm | 43 ++++++++++----------------------------
|
||||||
|
Cwd.xs | 4 ++++
|
||||||
|
Makefile.PL | 2 +-
|
||||||
|
lib/File/Spec.pm | 4 ++--
|
||||||
|
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 | 4 ++--
|
||||||
|
lib/File/Spec/Win32.pm | 2 +-
|
||||||
|
t/cwd_enoent.t | 3 +++
|
||||||
|
14 files changed, 60 insertions(+), 44 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Changes b/Changes
|
||||||
|
index 7f04db2..9533c1f 100644
|
||||||
|
--- a/Changes
|
||||||
|
+++ b/Changes
|
||||||
|
@@ -1,5 +1,35 @@
|
||||||
|
Revision history for Perl distribution PathTools.
|
||||||
|
|
||||||
|
+3.81
|
||||||
|
+
|
||||||
|
+- compare inode numbers as strings (github #18788)
|
||||||
|
+
|
||||||
|
+3.80
|
||||||
|
+
|
||||||
|
+- use the PerlLIO_*() functions for lstat() and readlink() to support
|
||||||
|
+ Win32 symlink support added to perl.
|
||||||
|
+
|
||||||
|
+- skip a test that assumes getcwd() doesn't return symlinks on Win32, where
|
||||||
|
+ it can.
|
||||||
|
+
|
||||||
|
+3.79
|
||||||
|
+
|
||||||
|
+- fix an off-by-one in bsd_realpath()
|
||||||
|
+
|
||||||
|
+3.78
|
||||||
|
+
|
||||||
|
+- fallback to Internals::getcwd() for getcwd() if available (requires
|
||||||
|
+ $Config{d_getcwd})
|
||||||
|
+
|
||||||
|
+3.77
|
||||||
|
+
|
||||||
|
+- don't translate "..." to "..\.." on Win32
|
||||||
|
+
|
||||||
|
+3.76
|
||||||
|
+
|
||||||
|
+- test t/cwd_enoent.t - also accept ESTALE for a directory that no
|
||||||
|
+ longer exists (github #16699)
|
||||||
|
+
|
||||||
|
3.75
|
||||||
|
- Fix t/abs2rel.t on 5.8.8 by changing mkpath call to be
|
||||||
|
compatible with older File::Path
|
||||||
|
diff --git a/Cwd.pm b/Cwd.pm
|
||||||
|
index 6a1d2f1..0683583 100644
|
||||||
|
--- a/Cwd.pm
|
||||||
|
+++ b/Cwd.pm
|
||||||
|
@@ -3,7 +3,7 @@ use strict;
|
||||||
|
use Exporter;
|
||||||
|
|
||||||
|
|
||||||
|
-our $VERSION = '3.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
my $xs_version = $VERSION;
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
@@ -181,12 +181,6 @@ if ($^O =~ /android/) {
|
||||||
|
}
|
||||||
|
|
||||||
|
my $found_pwd_cmd = defined($pwd_cmd);
|
||||||
|
-unless ($pwd_cmd) {
|
||||||
|
- # Isn't this wrong? _backtick_pwd() will fail if someone has
|
||||||
|
- # pwd in their path but it is not /bin/pwd or /usr/bin/pwd?
|
||||||
|
- # See [perl #16774]. --jhi
|
||||||
|
- $pwd_cmd = 'pwd';
|
||||||
|
-}
|
||||||
|
|
||||||
|
# Lazy-load Carp
|
||||||
|
sub _carp { require Carp; Carp::carp(@_) }
|
||||||
|
@@ -213,26 +207,13 @@ sub _backtick_pwd {
|
||||||
|
# we take care not to override an existing definition for cwd().
|
||||||
|
|
||||||
|
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} || ':';
|
||||||
|
- my $os = $^O; # Protect $^O from tainting
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- # Try again to find a pwd, this time searching the whole PATH.
|
||||||
|
- if (defined $ENV{PATH} and $os ne 'MSWin32') { # no pwd on Windows
|
||||||
|
- my @candidates = split($sep, $ENV{PATH});
|
||||||
|
- while (!$found_pwd_cmd and @candidates) {
|
||||||
|
- my $candidate = shift @candidates;
|
||||||
|
- $found_pwd_cmd = 1 if -x "$candidate/pwd";
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
if( $found_pwd_cmd )
|
||||||
|
{
|
||||||
|
*cwd = \&_backtick_pwd;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- *cwd = \&getcwd;
|
||||||
|
+ # getcwd() might have an empty prototype
|
||||||
|
+ *cwd = sub { getcwd(); };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -275,7 +256,7 @@ sub fastcwd_ {
|
||||||
|
($odev, $oino) = ($cdev, $cino);
|
||||||
|
CORE::chdir('..') || return undef;
|
||||||
|
($cdev, $cino) = stat('.');
|
||||||
|
- last if $odev == $cdev && $oino == $cino;
|
||||||
|
+ last if $odev == $cdev && $oino eq $cino;
|
||||||
|
opendir(DIR, '.') || return undef;
|
||||||
|
for (;;) {
|
||||||
|
$direntry = readdir(DIR);
|
||||||
|
@@ -284,7 +265,7 @@ sub fastcwd_ {
|
||||||
|
next if $direntry eq '..';
|
||||||
|
|
||||||
|
($tdev, $tino) = lstat($direntry);
|
||||||
|
- last unless $tdev != $odev || $tino != $oino;
|
||||||
|
+ last unless $tdev != $odev || $tino ne $oino;
|
||||||
|
}
|
||||||
|
closedir(DIR);
|
||||||
|
return undef unless defined $direntry; # should never happen
|
||||||
|
@@ -298,7 +279,7 @@ sub fastcwd_ {
|
||||||
|
&& CORE::chdir($1) or return undef;
|
||||||
|
($cdev, $cino) = stat('.');
|
||||||
|
die "Unstable directory path, current directory changed unexpectedly"
|
||||||
|
- if $cdev != $orig_cdev || $cino != $orig_cino;
|
||||||
|
+ if $cdev != $orig_cdev || $cino ne $orig_cino;
|
||||||
|
$path;
|
||||||
|
}
|
||||||
|
if (not defined &fastcwd) { *fastcwd = \&fastcwd_ }
|
||||||
|
@@ -315,7 +296,7 @@ sub chdir_init {
|
||||||
|
if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') {
|
||||||
|
my($dd,$di) = stat('.');
|
||||||
|
my($pd,$pi) = stat($ENV{'PWD'});
|
||||||
|
- if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
|
||||||
|
+ if (!defined $dd or !defined $pd or $di ne $pi or $dd != $pd) {
|
||||||
|
$ENV{'PWD'} = cwd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -328,7 +309,7 @@ sub chdir_init {
|
||||||
|
if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) {
|
||||||
|
my($pd,$pi) = stat($2);
|
||||||
|
my($dd,$di) = stat($1);
|
||||||
|
- if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
|
||||||
|
+ if (defined $pd and defined $dd and $di ne $pi and $dd == $pd) {
|
||||||
|
$ENV{'PWD'}="$2$3";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -430,7 +411,7 @@ sub _perl_abs_path
|
||||||
|
$! = $e;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
- if ($pst[0] == $cst[0] && $pst[1] == $cst[1])
|
||||||
|
+ if ($pst[0] == $cst[0] && $pst[1] eq $cst[1])
|
||||||
|
{
|
||||||
|
$dir = undef;
|
||||||
|
}
|
||||||
|
@@ -448,7 +429,7 @@ sub _perl_abs_path
|
||||||
|
$tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir"))
|
||||||
|
}
|
||||||
|
while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] ||
|
||||||
|
- $tst[1] != $pst[1]);
|
||||||
|
+ $tst[1] ne $pst[1]);
|
||||||
|
}
|
||||||
|
$cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ;
|
||||||
|
closedir(PARENT);
|
||||||
|
@@ -820,9 +801,7 @@ C<fast_abs_path()>.
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
-Originally by the perl5-porters.
|
||||||
|
-
|
||||||
|
-Maintained by Ken Williams <KWILLIAMS@cpan.org>
|
||||||
|
+Maintained by perl5-porters <F<perl5-porters@perl.org>>.
|
||||||
|
|
||||||
|
=head1 COPYRIGHT
|
||||||
|
|
||||||
|
diff --git a/Cwd.xs b/Cwd.xs
|
||||||
|
index 223e1a6..4fda057 100644
|
||||||
|
--- a/Cwd.xs
|
||||||
|
+++ b/Cwd.xs
|
||||||
|
@@ -15,6 +15,10 @@
|
||||||
|
# include "ppport.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if defined(HAS_READLINK) && !defined(PerlLIO_readlink)
|
||||||
|
+#define PerlLIO_readlink readlink
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef I_UNISTD
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
diff --git a/Makefile.PL b/Makefile.PL
|
||||||
|
index 11e04af..0311708 100644
|
||||||
|
--- a/Makefile.PL
|
||||||
|
+++ b/Makefile.PL
|
||||||
|
@@ -16,7 +16,7 @@ push @extra, 'LICENSE' => 'perl_5'
|
||||||
|
push @extra, 'META_MERGE' => {
|
||||||
|
resources => {
|
||||||
|
repository => 'git://perl5.git.perl.org/perl.git',
|
||||||
|
- bugtracker => 'https://rt.perl.org/rt3/',
|
||||||
|
+ bugtracker => 'https://github.com/Perl/perl5/issues',
|
||||||
|
homepage => "http://dev.perl.org/",
|
||||||
|
license => [ 'http://dev.perl.org/licenses/' ],
|
||||||
|
},
|
||||||
|
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
|
||||||
|
index 30d883b..e0a49ed 100644
|
||||||
|
--- a/lib/File/Spec.pm
|
||||||
|
+++ b/lib/File/Spec.pm
|
||||||
|
@@ -2,7 +2,7 @@ package File::Spec;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
-our $VERSION = '3.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
my %module = (
|
||||||
|
@@ -316,7 +316,7 @@ L<ExtUtils::MakeMaker>
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
-Currently maintained by Ken Williams C<< <KWILLIAMS@cpan.org> >>.
|
||||||
|
+Maintained by perl5-porters <F<perl5-porters@perl.org>>.
|
||||||
|
|
||||||
|
The vast majority of the code was written by
|
||||||
|
Kenneth Albanowski C<< <kjahds@kjahds.com> >>,
|
||||||
|
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
|
||||||
|
index fd9da81..a29617c 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
|
||||||
|
index 953c233..e21c0bb 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
|
||||||
|
index fcb9e89..2429bb2 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require File::Spec::Unix;
|
||||||
|
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
|
||||||
|
index e14ad2f..a09150c 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require Exporter;
|
||||||
|
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
|
||||||
|
index 8026edc..369d1f0 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
|
||||||
|
index 3c35ba9..604e2e3 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
|
||||||
|
index c06d18f..52904b4 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
@@ -530,7 +530,7 @@ 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.
|
||||||
|
|
||||||
|
-Please submit bug reports and patches to perlbug@perl.org.
|
||||||
|
+Please submit bug reports at L<https://github.com/Perl/perl5/issues>.
|
||||||
|
|
||||||
|
=head1 SEE ALSO
|
||||||
|
|
||||||
|
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
|
||||||
|
index 1537442..b05b535 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.80';
|
||||||
|
+our $VERSION = '3.84';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
|
||||||
|
index 2e94bad..0fe3834 100644
|
||||||
|
--- a/t/cwd_enoent.t
|
||||||
|
+++ b/t/cwd_enoent.t
|
||||||
|
@@ -31,6 +31,9 @@ foreach my $type (qw(regular perl)) {
|
||||||
|
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
|
||||||
|
if $type eq 'regular' && $^O eq 'dragonfly';
|
||||||
|
|
||||||
|
+ skip "getcwd() doesn't fail on non-existent directories on this platform", 4
|
||||||
|
+ if $type eq 'regular' && $^O eq 'haiku';
|
||||||
|
+
|
||||||
|
no warnings "redefine";
|
||||||
|
local *Cwd::abs_path = \&Cwd::_perl_abs_path if $type eq "perl";
|
||||||
|
local *Cwd::getcwd = \&Cwd::_perl_getcwd if $type eq "perl";
|
||||||
|
--
|
||||||
|
2.34.3
|
||||||
|
|
@ -0,0 +1,345 @@
|
|||||||
|
From ebaf4e0e48c6e881818d8759470f227d4e15abca Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jitka Plesnikova <jplesnik@redhat.com>
|
||||||
|
Date: Thu, 18 May 2023 14:28:48 +0200
|
||||||
|
Subject: [PATCH] Upgrade to 3.89
|
||||||
|
|
||||||
|
---
|
||||||
|
Changes | 24 +++++
|
||||||
|
Cwd.pm | 10 +-
|
||||||
|
Cwd.xs | 18 ++--
|
||||||
|
META.json | 2 +-
|
||||||
|
META.yml | 2 +-
|
||||||
|
Makefile.PL | 5 +-
|
||||||
|
lib/File/Spec.pm | 6 +-
|
||||||
|
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 | 2 +-
|
||||||
|
t/Spec.t | 196 ++++++++++++++++++++++++++++++++++++-
|
||||||
|
t/cwd_enoent.t | 4 +-
|
||||||
|
t/tmpdir.t | 2 +-
|
||||||
|
18 files changed, 254 insertions(+), 31 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Changes b/Changes
|
||||||
|
index 9533c1f..47e172a 100644
|
||||||
|
--- a/Changes
|
||||||
|
+++ b/Changes
|
||||||
|
@@ -1,5 +1,29 @@
|
||||||
|
Revision history for Perl distribution PathTools.
|
||||||
|
|
||||||
|
+3.87-3.88
|
||||||
|
+
|
||||||
|
+- Fix handling of empty path, VMS fixes.
|
||||||
|
+
|
||||||
|
+3.86
|
||||||
|
+
|
||||||
|
+- Fix compilation warning on illumos based platforms
|
||||||
|
+
|
||||||
|
+3.85
|
||||||
|
+
|
||||||
|
+- Fix issue related to tainting empty PATH
|
||||||
|
+
|
||||||
|
+3.84
|
||||||
|
+
|
||||||
|
+- Add PerlIO_readlink backcompat defines to Cws.xs
|
||||||
|
+
|
||||||
|
+3.83
|
||||||
|
+
|
||||||
|
+- More bugtracker changes, document maintainer is the Perl-5 Porters
|
||||||
|
+
|
||||||
|
+3.82
|
||||||
|
+
|
||||||
|
+- Change to build so bugreports go to GitHub
|
||||||
|
+
|
||||||
|
3.81
|
||||||
|
|
||||||
|
- compare inode numbers as strings (github #18788)
|
||||||
|
diff --git a/Cwd.pm b/Cwd.pm
|
||||||
|
index 0683583..dbf08a6 100644
|
||||||
|
--- a/Cwd.pm
|
||||||
|
+++ b/Cwd.pm
|
||||||
|
@@ -3,7 +3,7 @@ use strict;
|
||||||
|
use Exporter;
|
||||||
|
|
||||||
|
|
||||||
|
-our $VERSION = '3.84';
|
||||||
|
+our $VERSION = '3.89';
|
||||||
|
my $xs_version = $VERSION;
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
@@ -192,8 +192,14 @@ sub _backtick_pwd {
|
||||||
|
# Localize %ENV entries in a way that won't create new hash keys.
|
||||||
|
# Under AmigaOS we don't want to localize as it stops perl from
|
||||||
|
# finding 'sh' in the PATH.
|
||||||
|
- my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos";
|
||||||
|
+ my @localize = grep exists $ENV{$_}, qw(IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos";
|
||||||
|
local @ENV{@localize} if @localize;
|
||||||
|
+ # empty PATH is the same as "." on *nix, so localize it to /something/
|
||||||
|
+ # we won't *use* the path as code above turns $pwd_cmd into a specific
|
||||||
|
+ # executable, but it will blow up anyway under taint. We could set it to
|
||||||
|
+ # anything absolute. Perhaps "/" would be better.
|
||||||
|
+ local $ENV{PATH}= "/usr/bin"
|
||||||
|
+ if $^O ne "amigaos";
|
||||||
|
|
||||||
|
my $cwd = `$pwd_cmd`;
|
||||||
|
# Belt-and-suspenders in case someone said "undef $/".
|
||||||
|
diff --git a/Cwd.xs b/Cwd.xs
|
||||||
|
index 4fda057..ca8639d 100644
|
||||||
|
--- a/Cwd.xs
|
||||||
|
+++ b/Cwd.xs
|
||||||
|
@@ -7,13 +7,11 @@
|
||||||
|
#include "EXTERN.h"
|
||||||
|
#include "perl.h"
|
||||||
|
#include "XSUB.h"
|
||||||
|
-#ifndef NO_PPPORT_H
|
||||||
|
-# define NEED_croak_xs_usage
|
||||||
|
-# define NEED_sv_2pv_flags
|
||||||
|
-# define NEED_my_strlcpy
|
||||||
|
-# define NEED_my_strlcat
|
||||||
|
-# include "ppport.h"
|
||||||
|
-#endif
|
||||||
|
+#define NEED_croak_xs_usage
|
||||||
|
+#define NEED_sv_2pv_flags
|
||||||
|
+#define NEED_my_strlcpy
|
||||||
|
+#define NEED_my_strlcat
|
||||||
|
+#include "ppport.h"
|
||||||
|
|
||||||
|
#if defined(HAS_READLINK) && !defined(PerlLIO_readlink)
|
||||||
|
#define PerlLIO_readlink readlink
|
||||||
|
@@ -24,8 +22,10 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For special handling of os390 sysplexed systems */
|
||||||
|
+#ifdef OS390
|
||||||
|
#define SYSNAME "$SYSNAME"
|
||||||
|
#define SYSNAME_LEN (sizeof(SYSNAME) - 1)
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* The realpath() implementation from OpenBSD 3.9 to 4.2 (realpath.c 1.13)
|
||||||
|
* Renamed here to bsd_realpath() to avoid library conflicts.
|
||||||
|
@@ -202,7 +202,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
||||||
|
if (slen < 0)
|
||||||
|
return (NULL);
|
||||||
|
symlink[slen] = '\0';
|
||||||
|
-# ifdef EBCDIC /* XXX Probably this should be only os390 */
|
||||||
|
+# ifdef OS390
|
||||||
|
/* Replace all instances of $SYSNAME/foo simply by /foo */
|
||||||
|
if (slen > SYSNAME_LEN + strlen(next_token)
|
||||||
|
&& strnEQ(symlink, SYSNAME, SYSNAME_LEN)
|
||||||
|
@@ -245,7 +245,7 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
||||||
|
}
|
||||||
|
remaining_len = my_strlcpy(remaining, symlink, sizeof(remaining));
|
||||||
|
}
|
||||||
|
-# ifdef EBCDIC
|
||||||
|
+# ifdef OS390
|
||||||
|
not_symlink: ;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
diff --git a/META.json b/META.json
|
||||||
|
index ad429a5..d810ba7 100644
|
||||||
|
--- a/META.json
|
||||||
|
+++ b/META.json
|
||||||
|
@@ -50,6 +50,6 @@
|
||||||
|
"url" : "git://perl5.git.perl.org/perl.git"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
- "version" : "3.73",
|
||||||
|
+ "version" : "3.86",
|
||||||
|
"x_serialization_backend" : "JSON::PP version 2.27400_02"
|
||||||
|
}
|
||||||
|
diff --git a/META.yml b/META.yml
|
||||||
|
index c2adfcf..f5e9fe3 100644
|
||||||
|
--- a/META.yml
|
||||||
|
+++ b/META.yml
|
||||||
|
@@ -26,5 +26,5 @@ resources:
|
||||||
|
bugtracker: https://rt.perl.org/rt3/
|
||||||
|
homepage: http://dev.perl.org/
|
||||||
|
repository: git://perl5.git.perl.org/perl.git
|
||||||
|
-version: '3.73'
|
||||||
|
+version: '3.86'
|
||||||
|
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
|
||||||
|
diff --git a/Makefile.PL b/Makefile.PL
|
||||||
|
index 0311708..754acbe 100644
|
||||||
|
--- a/Makefile.PL
|
||||||
|
+++ b/Makefile.PL
|
||||||
|
@@ -29,10 +29,7 @@ WriteMakefile
|
||||||
|
'VERSION_FROM' => 'Cwd.pm',
|
||||||
|
'ABSTRACT' => 'Tools for working with directory and file names',
|
||||||
|
'AUTHOR' => 'Perl 5 Porters',
|
||||||
|
- 'DEFINE' => join(" ",
|
||||||
|
- "-DDOUBLE_SLASHES_SPECIAL=@{[$^O eq q(qnx) || $^O eq q(nto) ? 1 : 0]}",
|
||||||
|
- ((grep { $_ eq 'PERL_CORE=1' } @ARGV) ? '-DNO_PPPORT_H' : ()),
|
||||||
|
- ),
|
||||||
|
+ 'DEFINE' => "-DDOUBLE_SLASHES_SPECIAL=@{[$^O eq q(qnx) || $^O eq q(nto) ? 1 : 0]}",
|
||||||
|
'PREREQ_PM' => {
|
||||||
|
'Carp' => '0',
|
||||||
|
'File::Basename' => '0',
|
||||||
|
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
|
||||||
|
index e0a49ed..fc10c0f 100644
|
||||||
|
--- a/lib/File/Spec.pm
|
||||||
|
+++ b/lib/File/Spec.pm
|
||||||
|
@@ -2,7 +2,7 @@ package File::Spec;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
-our $VERSION = '3.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
my %module = (
|
||||||
|
@@ -33,13 +33,13 @@ File::Spec - portably perform operations on file names
|
||||||
|
|
||||||
|
use File::Spec;
|
||||||
|
|
||||||
|
- $x=File::Spec->catfile('a', 'b', 'c');
|
||||||
|
+ my $x = File::Spec->catfile('a', 'b', 'c');
|
||||||
|
|
||||||
|
which returns 'a/b/c' under Unix. Or:
|
||||||
|
|
||||||
|
use File::Spec::Functions;
|
||||||
|
|
||||||
|
- $x = catfile('a', 'b', 'c');
|
||||||
|
+ my $x = catfile('a', 'b', 'c');
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
|
||||||
|
index a29617c..3fc3c98 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
|
||||||
|
index e21c0bb..fb3eaaa 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
|
||||||
|
index 2429bb2..9391f3a 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require File::Spec::Unix;
|
||||||
|
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
|
||||||
|
index a09150c..a0d8641 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require Exporter;
|
||||||
|
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
|
||||||
|
index 369d1f0..5f5cca9 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
|
||||||
|
index 604e2e3..eea5328 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
|
||||||
|
index 52904b4..2d5af10 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
|
||||||
|
index b05b535..292c2f8 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.84';
|
||||||
|
+our $VERSION = '3.88';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
|
||||||
|
index 0fe3834..05b30b3 100644
|
||||||
|
--- a/t/cwd_enoent.t
|
||||||
|
+++ b/t/cwd_enoent.t
|
||||||
|
@@ -28,8 +28,10 @@ foreach my $type (qw(regular perl)) {
|
||||||
|
|
||||||
|
# https://github.com/Perl/perl5/issues/16525
|
||||||
|
# https://bugs.dragonflybsd.org/issues/3250
|
||||||
|
+ my @vlist = ($Config{osvers} =~ /(\d+)/g);
|
||||||
|
+ my $osver = sprintf("%d%03d", map { defined() ? $_ : '0' } @vlist[0,1]);
|
||||||
|
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
|
||||||
|
- if $type eq 'regular' && $^O eq 'dragonfly';
|
||||||
|
+ if $type eq 'regular' && $^O eq 'dragonfly' && $osver < 6002;
|
||||||
|
|
||||||
|
skip "getcwd() doesn't fail on non-existent directories on this platform", 4
|
||||||
|
if $type eq 'regular' && $^O eq 'haiku';
|
||||||
|
diff --git a/t/tmpdir.t b/t/tmpdir.t
|
||||||
|
index 0f03dc5..aeff4fc 100644
|
||||||
|
--- a/t/tmpdir.t
|
||||||
|
+++ b/t/tmpdir.t
|
||||||
|
@@ -43,7 +43,7 @@ for ('File::Spec', "File::Spec::Win32") {
|
||||||
|
-d $ENV{TMPDIR} && -w _
|
||||||
|
or skip "Can't create usable TMPDIR env var", 1;
|
||||||
|
my $tmpdir2 = $_->tmpdir;
|
||||||
|
- isn't $tmpdir2, $tmpdir1, "$_->tmpdir works with changing env";
|
||||||
|
+ isnt $tmpdir2, $tmpdir1, "$_->tmpdir works with changing env";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -0,0 +1,193 @@
|
|||||||
|
From 0c5f0ea37e3c4d50f47c531bb32e184fa9c38980 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jitka Plesnikova <jplesnik@redhat.com>
|
||||||
|
Date: Thu, 9 May 2024 15:42:26 +0200
|
||||||
|
Subject: [PATCH] Upgrade to 3.91
|
||||||
|
|
||||||
|
---
|
||||||
|
Cwd.pm | 2 +-
|
||||||
|
Cwd.xs | 4 -
|
||||||
|
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 | 4 +-
|
||||||
|
lib/File/Spec/Mac.pm | 2 +-
|
||||||
|
lib/File/Spec/OS2.pm | 2 +-
|
||||||
|
lib/File/Spec/Unix.pm | 2 +-
|
||||||
|
lib/File/Spec/Win32.pm | 4 +-
|
||||||
|
t/Spec.t | 196 ++++++++++++++++++++++++++++++++++++-
|
||||||
|
12 files changed, 207 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Cwd.pm b/Cwd.pm
|
||||||
|
index dbf08a6..90013c9 100644
|
||||||
|
--- a/Cwd.pm
|
||||||
|
+++ b/Cwd.pm
|
||||||
|
@@ -3,7 +3,7 @@ use strict;
|
||||||
|
use Exporter;
|
||||||
|
|
||||||
|
|
||||||
|
-our $VERSION = '3.89';
|
||||||
|
+our $VERSION = '3.90';
|
||||||
|
my $xs_version = $VERSION;
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
diff --git a/Cwd.xs b/Cwd.xs
|
||||||
|
index ca8639d..bca575c 100644
|
||||||
|
--- a/Cwd.xs
|
||||||
|
+++ b/Cwd.xs
|
||||||
|
@@ -292,7 +292,6 @@ return FALSE
|
||||||
|
#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a)
|
||||||
|
int Perl_getcwd_sv(pTHX_ SV *sv)
|
||||||
|
{
|
||||||
|
-#ifndef PERL_MICRO
|
||||||
|
|
||||||
|
SvTAINTED_on(sv);
|
||||||
|
|
||||||
|
@@ -430,9 +429,6 @@ int Perl_getcwd_sv(pTHX_ SV *sv)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#else
|
||||||
|
- return FALSE;
|
||||||
|
-#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
diff --git a/lib/File/Spec.pm b/lib/File/Spec.pm
|
||||||
|
index fc10c0f..b2349be 100644
|
||||||
|
--- a/lib/File/Spec.pm
|
||||||
|
+++ b/lib/File/Spec.pm
|
||||||
|
@@ -2,7 +2,7 @@ package File::Spec;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
-our $VERSION = '3.88';
|
||||||
|
+our $VERSION = '3.90';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
my %module = (
|
||||||
|
diff --git a/lib/File/Spec/AmigaOS.pm b/lib/File/Spec/AmigaOS.pm
|
||||||
|
index 3fc3c98..c500d23 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Cygwin.pm b/lib/File/Spec/Cygwin.pm
|
||||||
|
index fb3eaaa..ef1c9ec 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Epoc.pm b/lib/File/Spec/Epoc.pm
|
||||||
|
index 9391f3a..1bc81f6 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require File::Spec::Unix;
|
||||||
|
diff --git a/lib/File/Spec/Functions.pm b/lib/File/Spec/Functions.pm
|
||||||
|
index a0d8641..6068506 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
require Exporter;
|
||||||
|
@@ -72,7 +72,7 @@ File::Spec::Functions - portably perform operations on file names
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
use File::Spec::Functions;
|
||||||
|
- $x = catfile('a','b');
|
||||||
|
+ my $x = catfile('a', 'b');
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
diff --git a/lib/File/Spec/Mac.pm b/lib/File/Spec/Mac.pm
|
||||||
|
index 5f5cca9..08d7fdb 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/OS2.pm b/lib/File/Spec/OS2.pm
|
||||||
|
index eea5328..d8533c0 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
diff --git a/lib/File/Spec/Unix.pm b/lib/File/Spec/Unix.pm
|
||||||
|
index 2d5af10..dbe36fb 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
diff --git a/lib/File/Spec/Win32.pm b/lib/File/Spec/Win32.pm
|
||||||
|
index 292c2f8..f9225e6 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.88';
|
||||||
|
+our $VERSION = '3.91';
|
||||||
|
$VERSION =~ tr/_//d;
|
||||||
|
|
||||||
|
our @ISA = qw(File::Spec::Unix);
|
||||||
|
@@ -249,7 +249,7 @@ Unlike just splitting the directories on the separator, leading empty and
|
||||||
|
trailing directory entries can be returned, because these are significant
|
||||||
|
on some OSs. So,
|
||||||
|
|
||||||
|
- File::Spec->splitdir( "/a/b/c" );
|
||||||
|
+ File::Spec->splitdir( "/a/b//c/" );
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
--
|
||||||
|
2.45.0
|
||||||
|
|
@ -1,76 +0,0 @@
|
|||||||
From c8c367581c3333c38d07481e2ea8d81171403c81 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Mitchell <davem@iabyn.com>
|
|
||||||
Date: Mon, 26 Oct 2020 15:11:14 +0000
|
|
||||||
Subject: [PATCH] PathTools/Cwd.xs: fix off-by-one in bsd_realpath()
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
At the heart of this function is a loop which repeatedly finds the next
|
|
||||||
component in the path, processes it, then chops that component off the
|
|
||||||
front of the path by shifting the string to the start of the buffer;
|
|
||||||
i.e. something like:
|
|
||||||
|
|
||||||
while (remaining_len) {
|
|
||||||
s = strchr(remaining, '/')
|
|
||||||
...
|
|
||||||
remaining_len -= s - remaining;
|
|
||||||
memmove(remaining, s, remaining_len + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
The problem is that the per-iteration decrement to remaining_len doesn't
|
|
||||||
take account of the '/' character, so each iteration, remaining_len gets
|
|
||||||
one more byte too big.
|
|
||||||
|
|
||||||
It turns out that this is harmless - it just means that more and more
|
|
||||||
garbage characters after the trailing null byte get copied each time,
|
|
||||||
but after each copy the path string is still well formed, with a
|
|
||||||
trailing null in the right place. So just the random garbage after the
|
|
||||||
null byte is different.
|
|
||||||
|
|
||||||
This commit fixes that.
|
|
||||||
|
|
||||||
Although really, it would be better to just increment the
|
|
||||||
start-of-string pointer each time rather than shift the whole string
|
|
||||||
each time.
|
|
||||||
|
|
||||||
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
||||||
---
|
|
||||||
dist/PathTools/Cwd.xs | 15 ++++++++++++---
|
|
||||||
1 file changed, 12 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/dist/PathTools/Cwd.xs b/dist/PathTools/Cwd.xs
|
|
||||||
index 8662400e47..e7ecb3c6c1 100644
|
|
||||||
--- a/dist/PathTools/Cwd.xs
|
|
||||||
+++ b/dist/PathTools/Cwd.xs
|
|
||||||
@@ -119,15 +119,24 @@ bsd_realpath(const char *path, char resolved[MAXPATHLEN])
|
|
||||||
|
|
||||||
p = strchr(remaining, '/');
|
|
||||||
s = p ? p : remaining + remaining_len;
|
|
||||||
+
|
|
||||||
if ((STRLEN)(s - remaining) >= (STRLEN)sizeof(next_token)) {
|
|
||||||
errno = ENAMETOOLONG;
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
memcpy(next_token, remaining, s - remaining);
|
|
||||||
next_token[s - remaining] = '\0';
|
|
||||||
- remaining_len -= s - remaining;
|
|
||||||
- if (p != NULL)
|
|
||||||
- memmove(remaining, s + 1, remaining_len + 1);
|
|
||||||
+
|
|
||||||
+ /* shift first component off front of path, including '/' */
|
|
||||||
+ if (p) {
|
|
||||||
+ s++; /* skip '/' */
|
|
||||||
+ remaining_len -= s - remaining;
|
|
||||||
+ /* the +1 includes the trailing '\0' */
|
|
||||||
+ memmove(remaining, s, remaining_len + 1);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ remaining_len = 0;
|
|
||||||
+
|
|
||||||
if (resolved[resolved_len - 1] != '/') {
|
|
||||||
if (resolved_len + 1 >= MAXPATHLEN) {
|
|
||||||
errno = ENAMETOOLONG;
|
|
||||||
--
|
|
||||||
2.25.4
|
|
||||||
|
|
Loading…
Reference in new issue