_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; } } ?>