diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-02-16 22:30:01 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2017-02-20 22:58:04 +0000 |
commit | 08c3f380313a1262729bd0dbbbf5a85b6f695e81 (patch) | |
tree | 36af4fd723a036e7abca08e268fac691437b796c /src/common/util.cpp | |
parent | dns_utils: factor TXT record loading code from checkpoint code (diff) | |
download | monero-08c3f380313a1262729bd0dbbbf5a85b6f695e81.tar.xz |
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
Diffstat (limited to 'src/common/util.cpp')
-rw-r--r-- | src/common/util.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/common/util.cpp b/src/common/util.cpp index bfcf86bc6..2741497d6 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -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; + } } |