diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-12-21 09:35:55 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-12-21 09:35:55 +0000 |
commit | 58a095756e6dba2e48c1460cbc4712b7fbfcb028 (patch) | |
tree | f5fa3572de69b1720720ebfab9e3b9a9ec813fa7 /cpp/src/IceGrid/Util.cpp | |
parent | *** empty log message *** (diff) | |
download | ice-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.cpp | 32 |
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)); |