+bool
+UpdateChecker::version_less_than (string const & a, string const & b)
+{
+ vector<string> ap;
+ split (ap, a, is_any_of ("."));
+ vector<string> bp;
+ split (bp, b, is_any_of ("."));
+
+ DCPOMATIC_ASSERT (ap.size() == 3 && bp.size() == 3);
+
+ if (ap[0] != bp[0]) {
+ return raw_convert<int> (ap[0]) < raw_convert<int> (bp[0]);
+ }
+
+ if (ap[1] != bp[1]) {
+ return raw_convert<int> (ap[1]) < raw_convert<int> (bp[1]);
+ }
+ float am;
+ if (ends_with (ap[2], "devel")) {
+ am = raw_convert<int> (ap[2].substr (0, ap[2].length() - 5)) + 0.5;
+ } else {
+ am = raw_convert<int> (ap[2]);
+ }