Ok it seems I'm going down the path of just doing stuff for the sake of
"that's the way it's always been done"..

Does someone actually know why File::Spec->catdir (and catfile, which seems
to work completely identically anyway) is used all over SpamAssassin?  Was
it for some legacy Windows compatibility?  Does any Perl on Windows actually
use native C:\Foo\Bar style paths that would require this method?  Does SA
4.0 even have any promise to work on Windows, and at what capacity? 
Strawberry Perl?  Activestate Perl?  Cygwin?  WSL?  Why not just simplify
code and ditch all the complicated to look and read File::Spec stuff..  you
can also find many many examples where it is not used..  either it should be
used 100% everywhere, or then there is no actual portability.


On Fri, Apr 29, 2022 at 04:26:57PM -0000, [email protected] wrote:
> Author: hege
> Date: Fri Apr 29 16:26:57 2022
> New Revision: 1900390
> 
> URL: http://svn.apache.org/viewvc?rev=1900390&view=rev
> Log:
> Purge write testfiles only sometimes, remember to use catdir
> 
> Modified:
>     spamassassin/trunk/lib/Mail/SpamAssassin.pm
> 
> Modified: spamassassin/trunk/lib/Mail/SpamAssassin.pm
> URL: 
> http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin.pm?rev=1900390&r1=1900389&r2=1900390&view=diff
> ==============================================================================
> --- spamassassin/trunk/lib/Mail/SpamAssassin.pm (original)
> +++ spamassassin/trunk/lib/Mail/SpamAssassin.pm Fri Apr 29 16:26:57 2022
> @@ -1997,9 +1997,10 @@ sub set_global_state_dir {
>  sub test_global_state_dir {
>      my ($self, $dir) = @_;
>      eval { mkpath($dir, 0, 0700); }; # just a single stat if exists already
> -    # Purge stale test files
> -    if (opendir(WT_DIR, $dir)) {
> -      foreach (grep {/^\.sawritetest/ && (-M "$dir/$_"||0) > 0.0001} 
> readdir(WT_DIR)) {
> +    # Purge stale test files (enough to do only some times randomly)
> +    if (rand() < 0.2 && opendir(WT_DIR, $dir)) {
> +      foreach (grep {index($_, '.sawritetest') == 0 &&
> +                 (-M File::Spec->catdir($dir, $_)||0) > 0.0001} 
> readdir(WT_DIR)) {
>          
> unlink(Mail::SpamAssassin::Util::untaint_file_path(File::Spec->catdir($dir, 
> $_)));
>        }
>        closedir WT_DIR;
> 

Reply via email to