From f1388e805d13c9203861a592fb38ec7b7965eb36 Mon Sep 17 00:00:00 2001 From: illiliti Date: Sat, 15 Aug 2020 10:53:14 +0300 Subject: [PATCH] create UDEV_MONITOR_DIR --- udev_monitor.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/udev_monitor.c b/udev_monitor.c index 5f7cb91..0b44766 100644 --- a/udev_monitor.c +++ b/udev_monitor.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -210,6 +211,7 @@ struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char { struct udev_monitor *udev_monitor; struct epoll_event epoll; + struct stat st; if (!udev || !name) { return NULL; @@ -221,6 +223,22 @@ struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char return NULL; } + if (lstat(UDEV_MONITOR_DIR, &st) != 0) { + if (mkdir(UDEV_MONITOR_DIR, 0) == -1) { + free(udev_monitor); + return NULL; + } + + if (chmod(UDEV_MONITOR_DIR, 0777) == -1) { + free(udev_monitor); + return NULL; + } + } + else if (!S_ISDIR(st.st_mode)) { + free(udev_monitor); + return NULL; + } + udev_monitor->ifd = inotify_init1(IN_CLOEXEC | IN_NONBLOCK); if (udev_monitor->ifd == -1) {