00001 #include "Env.h"
00002 #include <cstdlib>
00003 #include <iostream>
00004
00005 using namespace std;
00006
00007 namespace Sct {
00008
00009
00010
00011
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 }