X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/098a79f0819ebb89b7d48df4a6b154af4560f68e..9a23a8c0a51b7ec38a96f525484134f3cb85dc7e:/WEB-INF/lib/smarty/sysplugins/smarty_internal_write_file.php diff --git a/WEB-INF/lib/smarty/sysplugins/smarty_internal_write_file.php b/WEB-INF/lib/smarty/sysplugins/smarty_internal_write_file.php new file mode 100644 index 00000000..4e34335f --- /dev/null +++ b/WEB-INF/lib/smarty/sysplugins/smarty_internal_write_file.php @@ -0,0 +1,56 @@ +_dir_perms, true); + } + // write to tmp file, then move to overt file lock race condition + $_tmp_file = tempnam($_dirpath, 'wrt'); + + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $_tmp_file = $_dirpath . DS . uniqid('wrt'); + if (!($fd = @fopen($_tmp_file, 'wb'))) { + throw new SmartyException("unable to write file {$_tmp_file}"); + return false; + } + } + + fwrite($fd, $_contents); + fclose($fd); + + // remove original file + if (file_exists($_filepath)) + @unlink($_filepath); + // rename tmp file + rename($_tmp_file, $_filepath); + // set file permissions + chmod($_filepath, $smarty->_file_perms); + umask($old_umask); + return true; + } +} + +?> \ No newline at end of file