X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev_lib.c;h=a3fab9632d28a273079b46115f2361a63edb1168;hb=d4a32aa2e4804de9189574213749616dda57faa7;hp=6807f817a1e7b119e6ea8ca64dc2d1d628192c95;hpb=8673dcb84299fd2adba6281c5359bed4399d5b2d;p=elogind.git diff --git a/udev_lib.c b/udev_lib.c index 6807f817a..a3fab9632 100644 --- a/udev_lib.c +++ b/udev_lib.c @@ -28,6 +28,7 @@ #include #include #include +#include #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];