From 03c966e338dff353400f6bcf2b49499b97803488 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Fri, 27 Aug 2004 12:52:00 +0000 Subject: [PATCH] =?UTF-8?q?suite=20flock=20windows=20(=C3=A7a=20marche=20?= =?UTF-8?q?=3F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/inc_version.php3 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index e8c271b2cf..3026040525 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -818,13 +818,15 @@ if (LOCK_UN!=3) { define ('LOCK_UN', 3); define ('LOCK_NB', 4); } -function test_flock ($dir, $fp=false) { +function test_flock ($fichier, $fp=false) { static $flock = array(); global $flag_flock; if (!$flag_flock OR $os_serveur == 'windows') // sous win rename() plante avec fopen() return false; + preg_match('|(.*)/([^/]*)$|', $fichier, $match); + $dir = $match[1]; if (!$dir) $dir = '.'; // premier appel pour ce $dir ? @@ -849,10 +851,7 @@ function test_flock ($dir, $fp=false) { // Si flock ne marche pas dans ce repertoire ou chez cet hebergeur, // on renvoie OK pour ne pas bloquer function spip_flock($filehandle, $mode, $fichier) { - preg_match('|(.*)/([^/]*)$|', $fichier, $match); - $dir = $match[1]; - - if (!test_flock($dir)) + if (!test_flock($fichier)) return true; $r = flock($filehandle, $mode); @@ -946,7 +945,7 @@ function ecrire_fichier ($fichier, $contenu) { if ($ft = @$fopen($fichiertmp, 'wb')) { // on en profite pour tester flock() - $flock = test_flock($dir, $ft); + $flock = test_flock($fichiertmp, $ft); $s = @$fputs($ft, $contenu, $a = strlen($contenu)); @$fclose($ft); $ok = ($s == $a); @@ -986,12 +985,14 @@ function supprimer_fichier ($fichier) { if (!@file_exists($fichier)) return false; + if (test_flock($fichier)) if ($fl = @fopen($fichier, 'r')) { while(!spip_flock($fl, LOCK_EX, $fichier)); spip_flock($fl, LOCK_UN, $fichier); @fclose($fl); - @unlink($fichier); } + + @unlink($fichier); } // -- GitLab