diff --git a/src/controller/controller.cpp b/src/controller/controller.cpp index b29a6371..d2863bc2 100644 --- a/src/controller/controller.cpp +++ b/src/controller/controller.cpp @@ -600,8 +600,11 @@ int main(int argc, char ** argv){ } } if (Request.isMember("save")){ - Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString()); - Controller::Log("CONF", "Config written to file on request through API"); + if( Controller::WriteFile(conf.getString("configFile"), Controller::Storage.toString())){ + 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 //Response["streams"] = Storage["streams"]; @@ -648,7 +651,16 @@ int main(int argc, char ** argv){ } API_Socket.close(); 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(); std::cout << "Killed all processes, wrote config to disk. Exiting." << std::endl; return 0; diff --git a/src/controller/controller_storage.cpp b/src/controller/controller_storage.cpp index fab0d294..9e8c688a 100644 --- a/src/controller/controller_storage.cpp +++ b/src/controller/controller_storage.cpp @@ -37,11 +37,12 @@ namespace Controller { ///\brief Write contents to Filename ///\param Filename The full path of the file to write to. ///\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; File.open(Filename.c_str()); File << contents << std::endl; File.close(); + return File.good(); } } diff --git a/src/controller/controller_storage.h b/src/controller/controller_storage.h index d6b5d814..54a296d8 100644 --- a/src/controller/controller_storage.h +++ b/src/controller/controller_storage.h @@ -9,6 +9,6 @@ namespace Controller { void Log(std::string kind, std::string message); /// Write contents to Filename. - void WriteFile(std::string Filename, std::string contents); + bool WriteFile(std::string Filename, std::string contents); }