--- amavisd.original 2005-12-22 16:40:02.000000000 -0500 +++ amavisd 2005-12-29 11:42:50.000000000 -0500 @@ -3800,6 +3800,7 @@ } use Errno qw(ENOENT EACCES); +use File::Spec; use IO::File qw(O_CREAT O_EXCL O_WRONLY); use IO::Wrap; @@ -3881,13 +3882,13 @@ : $1 eq 'i' ? iso8601_timestamp($msginfo->rx_time,1,'-') : $1 eq 'n' ? am_id() : $1 eq '%' ? '%' : '%'.$1 }egs; - $mbxname = "$mbxname/$suggested_filename"; + $mbxname = File::Spec->catfile($mbxname, $suggested_filename); if ($quarantine_subdir_levels>=1 && !$explicitly_suggested_filename) { # using a subdirectory structure to disperse quarantine files local($1,$2); my($subdir) = substr($msginfo->mail_id, 0, 1); $subdir=~/^[A-Z0-9]\z/i or die "Unexpected first char: $subdir"; $mbxname =~ m{^ (.*/)? ([^/]+) \z}sx; my($path,$fname) = ($1,$2); - $mbxname = "$path$subdir/$fname"; # resulting full filename + $mbxname = File::Spec->catfile($path.$subdir, $fname); # resulting full filename my($errn) = stat("$path$subdir") ? 0 : 0+$!; if ($errn == ENOENT) { # check/prepare a set of subdirectories do_log(2, "checking/creating quarantine subdirs under $path");