libconfigfile: update config file atomically when saving

Signed-off-by: Jacek Jendrzej <crashdvb@googlemail.com>
This commit is contained in:
Stefan Seyfried
2013-03-03 23:04:54 +01:00
committed by Jacek Jendrzej
parent b6df7de7f7
commit 2afc06a793

View File

@@ -91,7 +91,9 @@ bool CConfigFile::loadConfig(const std::string & filename)
bool CConfigFile::saveConfig(const char * const filename)
{
std::fstream configFile(filename);
const char *tmpname = (std::string(filename) + ".tmp").c_str();
unlink(tmpname);
std::fstream configFile(tmpname, std::ios::out);
if (configFile != NULL)
{
@@ -104,7 +106,9 @@ bool CConfigFile::saveConfig(const char * const filename)
configFile.sync();
configFile.close();
chmod(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
chmod(tmpname, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
/* TODO: check available space? */
rename(tmpname, filename);
modifiedFlag = false;
return true;