'oui' # verifier qu'on a bien du php // dezippe automatiquement les fichiers .gz function lire_fichier ($fichier, &$contenu, $options=false) { $contenu = ''; if (!@file_exists($fichier)) return false; #spip_timer('lire_fichier'); if ($fl = @fopen($fichier, 'r')) { // verrou lecture @flock($fl, LOCK_SH); // a-t-il ete supprime par le locker ? if (!@file_exists($fichier)) { @fclose($fl); return false; } // lire le fichier $contenu = spip_file_get_contents($fichier); // liberer le verrou @flock($fl, LOCK_UN); @fclose($fl); // Verifications $ok = true; if ($options['phpcheck'] == 'oui') $ok &= (ereg("[?]>\n?$", $contenu)); #spip_log("$fread $fichier ".spip_timer('lire_fichier')); if (!$ok) spip_log("echec lecture $fichier"); return $ok; } } // // Ecrire un fichier de maniere un peu sure // // zippe les fichiers .gz function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false) { // Ne rien faire si on est en preview, debug, ou si une erreur // grave s'est presentee (compilation du squelette, MySQL, etc) if (($GLOBALS['var_preview'] OR ($GLOBALS['var_mode'] == 'debug') OR defined('spip_interdire_cache')) AND !$ecrire_quand_meme) return; $gzip = (substr($fichier, -3) == '.gz'); #spip_timer('ecrire_fichier'); // verrouiller le fichier destination if ($fp = @fopen($fichier, 'a')) @flock($fp, LOCK_EX); else return false; // 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...) if ($gzip) $contenu = gzencode($contenu); @ftruncate($fp,0); $s = @fputs($fp, $contenu, $a = strlen($contenu)); $ok = ($s == $a); // liberer le verrou et fermer le fichier @flock($fp, LOCK_UN); @fclose($fp); if (!$ok) { spip_log("echec ecriture fichier $fichier"); @unlink($fichier); } return $ok; } // // Supprimer le fichier de maniere sympa (flock) // function supprimer_fichier($fichier) { 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); // supprimer @unlink($fichier); } ?>