let greater required =
let current =
let v = Cam_installation.software_version in
try
let p = String.index v '+' in
String.sub v 0 p
with Not_found -> v
in
let f s =
try
let p = String.index_from s 0 '.' in
let major = int_of_string (String.sub s 0 p) in
try
let p2 = String.index_from s (p+1) '.' in
let minor = int_of_string (String.sub s (p+1) (p2 - p - 1)) in
try
let len = String.length s in
let add = int_of_string (String.sub s (p2+1) (len - p2 - 1)) in
(major, minor, add)
with
_ ->
(major, minor, 0)
with
_ ->
(major, 0, 0)
with _ -> (0,0,0)
in
let (major,minor,add) = f current in
let (major_r, minor_r, add_r) = f required in
if major > major_r or
(major = major_r && (minor > minor_r or
(minor = minor_r && add >= add_r))) then
exit 0
else
exit 1