summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/DescriptorParser.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-04-04 19:57:15 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-04-04 19:57:15 +0000
commitd19e12277d306b1c675d09f8fae6c24ce6f02d31 (patch)
treeab0a38466dd5d53375db7466a76c6b7f3976f855 /cpp/src/IcePack/DescriptorParser.cpp
parentAdded registration thread (diff)
downloadice-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.cpp20
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)