summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Util.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2007-09-20 15:55:05 -0400
committerBernard Normier <bernard@zeroc.com>2007-09-20 15:55:05 -0400
commitf185946cfbced2bf5e6bf8deb0993a18057664d5 (patch)
tree8a2de32151d5dc71bd0353feefa21de018e85f2f /cpp/src/IceGrid/Util.cpp
parentfix for compilation errors with Python 2.5 (diff)
downloadice-f185946cfbced2bf5e6bf8deb0993a18057664d5.tar.bz2
ice-f185946cfbced2bf5e6bf8deb0993a18057664d5.tar.xz
ice-f185946cfbced2bf5e6bf8deb0993a18057664d5.zip
Squashed commit of the following:
commit 2eba3087584d54d3ba98ef50724710fd34d84e0b Author: Bernard Normier <bernard@zeroc.com> Date: Thu Sep 20 15:53:49 2007 -0400 New ice-version attribute, IceGrid now generates Ice.Admin.* properties
Diffstat (limited to 'cpp/src/IceGrid/Util.cpp')
-rw-r--r--cpp/src/IceGrid/Util.cpp93
1 files changed, 91 insertions, 2 deletions
diff --git a/cpp/src/IceGrid/Util.cpp b/cpp/src/IceGrid/Util.cpp
index 3d7bd18f961..dee6ef441a9 100644
--- a/cpp/src/IceGrid/Util.cpp
+++ b/cpp/src/IceGrid/Util.cpp
@@ -63,14 +63,31 @@ IceGrid::toString(const Ice::Exception& exception)
string
IceGrid::getProperty(const PropertyDescriptorSeq& properties, const string& name, const string& def)
{
+ string result = def;
+
for(PropertyDescriptorSeq::const_iterator q = properties.begin(); q != properties.end(); ++q)
{
if(q->name == name)
{
- return q->value;
+ result = q->value;
}
}
- return def;
+ return result;
+}
+
+bool
+IceGrid::isSet(const PropertyDescriptorSeq& properties, const string& name)
+{
+ bool result = false;
+
+ for(PropertyDescriptorSeq::const_iterator q = properties.begin(); q != properties.end(); ++q)
+ {
+ if(q->name == name)
+ {
+ result = (q->value != "");
+ }
+ }
+ return result;
}
PropertyDescriptor
@@ -82,3 +99,75 @@ IceGrid::createProperty(const string& name, const string& value)
return prop;
}
+
+int
+IceGrid::getMMVersion(const string& o)
+{
+ //
+ // Strip the version
+ //
+ string::size_type beg = o.find_first_not_of(' ');
+ string::size_type end = o.find_last_not_of(' ');
+ string version = o.substr(beg == string::npos ? 0 : beg, end == string::npos ? o.length() - 1 : end - beg + 1);
+
+ string::size_type minorPos = version.find('.');
+ string::size_type patchPos = version.find('.', minorPos + 1);
+
+ if(minorPos != 1 && minorPos != 2)
+ {
+ return -1;
+ }
+
+ if(patchPos != string::npos)
+ {
+ if((minorPos == 1 && patchPos != 3 && patchPos != 4) || (minorPos == 2 && patchPos != 4 && patchPos != 5))
+ {
+ return -1;
+ }
+ else if((version.size() - patchPos - 1) > 2)
+ {
+ return -1;
+ }
+ }
+ else if((version.size() - minorPos - 1) > 2)
+ {
+ return -1;
+ }
+
+ int v, ver;
+
+ istringstream major(version.substr(0, minorPos));
+ major >> v;
+ if(major.fail() || v > 99 || v < 1)
+ {
+ return -1;
+ }
+ ver = v;
+ ver *= 100;
+
+ istringstream minor(version.substr(minorPos + 1, patchPos != string::npos ? patchPos : version.size()));
+ minor >> v;
+ if(minor.fail() || v > 99 || v < 0)
+ {
+ return -1;
+ }
+ ver += v;
+ ver *= 100;
+
+ //
+ // No need to get the patch number, we're only interested in
+ // MAJOR.MINOR
+ //
+ // if(patchPos != string::npos)
+ // {
+ // istringstream patch(version.substr(patchPos + 1));
+ // patch >> v;
+ // if(patch.fail() || v > 99 || v < 0)
+ // {
+ // return -1;
+ // }
+ // ver += v;
+ // }
+
+ return ver;
+}