diff --git a/src/libsystemd/sd-device/device-util.h b/src/libsystemd/sd-device/device-util.h index b9a29f6924..0561a172ae 100644 --- a/src/libsystemd/sd-device/device-util.h +++ b/src/libsystemd/sd-device/device-util.h @@ -2,6 +2,7 @@ #pragma once #include +#include #include #include "sd-device.h" @@ -82,4 +83,8 @@ #define log_device_error_errno(device, error, ...) log_device_full_errno(device, LOG_ERR, error, __VA_ARGS__) int devname_from_devnum(mode_t mode, dev_t devnum, char **ret); +static inline int devname_from_stat_rdev(const struct stat *st, char **ret) { + assert(st); + return devname_from_devnum(st->st_mode, st->st_rdev, ret); +} int device_open_from_devnum(mode_t mode, dev_t devnum, int flags, char **ret); diff --git a/src/libsystemd/sd-device/test-sd-device.c b/src/libsystemd/sd-device/test-sd-device.c index 758a2a380d..0016aa08e7 100644 --- a/src/libsystemd/sd-device/test-sd-device.c +++ b/src/libsystemd/sd-device/test-sd-device.c @@ -514,6 +514,9 @@ static void test_devname_from_devnum_one(const char *path) { assert_se(devname_from_devnum(st.st_mode, st.st_rdev, &resolved) >= 0); assert_se(path_equal(path, resolved)); + resolved = mfree(resolved); + assert_se(devname_from_stat_rdev(&st, &resolved) >= 0); + assert_se(path_equal(path, resolved)); } TEST(devname_from_devnum) {