aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Oberritter <obi@opendreambox.org>2012-05-05 17:47:23 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2012-05-05 17:47:23 +0200
commit556ac3633ce3e7bd51c93b78827ae3874d856257 (patch)
treea5380391b7dc43cfd5c390e709824f0ff8e5c0a4
parent3da46c8163ecf14a02f8317d0b76b225eceaf28c (diff)
downloadbusybox-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.c11
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 @@
20int FAST_FUNC get_linux_version_code(void) 20int 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;