--- Find.pm 2010-06-07 18:03:58.671875000 -0700 +++ Find.pm.new 2010-06-07 18:33:52.109375000 -0700 @@ -6,7 +6,16 @@ our $VERSION = '1.16'; require Exporter; require Cwd; - +BEGIN { eval { + use Win32::Unicode::Native(); ## TODO fix exporting + use subs qw( opendir readdir closedir stat ); + *File::Find::opendir = *Win32::Unicode::Native::opendir ; + *File::Find::readdir = *Win32::Unicode::Native::readdir ; + *File::Find::closedir = *Win32::Unicode::Native::closedir ; + *File::Find::stat = *Win32::Unicode::File::statW; +#~ use subs qw( lstat ); *File::Find::lstat = *Win32::Unicode::File::statW; ## bogus , TODO BUG, Can't stat .: No such file or directory + }; +} # # Modified to ensure sub-directory traversal order is not inverded by stack # push and pops. That is remains in the same order as in the directory file, @@ -892,13 +901,14 @@ $dir= $dir_name; # $File::Find::dir + my $DIRHANDLE; # Get the list of files in the current directory. - unless (opendir DIR, ($no_chdir ? $dir_name : $File::Find::current_dir)) { + unless (opendir $DIRHANDLE, ($no_chdir ? $dir_name : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_name): $!\n"; next; } - @filenames = readdir DIR; - closedir(DIR); + @filenames = readdir $DIRHANDLE; + closedir($DIRHANDLE); @filenames = $pre_process->(@filenames) if $pre_process; push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; @@ -1156,13 +1166,14 @@ $dir = $dir_name; # $File::Find::dir + my $DIRHANDLE; # Get the list of files in the current directory. - unless (opendir DIR, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { + unless (opendir $DIRHANDLE, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_loc): $!\n"; next; } - @filenames = readdir DIR; - closedir(DIR); + @filenames = readdir $DIRHANDLE; + closedir($DIRHANDLE); for my $FN (@filenames) { if ($Is_VMS) {