diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php index 062b31c9c34b6b58f6f35acee02f767546573b7c..691ea2855f3769870e6b81e5763152fb6919f725 100644 --- a/ecrire/inc/flock.php +++ b/ecrire/inc/flock.php @@ -13,6 +13,11 @@ if (!defined("_ECRIRE_INC_VERSION")) return; +function spip_flock($handle,$verrou){ + if (_SPIP_FLOCK) + @flock($handle, $verrou); +} + // http://doc.spip.org/@spip_file_get_contents function spip_file_get_contents ($fichier) { if (substr($fichier, -3) != '.gz') { @@ -42,7 +47,7 @@ function lire_fichier ($fichier, &$contenu, $options=false) { if ($fl = @fopen($fichier, 'r')) { // verrou lecture - @flock($fl, LOCK_SH); + spip_flock($fl, LOCK_SH); // a-t-il ete supprime par le locker ? if (!@file_exists($fichier)) { @@ -54,7 +59,7 @@ function lire_fichier ($fichier, &$contenu, $options=false) { $contenu = spip_file_get_contents($fichier); // liberer le verrou - @flock($fl, LOCK_UN); + spip_flock($fl, LOCK_UN); @fclose($fl); // Verifications @@ -91,7 +96,7 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca // verrouiller le fichier destination if ($fp = @fopen($fichier, 'a')) { - @flock($fp, LOCK_EX); + spip_flock($fp, LOCK_EX); // ecrire les donnees, compressees le cas echeant // (on ouvre un nouveau pointeur sur le fichier, ce qui a l'avantage // de le recreer si le locker qui nous precede l'avait supprime...) @@ -104,7 +109,7 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca $ok = ($s == $a); // liberer le verrou et fermer le fichier - @flock($fp, LOCK_UN); + spip_flock($fp, LOCK_UN); @fclose($fp); @chmod($fichier, _SPIP_CHMOD & 0666); if ($ok) return $ok; @@ -140,27 +145,28 @@ function raler_fichier($fichier) // Supprimer le fichier de maniere sympa (flock) // // http://doc.spip.org/@supprimer_fichier -function supprimer_fichier($fichier) { +function supprimer_fichier($fichier, $lock=true) { if (!@file_exists($fichier)) return; - // verrouiller le fichier destination - if ($fp = @fopen($fichier, 'a')) - @flock($fp, LOCK_EX); - else - return; - - // liberer le verrou - @flock($fp, LOCK_UN); - @fclose($fp); - + if ($lock) { + // verrouiller le fichier destination + if ($fp = @fopen($fichier, 'a')) + spip_flock($fp, LOCK_EX); + else + return; + + // liberer le verrou + spip_flock($fp, LOCK_UN); + @fclose($fp); + } + // supprimer - spip_unlink($fichier); + unlink($fichier); } // Supprimer brutalement, si le fichier existe function spip_unlink($fichier) { - if (file_exists($fichier)) - unlink($fichier); + supprimer_fichier($fichier,false); } // diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 3aefb22e07975a0e98ac55bc8545aca14e1ae181..6016c27454efaf538972776219307da2a8794318 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1141,7 +1141,8 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { else define('_SPIP_CHMOD', 0777); } - + define('_SPIP_FLOCK',true); // autoriser l'utilisation des verrous fichiers + // la taille maxi des logos (0 : pas de limite) define('_LOGO_MAX_SIZE', 0); # poids en ko define('_LOGO_MAX_WIDTH', 0); # largeur en pixels