util: add a vercmp function to compare version numbers

It is simple, supports simple x.y.z type numeric versions,
and does not attempt any kind of validation
This commit is contained in:
moneromooo-monero 2017-02-16 22:30:01 +00:00
parent e8a7525ceb
commit 08c3f38031
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
4 changed files with 63 additions and 1 deletions

View file

@ -568,4 +568,21 @@ std::string get_nix_version_display_string()
MDEBUG("Address '" << address << "' is not local");
return false;
}
int vercmp(const char *v0, const char *v1)
{
std::vector<std::string> f0, f1;
boost::split(f0, v0, boost::is_any_of("."));
boost::split(f1, v1, boost::is_any_of("."));
while (f0.size() < f1.size())
f0.push_back("0");
while (f1.size() < f0.size())
f1.push_back("0");
for (size_t i = 0; i < f0.size(); ++i) {
int f0i = atoi(f0[i].c_str()), f1i = atoi(f1[i].c_str());
int n = f0i - f1i;
if (n)
return n;
}
return 0;
}
}