diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-04-04 19:57:15 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-04-04 19:57:15 +0000 |
commit | d19e12277d306b1c675d09f8fae6c24ce6f02d31 (patch) | |
tree | ab0a38466dd5d53375db7466a76c6b7f3976f855 /cpp/src/IcePack/DescriptorParser.cpp | |
parent | Added registration thread (diff) | |
download | ice-d19e12277d306b1c675d09f8fae6c24ce6f02d31.tar.bz2 ice-d19e12277d306b1c675d09f8fae6c24ce6f02d31.tar.xz ice-d19e12277d306b1c675d09f8fae6c24ce6f02d31.zip |
It's now possible to escape variables
Added updateObject method to IceGrid Admin interface.
Diffstat (limited to 'cpp/src/IcePack/DescriptorParser.cpp')
-rw-r--r-- | cpp/src/IcePack/DescriptorParser.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/cpp/src/IcePack/DescriptorParser.cpp b/cpp/src/IcePack/DescriptorParser.cpp index 3f971b45e1e..e7485df2c40 100644 --- a/cpp/src/IcePack/DescriptorParser.cpp +++ b/cpp/src/IcePack/DescriptorParser.cpp @@ -667,6 +667,26 @@ DescriptorHandler::substitute(const string& v) const while((beg = value.find("${", beg)) != string::npos) { + if(beg > 0 && value[beg - 1] == '$') + { + string::size_type escape = beg - 1; + while(escape > 0 && value[escape - 1] == '$') + { + --escape; + } + + value.replace(escape, beg - escape, (beg - escape) / 2, '$'); + if((beg - escape) % 2) + { + ++beg; + continue; + } + else + { + beg -= (beg - escape) / 2; + } + } + end = value.find("}", beg); if(end == string::npos) |