diff options
author | Andreas Oberritter <obi@opendreambox.org> | 2012-05-05 17:47:23 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2012-05-05 17:47:23 +0200 |
commit | 556ac3633ce3e7bd51c93b78827ae3874d856257 (patch) | |
tree | a5380391b7dc43cfd5c390e709824f0ff8e5c0a4 | |
parent | 3da46c8163ecf14a02f8317d0b76b225eceaf28c (diff) | |
download | busybox-w32-556ac3633ce3e7bd51c93b78827ae3874d856257.tar.gz busybox-w32-556ac3633ce3e7bd51c93b78827ae3874d856257.tar.bz2 busybox-w32-556ac3633ce3e7bd51c93b78827ae3874d856257.zip |
get_linux_version_code: don't fail on Linux version strints like "3.0-foo"
Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | libbb/kernel_version.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c index a168a1e4e..738ed022b 100644 --- a/libbb/kernel_version.c +++ b/libbb/kernel_version.c | |||
@@ -20,18 +20,15 @@ | |||
20 | int FAST_FUNC get_linux_version_code(void) | 20 | int FAST_FUNC get_linux_version_code(void) |
21 | { | 21 | { |
22 | struct utsname name; | 22 | struct utsname name; |
23 | char *s; | 23 | char *s, *t; |
24 | int i, r; | 24 | int i, r; |
25 | 25 | ||
26 | if (uname(&name) == -1) { | 26 | uname(&name); /* never fails */ |
27 | bb_perror_msg("can't get system information"); | ||
28 | return 0; | ||
29 | } | ||
30 | |||
31 | s = name.release; | 27 | s = name.release; |
32 | r = 0; | 28 | r = 0; |
33 | for (i = 0; i < 3; i++) { | 29 | for (i = 0; i < 3; i++) { |
34 | r = r * 256 + atoi(strtok(s, ".")); | 30 | t = strtok(s, "."); |
31 | r = r * 256 + (t ? atoi(t) : 0); | ||
35 | s = NULL; | 32 | s = NULL; |
36 | } | 33 | } |
37 | return r; | 34 | return r; |