diff options
Diffstat (limited to 'libbb/kernel_version.c')
-rw-r--r-- | libbb/kernel_version.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c index 7769a091b..6bb32ce5f 100644 --- a/libbb/kernel_version.c +++ b/libbb/kernel_version.c | |||
@@ -19,15 +19,17 @@ int FAST_FUNC get_linux_version_code(void) | |||
19 | { | 19 | { |
20 | struct utsname name; | 20 | struct utsname name; |
21 | char *t; | 21 | char *t; |
22 | int i, r; | 22 | int r; |
23 | 23 | ||
24 | uname(&name); /* never fails */ | 24 | uname(&name); /* never fails */ |
25 | t = name.release; | 25 | t = name.release - 1; |
26 | r = 0; | 26 | r = 1; |
27 | for (i = 0; i < 3; i++) { | 27 | do { |
28 | t = strtok(t, "."); | 28 | r <<= 8; |
29 | r = r * 256 + (t ? atoi(t) : 0); | 29 | if (t) { |
30 | t = NULL; | 30 | r += atoi(++t); |
31 | } | 31 | t = strchr(t, '.'); |
32 | return r; | 32 | } |
33 | } while (r < 0x1000000); | ||
34 | return r - 0x1000000; | ||
33 | } | 35 | } |