diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php
index 7624dd0120e..fa98fb4fe96 100644
--- a/htdocs/lib/functions.lib.php
+++ b/htdocs/lib/functions.lib.php
@@ -2248,10 +2248,10 @@ function dol_delete_file($file,$disableglob=0)
{
//print "x".$file." ".$disableglob;
$ok=true;
- $newfile=utf8_check($file)?utf8_decode($file):$file; // glob function accepts only ISO string
+ $file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset
if (empty($disableglob))
{
- foreach (glob($newfile) as $filename)
+ foreach (glob($file_osencoded) as $filename)
{
$ok=unlink($filename); // The unlink encapsulated by dolibarr
if ($ok) dol_syslog("Removed file ".$filename,LOG_DEBUG);
@@ -2260,9 +2260,9 @@ function dol_delete_file($file,$disableglob=0)
}
else
{
- $ok=unlink($newfile); // The unlink encapsulated by dolibarr
- if ($ok) dol_syslog("Removed file ".$newfile,LOG_DEBUG);
- else dol_syslog("Failed to remove file ".$newfile,LOG_ERR);
+ $ok=unlink($file_osencoded); // The unlink encapsulated by dolibarr
+ if ($ok) dol_syslog("Removed file ".$file_osencoded,LOG_DEBUG);
+ else dol_syslog("Failed to remove file ".$file_osencoded,LOG_ERR);
}
return $ok;
}
@@ -2275,8 +2275,8 @@ function dol_delete_file($file,$disableglob=0)
*/
function dol_delete_dir($dir)
{
- $newdir=utf8_check($dir)?utf8_decode($dir):$dir;
- return rmdir($newdir);
+ $dir_osencoded=dol_osencode($dir);
+ return rmdir($dir_osencoded);
}
/**
@@ -2287,32 +2287,30 @@ function dol_delete_dir($dir)
*/
function dol_delete_dir_recursive($dir,$count=0)
{
- //dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir,LOG_DEBUG);
- $newdir=utf8_check($dir)?utf8_decode($dir):$dir;
- if ($handle = opendir("$newdir"))
+ dol_syslog("functions.lib:dol_delete_dir_recursive ".$dir,LOG_DEBUG);
+ $dir_osencoded=dol_osencode($dir);
+ if ($handle = opendir("$dir_osencoded"))
{
while (false !== ($item = readdir($handle)))
{
- // readdir return value in ISO and we want UTF8 in memory
- $newitem=$item;
- if (! utf8_check($item)) $item=utf8_encode($item);
+ if (! utf8_check($item)) $item=utf8_encode($item); // should be useless
if ($item != "." && $item != "..")
{
- if (is_dir("$newdir/$newitem"))
+ if (is_dir(dol_osencode("$dir/$item")))
{
$count=dol_delete_dir_recursive("$dir/$item",$count);
}
else
{
- unlink("$newdir/$newitem");
+ dol_delete_file("$dir/$item",1);
$count++;
//echo " removing $dir/$item
\n";
}
}
}
closedir($handle);
- rmdir($newdir);
+ dol_delete_dir($dir);
$count++;
//echo "removing $dir
\n";
}