_file_perms !== null) { $old_umask = umask(0); } $_dirpath = dirname($_filepath); // if subdirs, create dir structure if ($_dirpath !== '.' && !file_exists($_dirpath)) { mkdir($_dirpath, $smarty->_dir_perms === null ? 0777 : $smarty->_dir_perms, true); } // write to tmp file, then move to overt file lock race condition $_tmp_file = $_dirpath . DS . uniqid('wrt'); if (!file_put_contents($_tmp_file, $_contents)) { error_reporting($_error_reporting); throw new SmartyException("unable to write file {$_tmp_file}"); return false; } // remove original file @unlink($_filepath); // rename tmp file $success = rename($_tmp_file, $_filepath); if (!$success) { error_reporting($_error_reporting); throw new SmartyException("unable to write file {$_filepath}"); return false; } if ($smarty->_file_perms !== null) { // set file permissions chmod($_filepath, $smarty->_file_perms); umask($old_umask); } error_reporting($_error_reporting); return true; } } ?>