Added error detection on writing config file

This commit is contained in:
Erik Zandvliet 2014-01-13 15:24:27 +01:00
parent a4baed35d2
commit 18fa38a5cc
3 changed files with 18 additions and 5 deletions

View file

@ -600,8 +600,11 @@ int main(int argc, char ** argv){
} }
} }
if (Request.isMember("save")){ if (Request.isMember("save")){
Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString()); if( Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString())){
Controller::Log("CONF", "Config written to file on request through API"); Controller::Log("CONF", "Config written to file on request through API");
}else{
Controller::Log("ERROR", "Config " + conf.getString("configFile") + " could not be written");
}
} }
//sent current configuration, no matter if it was changed or not //sent current configuration, no matter if it was changed or not
//Response["streams"] = Storage["streams"]; //Response["streams"] = Storage["streams"];
@ -648,7 +651,16 @@ int main(int argc, char ** argv){
} }
API_Socket.close(); API_Socket.close();
Controller::Log("CONF", "Controller shutting down"); Controller::Log("CONF", "Controller shutting down");
Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString()); if ( !Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString())){
std::cerr << "Error writing config " << conf.getString("configFile") << std::endl;
Controller::Storage.removeMember("log");
for (JSON::ObjIter it = Controller::Storage["streams"].ObjBegin(); it != Controller::Storage["streams"].ObjEnd(); it++){
it->second.removeMember("meta");
}
std::cerr << "**Config**" << std::endl;
std::cerr << Controller::Storage.toString() << std::endl;
std::cerr << "**End config**" << std::endl;
}
Util::Procs::StopAll(); Util::Procs::StopAll();
std::cout << "Killed all processes, wrote config to disk. Exiting." << std::endl; std::cout << "Killed all processes, wrote config to disk. Exiting." << std::endl;
return 0; return 0;

View file

@ -37,11 +37,12 @@ namespace Controller {
///\brief Write contents to Filename ///\brief Write contents to Filename
///\param Filename The full path of the file to write to. ///\param Filename The full path of the file to write to.
///\param contents The data to be written to the file. ///\param contents The data to be written to the file.
void WriteFile(std::string Filename, std::string contents){ bool WriteFile(std::string Filename, std::string contents){
std::ofstream File; std::ofstream File;
File.open(Filename.c_str()); File.open(Filename.c_str());
File << contents << std::endl; File << contents << std::endl;
File.close(); File.close();
return File.good();
} }
} }

View file

@ -9,6 +9,6 @@ namespace Controller {
void Log(std::string kind, std::string message); void Log(std::string kind, std::string message);
/// Write contents to Filename. /// Write contents to Filename.
void WriteFile(std::string Filename, std::string contents); bool WriteFile(std::string Filename, std::string contents);
} }