From 541584965693a7e8d90712ad31ccc5285eecce56 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 4 Jun 2018 22:52:02 +0200 Subject: [PATCH] udev: add helper udev_device_new_from_stat_rdev() This is a simple wrapper around udev_device_new_from_devnum(), and uses the data from a struct stat's .st_rdev field to derive the udev_device object. --- src/shared/udev-util.c | 23 +++++++++++++++++++++++ src/shared/udev-util.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/src/shared/udev-util.c b/src/shared/udev-util.c index 81fc805d2..b031353c5 100644 --- a/src/shared/udev-util.c +++ b/src/shared/udev-util.c @@ -45,3 +45,26 @@ int udev_parse_config(void) { return 0; } + +int udev_device_new_from_stat_rdev(struct udev *udev, const struct stat *st, struct udev_device **ret) { + struct udev_device *nd; + char type; + + assert(udev); + assert(st); + assert(ret); + + if (S_ISBLK(st->st_mode)) + type = 'b'; + else if (S_ISCHR(st->st_mode)) + type = 'c'; + else + return -ENOTTY; + + nd = udev_device_new_from_devnum(udev, type, st->st_rdev); + if (!nd) + return -errno; + + *ret = nd; + return 0; +} diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h index 1c5150f60..b91b412b8 100644 --- a/src/shared/udev-util.h +++ b/src/shared/udev-util.h @@ -29,3 +29,5 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_monitor*, udev_monitor_unref); #if 0 /// UNNEEDED by elogind #endif // 0 int udev_parse_config(void); + +int udev_device_new_from_stat_rdev(struct udev *udev, const struct stat *st, struct udev_device **ret); -- 2.30.2