summaryrefslogtreecommitdiffstats
path: root/contrib/perl5/lib/File/Spec/Unix.pm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/perl5/lib/File/Spec/Unix.pm')
-rw-r--r--contrib/perl5/lib/File/Spec/Unix.pm46
1 files changed, 31 insertions, 15 deletions
diff --git a/contrib/perl5/lib/File/Spec/Unix.pm b/contrib/perl5/lib/File/Spec/Unix.pm
index 2305b75..a81c533 100644
--- a/contrib/perl5/lib/File/Spec/Unix.pm
+++ b/contrib/perl5/lib/File/Spec/Unix.pm
@@ -1,6 +1,9 @@
package File::Spec::Unix;
use strict;
+use vars qw($VERSION);
+
+$VERSION = '1.2';
use Cwd;
@@ -35,7 +38,7 @@ sub canonpath {
$path =~ s|(/\.)+/|/|g; # xx/././xx -> xx/xx
$path =~ s|^(\./)+||s unless $path eq "./"; # ./xx -> xx
$path =~ s|^/(\.\./)+|/|s; # /../../xx -> xx
- $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx
+ $path =~ s|/\Z(?!\n)|| unless $path eq "/"; # xx/ -> xx
return $path;
}
@@ -146,7 +149,7 @@ directory. (Does not strip symlinks, only '.', '..', and equivalents.)
sub no_upwards {
my $self = shift;
- return grep(!/^\.{1,2}\z/s, @_);
+ return grep(!/^\.{1,2}\Z(?!\n)/s, @_);
}
=item case_tolerant
@@ -162,7 +165,12 @@ sub case_tolerant {
=item file_name_is_absolute
-Takes as argument a path and returns true, if it is an absolute path.
+Takes as argument a path and returns true if it is an absolute path.
+
+This does not consult the local filesystem on Unix, Win32, or OS/2. It
+does sometimes on MacOS (see L<File::Spec::MacOS/file_name_is_absolute>).
+It does consult the working environment for VMS (see
+L<File::Spec::VMS/file_name_is_absolute>).
=cut
@@ -223,7 +231,7 @@ sub splitpath {
$directory = $path;
}
else {
- $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs;
+ $path =~ m|^ ( (?: .* / (?: \.\.?\Z(?!\n) )? )? ) ([^/]*) |xs;
$directory = $1;
$file = $2;
}
@@ -263,7 +271,7 @@ sub splitdir {
# check to be sure that there will not be any before handling the
# simple case.
#
- if ( $directories !~ m|/\z| ) {
+ if ( $directories !~ m|/\Z(?!\n)| ) {
return split( m|/|, $directories );
}
else {
@@ -308,8 +316,8 @@ sub catpath {
Takes a destination path and an optional base path returns a relative path
from the base path to the destination path:
- $rel_path = File::Spec->abs2rel( $destination ) ;
- $rel_path = File::Spec->abs2rel( $destination, $base ) ;
+ $rel_path = File::Spec->abs2rel( $path ) ;
+ $rel_path = File::Spec->abs2rel( $path, $base ) ;
If $base is not present or '', then L<cwd()> is used. If $base is relative,
then it is converted to absolute form using L</rel2abs()>. This means that it
@@ -325,9 +333,13 @@ directories.
If $path is relative, it is converted to absolute form using L</rel2abs()>.
This means that it is taken to be relative to L<cwd()>.
-Based on code written by Shigio Yamaguchi.
+No checks against the filesystem are made on most systems. On MacOS,
+the filesystem may be consulted (see
+L<File::Spec::MacOS/file_name_is_absolute>). On VMS, there is
+interaction with the working environment, as logicals and
+macros are expanded.
-No checks against the filesystem are made.
+Based on code written by Shigio Yamaguchi.
=cut
@@ -385,15 +397,15 @@ sub abs2rel {
Converts a relative path to an absolute path.
- $abs_path = File::Spec->rel2abs( $destination ) ;
- $abs_path = File::Spec->rel2abs( $destination, $base ) ;
+ $abs_path = File::Spec->rel2abs( $path ) ;
+ $abs_path = File::Spec->rel2abs( $path, $base ) ;
If $base is not present or '', then L<cwd()> is used. If $base is relative,
then it is converted to absolute form using L</rel2abs()>. This means that it
is taken to be relative to L<cwd()>.
On systems with the concept of a volume, this assumes that both paths
-are on the $base volume, and ignores the $destination volume.
+are on the $base volume, and ignores the $path volume.
On systems that have a grammar that indicates filenames, this ignores the
$base filename as well. Otherwise all path components are assumed to be
@@ -401,13 +413,17 @@ directories.
If $path is absolute, it is cleaned up and returned using L</canonpath()>.
-Based on code written by Shigio Yamaguchi.
+No checks against the filesystem are made on most systems. On MacOS,
+the filesystem may be consulted (see
+L<File::Spec::MacOS/file_name_is_absolute>). On VMS, there is
+interaction with the working environment, as logicals and
+macros are expanded.
-No checks against the filesystem are made.
+Based on code written by Shigio Yamaguchi.
=cut
-sub rel2abs($;$;) {
+sub rel2abs {
my ($self,$path,$base ) = @_;
# Clean up $path
OpenPOWER on IntegriCloud