Example #1
0
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);
}
Example #2
0
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);
}