About freezes:
I have made a script with
foreach my $done ( 1 .. 100 ) { FS_sweep( 'C:', \&FS_file_big ); ...
Running this script several times in Emacs, using the compile command, all resulted in a freeze.
The the number of calls to FS_sweep before freeze was between 0 and 91.
Running the script in the command shell resulted in 0 to 14 succeeded calls to FS_sweep. In most cases none.
… <C:/Users/bo/Application Data/À> … (was this a question/problem?) …
use strict;
use warnings;
use 5.010;
use Data::Dump qw(dump dd ddx);
use Win32::LongPath;
use Fcntl ':mode';
sub do_readdirL_arr {
my $dir_path = shift;
my $dir = Win32::LongPath->new;
unless ( $dir->opendirL($dir_path) ) {
warn "!! unable to open $dir_path ($^E)";
return;
}
my @name = $dir->readdirL();
return \@name;
}
sub do_readdirL_while {
my $dir_path = shift;
my $dir = Win32::LongPath->new;
unless ( $dir->opendirL($dir_path) ) {
warn "!! unable to open $dir_path ($^E)";
return;
}
my @name;
while ( my $name = $dir->readdirL() ) {
push @name, $name;
}
return \@name;
}
my @path = (
'C:/Documents and Settings', 'C:/ProgramData/Application
+Data',
'C:/ProgramData/Desktop', 'C:/ProgramData/Start Menu',
'C:/ProgramData/Templates', #'C:/Users',
'C:/Windows/appcompat/Programs', 'C:/Windows/System32/Com/dmp
+',
#'C:/Windows/System32/spool',
'C:/Windows/System32/Tasks',
'C:/Windows/System32/Tasks_Migrated', 'C:/Windows/SysWOW64/Com/dmp
+',
'C:/Windows/SysWOW64/Tasks', 'C:/Windows/Temp',
);
foreach my $path (@path) {
say "$path: array: ", dump( do_readdirL_arr($path) ), ' while: ',
dump do_readdirL_while($path);
}
__DATA__
C:/Documents and Settings: array: ["g"] while: ["~"]
C:/ProgramData/Application Data: array: ["u"] while: ["{"]
C:/ProgramData/Desktop: array: ["H"] while: ["|"]
C:/ProgramData/Start Menu: array: ["~"] while: ["m"]
C:/ProgramData/Templates: array: ["K"] while: ["e"]
C:/Windows/appcompat/Programs: array: ["u"] while: ["Q"]
C:/Windows/System32/Com/dmp: array: ["m"] while: ["l"]
C:/Windows/System32/Tasks: array: ["\\"] while: ["\x7F"]
C:/Windows/System32/Tasks_Migrated: array: ["\22"] while: ["\f"]
C:/Windows/SysWOW64/Com/dmp: array: ["p"] while: ["u"]
C:/Windows/SysWOW64/Tasks: array: ["["] while: ["p"]
C:/Windows/Temp: array: ["\x{105}"] while: ["\x{110}"]
__DATA__ contains an example of output. It changes for every run.
I have no access to the directories using the MS File explorer.
When I in FS_sweep skip those directories, 'C:/Users' and C:/Windows/System32/spool' there are no freezes.