avoid MakeMaker setting $^W=1
[p5sagit/p5-mst-13.2.git] / lib / File / Find.pm
index 5cd58c6..42905de 100644 (file)
@@ -1,5 +1,5 @@
 package File::Find;
-require 5.005;
+use 5.005_64;
 require Exporter;
 require Cwd;
 
@@ -53,12 +53,12 @@ If either I<follow> or I<follow_fast> is in effect:
 
 =over 6
 
-=item
+=item *
 
 It is guarantueed that an I<lstat> has been called before the user's
 I<wanted()> function is called. This enables fast file checks involving S< _>.
 
-=item
+=item *
 
 There is a variable C<$File::Find::fullname> which holds the absolute
 pathname of the file with all symbolic links resolved
@@ -122,6 +122,10 @@ When <follow> or <follow_fast> are in effect there is also a
 C<$File::Find::fullname>.
 The function may set C<$File::Find::prune> to prune the tree
 unless C<bydepth> was specified.
+Unless C<follow> or C<follow_fast> is specified, for compatibility
+reasons (find.pl, find2perl) there are in addition the following globals
+available: C<$File::Find::topdir>, C<$File::Find::topdev>, C<$File::Find::topino>,
+C<$File::Find::topmode> and C<$File::Find::topnlink>.
 
 This library is useful for the C<find2perl> tool, which when fed,
 
@@ -266,7 +270,7 @@ sub Follow_SymLink($) {
     return $AbsName;
 }
 
-use vars qw/ $dir $name $fullname $prune /;
+our($dir, $name, $fullname, $prune);
 sub _find_dir_symlnk($$$);
 sub _find_dir($$$);
 
@@ -286,6 +290,8 @@ sub _find_opt {
     $untaint_pat      = $wanted->{untaint_pattern};
     $untaint_skip     = $wanted->{untaint_skip};
 
+    # for compatability reasons (find.pl, find2perl)
+    our ($topdir, $topdev, $topino, $topmode, $topnlink);
 
     # a symbolic link to a directory doesn't increase the link count
     $avoid_nlink      = $follow || $File::Find::dont_use_nlink;
@@ -295,7 +301,7 @@ sub _find_opt {
        die "insecure cwd in find(depth)"  unless defined($cwd_untainted);
     }
     
-    my ($abs_dir, $nlink, $Is_Dir);
+    my ($abs_dir, $Is_Dir);
 
     Proc_Top_Item:
     foreach my $TOP (@_) {
@@ -303,6 +309,8 @@ sub _find_opt {
         $top_item =~ s|/$||  unless $top_item eq '/';
         $Is_Dir= 0;
         
+        ($topdev,$topino,$topmode,$topnlink) = stat $top_item;
+
         if ($follow) {
             if (substr($top_item,0,1) eq '/') {
                 $abs_dir = $top_item;
@@ -324,14 +332,14 @@ sub _find_opt {
             }
         }
        else { # no follow
-            $nlink = (lstat $top_item)[3];
-            unless (defined $nlink) {
+            $topdir = $top_item;
+            unless (defined $topnlink) {
                 warn "Can't stat $top_item: $!\n";
                 next Proc_Top_Item;
             }
             if (-d _) {
                $top_item =~ s/\.dir$// if $Is_VMS;
-               _find_dir($wanted, $top_item, $nlink);
+               _find_dir($wanted, $top_item, $topnlink);
                $Is_Dir= 1;
             }
            else {