]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib: [linux_version.c] simplify version parsing
authorKarel Zak <kzak@redhat.com>
Mon, 20 Jun 2011 11:48:40 +0000 (13:48 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 20 Jun 2011 11:48:40 +0000 (13:48 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
lib/linux_version.c

index ada566ad08a20932ba18ecd424fcb6d3650bc9ef..2bcc2cc65b43a1697fb8044b0765c1310e7cd747 100644 (file)
@@ -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);
 }