return (procps_linux_version() > 0);
}
+int check_conversion(void *data)
+{
+ testname = "LINUX_VERSION macro";
+ struct testvals {
+ int retval;
+ int major, minor, patch;
+ };
+
+ struct testvals *tv;
+ struct testvals tvs[] = {
+ { 132096, 2, 4, 0 },
+ { 132635, 2, 6, 27 },
+ { 199936, 3, 13, 0 },
+ { 263426, 4, 5, 2 },
+ { 0, 0, 0, 0}
+ };
+
+ for (tv=tvs; tv->major != 0; tv++)
+ {
+ if (LINUX_VERSION(tv->major, tv->minor, tv->patch) != tv->retval) {
+ fprintf(stderr, "Failed %d != %d\n", LINUX_VERSION(tv->major, tv->minor,
+ tv->patch), tv->retval);
+ return 0;
+ }
+ }
+ return 1;
+}
+
TestFunction test_funcs[] = {
+ check_conversion,
check_linux_version,
NULL
};
int procps_linux_version(void);
/* Convenience macros for composing/decomposing version codes */
-#define LINUX_VERSION(x,y,z) (0x10000*((x)&0x7fff) + 0x100*((y)&0xff) + (z)&0xff)
+#define LINUX_VERSION(x,y,z) (0x10000*((x)&0x7fff) + 0x100*((y)&0xff) + ((z)&0xff))
#define LINUX_VERSION_MAJOR(x) (((x)>>16) & 0xFF)
#define LINUX_VERSION_MINOR(x) (((x)>> 8) & 0xFF)
#define LINUX_VERSION_PATCH(x) ( (x) & 0xFF)