diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-09-02 07:48:00 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-09-02 07:48:00 +0000 |
commit | fe0aafb162efffbe43f8e89f385934feb6f6abf4 (patch) | |
tree | ce602d4731178be507ddb50be9413e5118381e69 /cpp/src/IceGrid/ServerI.cpp | |
parent | http://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=199 (diff) | |
download | ice-fe0aafb162efffbe43f8e89f385934feb6f6abf4.tar.bz2 ice-fe0aafb162efffbe43f8e89f385934feb6f6abf4.tar.xz ice-fe0aafb162efffbe43f8e89f385934feb6f6abf4.zip |
Fix
Diffstat (limited to 'cpp/src/IceGrid/ServerI.cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerI.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp index 575212c5a91..ff57da37a09 100644 --- a/cpp/src/IceGrid/ServerI.cpp +++ b/cpp/src/IceGrid/ServerI.cpp @@ -79,24 +79,23 @@ struct EnvironmentEval : std::unary_function<string, string> string v = value.substr(assignment + 1); assert(v.size()); string::size_type beg = 0; + string::size_type end; #ifdef _WIN32 -// char buf[32767]; -// while((beg = v.find("%", beg)) != string::npos && beg < v.size() - 1) -// { -// end = v.find("%"); -// if(end == string::npos) -// { -// return v; -// } -// string variable = v.substr(beg + 2, end - beg - 2); -// int ret = GetEnvironmentVariable(variable.c_str(), buf, sizeof(buf)); -// string valstr = ret > 0 ? string(buf) : ""; -// v.replace(beg, end - beg + 1, valstr); -// beg += strlen(value); -// } - return value; + char buf[32767]; + while((beg = v.find("%", beg)) != string::npos && beg < v.size() - 1) + { + end = v.find("%", beg + 1); + if(end == string::npos) + { + break; + } + string variable = v.substr(beg + 1, end - beg - 1); + int ret = GetEnvironmentVariable(variable.c_str(), buf, sizeof(buf)); + string valstr = (ret > 0 && ret < sizeof(buf)) ? string(buf) : ""; + v.replace(beg, end - beg + 1, valstr); + beg += valstr.size(); + } #else - string::size_type end;
while((beg = v.find("$", beg)) != string::npos && beg < v.size() - 1) { string variable; @@ -105,7 +104,7 @@ struct EnvironmentEval : std::unary_function<string, string> end = v.find("}"); if(end == string::npos) { - return v; + break; } variable = v.substr(beg + 2, end - beg - 2); } |