diff options
author | Andreas Oberritter | 2012-05-05 17:47:23 +0200 |
---|---|---|
committer | Denys Vlasenko | 2012-05-05 17:47:23 +0200 |
commit | 556ac3633ce3e7bd51c93b78827ae3874d856257 (patch) | |
tree | a5380391b7dc43cfd5c390e709824f0ff8e5c0a4 | |
parent | 3da46c8163ecf14a02f8317d0b76b225eceaf28c (diff) | |
download | busybox-556ac3633ce3e7bd51c93b78827ae3874d856257.zip busybox-556ac3633ce3e7bd51c93b78827ae3874d856257.tar.gz |
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 a168a1e..738ed02 100644 --- a/libbb/kernel_version.c +++ b/libbb/kernel_version.c @@ -20,18 +20,15 @@ int FAST_FUNC get_linux_version_code(void) { struct utsname name; - char *s; + char *s, *t; int i, r; - if (uname(&name) == -1) { - bb_perror_msg("can't get system information"); - return 0; - } - + uname(&name); /* never fails */ s = name.release; r = 0; for (i = 0; i < 3; i++) { - r = r * 256 + atoi(strtok(s, ".")); + t = strtok(s, "."); + r = r * 256 + (t ? atoi(t) : 0); s = NULL; } return r; |