chiark / gitweb /
[PATCH] don't wait for sysfs if the kernel(2.6.10-rc2) tells us what not to expect
[elogind.git] / udev_lib.c
index 6807f817a1e7b119e6ea8ca64dc2d1d628192c95..a3fab9632d28a273079b46115f2361a63edb1168 100644 (file)
@@ -28,6 +28,7 @@
 #include <dirent.h>
 #include <sys/stat.h>
 #include <sys/mman.h>
+#include <sys/utsname.h>
 
 #include "udev.h"
 #include "logging.h"
@@ -72,6 +73,29 @@ void udev_set_values(struct udevice *udev, const char* devpath,
        udev->type = get_device_type(devpath, subsystem);
 }
 
+int kernel_release_satisfactory(int version, int patchlevel, int sublevel)
+{
+       static struct utsname uts;
+       static int kversion = 0;
+       static int kpatchlevel;
+       static int ksublevel;
+
+       if (kversion == 0) {
+               if (uname(&uts) != 0)
+                       return -1;
+
+               if (sscanf (uts.release, "%u.%u.%u", &kversion, &kpatchlevel, &ksublevel) != 3) {
+                       kversion = 0;
+                       return -1;
+               }
+       }
+
+       if (kversion >= version && kpatchlevel >= patchlevel && ksublevel >= sublevel)
+               return 1;
+       else
+               return 0;
+}
+
 int create_path(const char *path)
 {
        char p[NAME_SIZE];