summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHelmut Jarausch <jarausch@numa1.igpm.rwth-aachen.de>1999-12-16 09:57:55 +0100
committerGurusamy Sarathy <gsar@cpan.org>1999-12-17 06:06:46 +0000
commit07867069da616ed679f2e5fa3023ca3f186d3e48 (patch)
tree8574c1133ff5efabb140ba18c286546f32b5c293 /lib
parenta7a8d5a96651e3a5e04e9f892f1bb74538631522 (diff)
downloadperl-07867069da616ed679f2e5fa3023ca3f186d3e48.tar.gz
applied suggested patch with whitespace adjustments
Message-id: <38589B82.C4668E10@numa1.igpm.rwth-aachen.de> Subject: Re: [ID 19991215.001] patch 5.005_63: Find::Fill cannot handle / p4raw-id: //depot/perl@4687
Diffstat (limited to 'lib')
-rw-r--r--lib/File/Find.pm35
1 files changed, 23 insertions, 12 deletions
diff --git a/lib/File/Find.pm b/lib/File/Find.pm
index 56ab7980ec..5cd58c65b8 100644
--- a/lib/File/Find.pm
+++ b/lib/File/Find.pm
@@ -1,5 +1,5 @@
package File::Find;
-require 5.000;
+require 5.005;
require Exporter;
require Cwd;
@@ -300,7 +300,7 @@ sub _find_opt {
Proc_Top_Item:
foreach my $TOP (@_) {
my $top_item = $TOP;
- $top_item =~ s|/$||;
+ $top_item =~ s|/$|| unless $top_item eq '/';
$Is_Dir= 0;
if ($follow) {
@@ -388,6 +388,7 @@ sub _find_dir($$$) {
my ($subcount,$sub_nlink);
my $SE= [];
my $dir_name= $p_dir;
+ my $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
my $dir_rel= '.'; # directory name relative to current directory
local ($dir, $name, $prune, *DIR);
@@ -429,12 +430,16 @@ sub _find_dir($$$) {
$udir = $1 if $dir_rel =~ m|$untaint_pat|;
unless (defined $udir) {
if ($untaint_skip == 0) {
- die "directory ($p_dir/) $dir_rel is still tainted";
+ die "directory ("
+ . ($p_dir ne '/' ? $p_dir : '')
+ . "/) $dir_rel is still tainted";
}
}
}
unless (chdir $udir) {
- warn "Can't cd to ($p_dir/) $udir : $!\n";
+ warn "Can't cd to ("
+ . ($p_dir ne '/' ? $p_dir : '')
+ . "/) $udir : $!\n";
next;
}
$CdLvl++;
@@ -455,7 +460,7 @@ sub _find_dir($$$) {
for my $FN (@filenames) {
next if $FN =~ /^\.{1,2}$/;
- $name = "$dir_name/$FN";
+ $name = $dir_pref . $FN;
$_ = ($no_chdir ? $name : $FN);
&$wanted_callback;
}
@@ -471,7 +476,7 @@ sub _find_dir($$$) {
# Seen all the subdirs?
# check for directoriness.
# stat is faster for a file in the current directory
- $sub_nlink = (lstat ($no_chdir ? "$dir_name/$FN" : $FN))[3];
+ $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3];
if (-d _) {
--$subcount;
@@ -479,12 +484,13 @@ sub _find_dir($$$) {
push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
}
else {
- $name = "$dir_name/$FN";
+ $name = $dir_pref . $FN;
$_= ($no_chdir ? $name : $FN);
&$wanted_callback;
}
}
- else { $name = "$dir_name/$FN";
+ else {
+ $name = $dir_pref . $FN;
$_= ($no_chdir ? $name : $FN);
&$wanted_callback;
}
@@ -505,7 +511,8 @@ sub _find_dir($$$) {
unless chdir '../' x ($CdLvl-$Level);
$CdLvl = $Level;
}
- $dir_name = "$p_dir/$dir_rel";
+ $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
+ $dir_pref = "$dir_name/";
}
}
}
@@ -525,6 +532,8 @@ sub _find_dir_symlnk($$$) {
my $new_loc;
my $SE = [];
my $dir_name = $p_dir;
+ my $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
+ my $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
my $dir_rel = '.'; # directory name relative to current directory
local ($dir, $name, $fullname, $prune, *DIR);
@@ -595,7 +604,7 @@ sub _find_dir_symlnk($$$) {
next if $FN =~ /^\.{1,2}$/;
# follow symbolic links / do an lstat
- $new_loc= Follow_SymLink("$dir_loc/$FN");
+ $new_loc = Follow_SymLink($loc_pref.$FN);
# ignore if invalid symlink
next unless defined $new_loc;
@@ -605,7 +614,7 @@ sub _find_dir_symlnk($$$) {
}
else {
$fullname = $new_loc;
- $name = "$dir_name/$FN";
+ $name = $dir_pref . $FN;
$_ = ($no_chdir ? $name : $FN);
&$wanted_callback;
}
@@ -621,7 +630,9 @@ sub _find_dir_symlnk($$$) {
continue {
if (defined($SE = pop @Stack)) {
($dir_loc, $p_dir, $dir_rel) = @$SE;
- $dir_name = "$p_dir/$dir_rel";
+ $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
+ $dir_pref = "$dir_name/";
+ $loc_pref = "$dir_loc/";
}
}
}