This source file includes following definitions.
- get_val
- parse_version
- cmp_chdk_version
- chk_api_version
1 #include "stdlib.h"
2 #include "string.h"
3 #include "versions.h"
4
5
6 _chdk_version_t chdk_version;
7
8
9 static const char* get_val(const char *s, short *v)
10 {
11 if (s && *s)
12 {
13 *v = strtol(s, (char**)&s, 0);
14 if (s && (*s == '.')) s++;
15 }
16 return s;
17 }
18
19
20 void parse_version(_chdk_version_t *ver, const char *build, const char *rev)
21 {
22 memset(ver, 0, sizeof(_chdk_version_t));
23 build = get_val(build, &ver->major);
24 build = get_val(build, &ver->minor);
25 build = get_val(build, &ver->maintenance);
26 get_val(build, &ver->revision);
27 get_val(rev, &ver->revision);
28 }
29
30
31
32 int cmp_chdk_version(_chdk_version_t ver1, _chdk_version_t ver2)
33 {
34 if (ver1.major < ver2.major) return -1;
35 if (ver1.major > ver2.major) return 1;
36 if (ver1.minor < ver2.minor) return -1;
37 if (ver1.minor > ver2.minor) return 1;
38 if (ver1.maintenance < ver2.maintenance) return -1;
39 if (ver1.maintenance > ver2.maintenance) return 1;
40 if (ver1.revision < ver2.revision) return -1;
41 if (ver1.revision > ver2.revision) return 1;
42 return 0;
43 }
44
45
46
47 int chk_api_version(_version_t api_ver, _version_t req_ver)
48 {
49 if (req_ver.major == 0)
50 return 1;
51
52 if ((api_ver.major == req_ver.major) && (api_ver.minor >= req_ver.minor))
53 return 1;
54 return 0;
55
56 }
57
58