diff options
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | include/Makefile.am | 3 | ||||
-rw-r--r-- | include/linux_version.h | 14 | ||||
-rw-r--r-- | lib/linux_version.c | 25 |
4 files changed, 43 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index 7005b5ce7..1ea72c6b9 100644 --- a/configure.ac +++ b/configure.ac @@ -46,7 +46,8 @@ AC_CHECK_HEADERS( rpcsvc/nfs_prot.h \ sys/io.h \ pty.h \ - err.h]) + err.h \ + linux/version.h]) AC_CHECK_HEADERS([linux/raw.h], [AM_CONDITIONAL([HAVE_RAW], [true])], [AM_CONDITIONAL([HAVE_RAW], [false])]) diff --git a/include/Makefile.am b/include/Makefile.am index e45ce3982..275661dee 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,4 +1,5 @@ include $(top_srcdir)/config/include-Makefile.am dist_noinst_HEADERS = carefulputc.h env.h linux_reboot.h md5.h \ - nls.h pathnames.h setproctitle.h widechar.h xstrncpy.h + nls.h pathnames.h setproctitle.h widechar.h xstrncpy.h \ + linux_version.h diff --git a/include/linux_version.h b/include/linux_version.h new file mode 100644 index 000000000..a6a1e99c7 --- /dev/null +++ b/include/linux_version.h @@ -0,0 +1,14 @@ +#ifndef LINUX_VERSION_H +#define LINUX_VERSION_H + +#ifdef HAVE_LINUX_VERSION_H +# include <linux/version.h> +#endif + +#ifndef KERNEL_VERSION +# define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +#endif + +int get_linux_version(void); + +#endif /* LINUX_VERSION_H */ diff --git a/lib/linux_version.c b/lib/linux_version.c new file mode 100644 index 000000000..f9fbd8dff --- /dev/null +++ b/lib/linux_version.c @@ -0,0 +1,25 @@ +#include <stdio.h> +#include <sys/utsname.h> + +#include "linux_version.h" + +int +get_linux_version (void) +{ + static int kver = -1; + struct utsname uts; + int major; + int minor; + int teeny; + + if (kver != -1) + return kver; + if (uname (&uts)) + kver = 0; + else if (sscanf (uts.release, "%d.%d.%d", &major, &minor, &teeny) != 3) + kver = 0; + else + kver = KERNEL_VERSION (major, minor, teeny); + + return kver; +} |