From 6d0fbeb0a7fde0cc8bae6c9944ea6b017d96968a Mon Sep 17 00:00:00 2001 From: Nathan Kinkade Date: Sun, 16 Mar 2008 20:42:30 +0000 Subject: Moved some external packages into lib to make system more self contained --- lib/smarty-2.6.8/internals/core.write_file.php | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 lib/smarty-2.6.8/internals/core.write_file.php (limited to 'lib/smarty-2.6.8/internals/core.write_file.php') diff --git a/lib/smarty-2.6.8/internals/core.write_file.php b/lib/smarty-2.6.8/internals/core.write_file.php new file mode 100644 index 0000000..8a3a3b3 --- /dev/null +++ b/lib/smarty-2.6.8/internals/core.write_file.php @@ -0,0 +1,54 @@ + $_dirname); + require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); + smarty_core_create_dir_structure($_params, $smarty); + } + + // write to tmp file, then rename it to avoid file locking race condition + $_tmp_file = tempnam($_dirname, 'wrt'); + + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); + return false; + } + } + + fwrite($fd, $params['contents']); + fclose($fd); + + if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) { + // On platforms and filesystems that cannot overwrite with rename() + // delete the file before renaming it -- because windows always suffers + // this, it is short-circuited to avoid the initial rename() attempt + @unlink($params['filename']); + @rename($_tmp_file, $params['filename']); + } + @chmod($params['filename'], $smarty->_file_perms); + + return true; +} + +/* vim: set expandtab: */ + +?> \ No newline at end of file -- cgit v1.2.3