Env.cpp

00001 #include "Env.h"
00002 #include <cstdlib>
00003 #include <iostream>
00004 
00005 using namespace std;
00006 
00007 namespace Sct {
00008 
00009 //Internal private functions:
00010 
00011 //Substitutes a single variable
00012 size_t substituteVariable(string& str, size_t startPos) {
00013     size_t start = str.find("${", startPos);
00014     if (start == string::npos) return string::npos;
00015     size_t end = str.find('}', start+2);
00016     if (end == string::npos) return string::npos;
00017 
00018     string varName = str.substr(start+2, end-start-2);
00019     char* varValue = getenv(varName.c_str());
00020     if (varValue == NULL) return end;
00021 
00022     str.replace(start, end-start+1, varValue);
00023 
00024     return end;
00025 }
00026 
00027 
00028 string Env::substituteVariables(string str) {
00029     size_t pos = 0;
00030     while ((pos = substituteVariable(str, pos)) != string::npos) {}
00031     return str;
00032 }
00033 
00034 }

Generated on Mon Feb 6 14:01:19 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6