diff options
author | Tom Gundersen <teg@jklm.no> | 2014-11-13 20:31:20 +0100 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-12-11 13:54:18 +0100 |
commit | b5208e925c152933ef0b1c3cc84368d930aae116 (patch) | |
tree | 088013e1f0a01e61c28c9fe12d2966429e29ae36 | |
parent | db6c0d6bb937efd9007f85f86846b5fcd6d6fc11 (diff) |
sd-device: add sd_device_get_devnode
-rw-r--r-- | src/libsystemd/sd-device/sd-device.c | 20 | ||||
-rw-r--r-- | src/systemd/sd-device.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index dd63e277e..45e8461fb 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -995,6 +995,26 @@ _public_ int sd_device_get_devpath(sd_device *device, const char **devpath) { return 0; } +_public_ int sd_device_get_devnode(sd_device *device, const char **devnode) { + int r; + + assert_return(device, -EINVAL); + assert_return(devnode, -EINVAL); + + r = device_read_uevent_file(device); + if (r < 0) + return r; + + if (!device->devnode) + return -ENOENT; + + assert(path_startswith(device->devnode, "/dev/")); + + *devnode = device->devnode; + + return 0; +} + static int device_get_id_filename(sd_device *device, const char **ret) { assert(device); assert(ret); diff --git a/src/systemd/sd-device.h b/src/systemd/sd-device.h index ca5ad0361..c94c89307 100644 --- a/src/systemd/sd-device.h +++ b/src/systemd/sd-device.h @@ -48,6 +48,7 @@ int sd_device_get_parent_with_subsystem_devtype(sd_device *child, const char *su int sd_device_get_devnum(sd_device *device, dev_t *devnum); int sd_device_get_driver(sd_device *device, const char **ret); int sd_device_get_devpath(sd_device *device, const char **ret); +int sd_device_get_devnode(sd_device *device, const char **ret); int sd_device_get_is_initialized(sd_device *device, int *initialized); int sd_device_get_usec_since_initialized(sd_device *device, uint64_t *usec); |