From: Karel Zak Date: Mon, 20 Jun 2011 11:48:40 +0000 (+0200) Subject: lib: [linux_version.c] simplify version parsing X-Git-Tag: v2.20-rc1~160 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=85d5acb8d2c172b58eae01d04697f84ab843a37f;p=thirdparty%2Futil-linux.git lib: [linux_version.c] simplify version parsing Signed-off-by: Karel Zak --- diff --git a/lib/linux_version.c b/lib/linux_version.c index ada566ad08..2bcc2cc65b 100644 --- a/lib/linux_version.c +++ b/lib/linux_version.c @@ -3,23 +3,23 @@ #include "linux_version.h" -int -get_linux_version (void) +int get_linux_version (void) { static int kver = -1; struct utsname uts; - int major; - int minor; - int teeny; + int major = 0; + int minor = 0; + int teeny = 0; + int n; if (kver != -1) return kver; if (uname (&uts)) - kver = 0; - else if (sscanf (uts.release, "%d.%d.%d", &major, &minor, &teeny) == 3) - kver = KERNEL_VERSION (major, minor, teeny); - else if (sscanf (uts.release, "%d.%d", &major, &minor) == 2) - kver = KERNEL_VERSION (major, minor, 0); + return kver = 0; - return kver; + n = sscanf(uts.release, "%d.%d.%d", &major, &minor, &teeny); + if (n < 1 || n > 3) + return kver = 0; + + return kver = KERNEL_VERSION(major, minor, teeny); }