/* Copyright 2008,2009,2010 Edwin Eefting (edwin@datux.nl) This file is part of Synapse. Synapse is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Synapse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Synapse. If not, see . */ /* * cconfig.cpp * * Created on: Jul 28, 2010 */ #include "cconfig.h" #include "boost/filesystem/operations.hpp" #include "boost/filesystem/fstream.hpp" #include "clog.h" #include namespace synapse { using namespace std; using boost::filesystem::ofstream; using boost::filesystem::ifstream; Cconfig::Cconfig() { changed(); } void Cconfig::save() { save(savedConfigPath); } void Cconfig::save(path configPath) { //errors are handled with exceptions if (!saved || configPath!=savedConfigPath) { INFO("Saving config file "<< configPath); string s; toJsonFormatted(s); ofstream configStream; configStream.exceptions ( ofstream::eofbit | ofstream::failbit | ofstream::badbit ); configStream.open(configPath); configStream << s; configStream.close(); saved=true; savedConfigPath=configPath; } } bool Cconfig::isChanged() { return(!saved); } void Cconfig::changed() { saved=false; // changeTime=time(NULL); } // time_t Cconfig::getChangeTime() // { // return(changeTime); // } void Cconfig::load(path configPath, bool merge) { INFO("Loading config file "<< configPath); //errors are handled with exceptions if (!merge) clear(); ifstream configStream; configStream.exceptions ( ifstream::eofbit | ifstream::failbit | ifstream::badbit ); configStream.open(configPath); string s((istreambuf_iterator(configStream)), std::istreambuf_iterator()); configStream.close(); fromJson(s); if (!merge) saved=true; savedConfigPath=configPath; } }