bool CConfReader::readConfiguration(const char* filename) { bool retVal=false; std::ifstream file; file.open(filename); if (file.is_open()) { while (!file.eof()) { char l[400]; file.getline(l,400); std::string line(l); if ((line.length()!=0)&&(line[line.length()-1]==13)) // Needed on Linux. Thanks to Patrick Bouffard line.erase(line.begin()+line.length()-1); _removeComments(line); size_t ePos=line.find('='); if ( (ePos!=std::string::npos)&&(ePos>0)&&(ePos+1<line.length()) ) { std::string var,val; var.assign(line.begin(),line.begin()+ePos); val.assign(line.begin()+ePos+1,line.end()); if ( _removeFrontAndBackSpacesAndTabs(var)&&_removeFrontAndBackSpacesAndTabs(val)&&(var.find(' ')==std::string::npos) ) { int ind=_getVariableIndex((const char*)var.c_str()); if (ind!=-1) { // Variable multiple defined. We keep the last one! _variables.erase(_variables.begin()+ind); _values.erase(_values.begin()+ind); } _variables.push_back(var); _values.push_back(val); } } } file.close(); retVal=true; } return(retVal); }
void Stxxl::setConfig(QString configFile) { QFile fp(configFile); if (fp.open(QIODevice::ReadOnly) == false) { throw Tgs::Exception(("Error opening file " + configFile).toStdString()); } QString s = fp.readAll(); long pid = QCoreApplication::applicationPid(); s.replace("###", QString::number(pid)); s = _removeComments(s); _configFileTmp.setFileTemplate(QDir::tempPath() + "/StxxlConfigXXXXXX.conf"); _configFileTmp.setAutoRemove(true); if (_configFileTmp.open() == false) { QString err = QString("Error opening file for writing %1 (%2)"). arg(_configFileTmp.fileName()).arg(_configFileTmp.errorString()); throw Tgs::Exception(err.toStdString()); } if (_configFileTmp.write(s.toUtf8()) == 0) { QString err("Error writing data to %1 (%2)"); err.arg(_configFileTmp.fileName()).arg(_configFileTmp.errorString()); throw Tgs::Exception(err.toStdString()); } _configFileTmp.close(); // initialize the environment variable for loading STXXL configuration. If the environment // variable has already been set then overwrite it (that is the 1 at the end). setenv("STXXLCFG", _configFileTmp.fileName().toAscii().data(), 1); }