summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Util.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-12-21 09:35:55 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-12-21 09:35:55 +0000
commit58a095756e6dba2e48c1460cbc4712b7fbfcb028 (patch)
treef5fa3572de69b1720720ebfab9e3b9a9ec813fa7 /cpp/src/IceGrid/Util.cpp
parent*** empty log message *** (diff)
downloadice-58a095756e6dba2e48c1460cbc4712b7fbfcb028.tar.bz2
ice-58a095756e6dba2e48c1460cbc4712b7fbfcb028.tar.xz
ice-58a095756e6dba2e48c1460cbc4712b7fbfcb028.zip
Fixed iceVersion issues
Diffstat (limited to 'cpp/src/IceGrid/Util.cpp')
-rw-r--r--cpp/src/IceGrid/Util.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/cpp/src/IceGrid/Util.cpp b/cpp/src/IceGrid/Util.cpp
index 895dc8cbde7..1952592285e 100644
--- a/cpp/src/IceGrid/Util.cpp
+++ b/cpp/src/IceGrid/Util.cpp
@@ -83,15 +83,39 @@ IceGrid::createProperty(const string& name, const string& value)
}
int
-IceGrid::getMMVersion(const string& version)
+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('.');
- if(minorPos == string::npos || minorPos >= version.size())
+ string::size_type patchPos = version.find('.', minorPos + 1);
+
+ if(minorPos != 1 && minorPos != 2)
{
return -1;
}
- string::size_type patchPos = version.find('.', minorPos + 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));