summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-11-13 20:31:20 +0100
committerTom Gundersen <teg@jklm.no>2014-12-11 13:54:18 +0100
commitb5208e925c152933ef0b1c3cc84368d930aae116 (patch)
tree088013e1f0a01e61c28c9fe12d2966429e29ae36
parentdb6c0d6bb937efd9007f85f86846b5fcd6d6fc11 (diff)
sd-device: add sd_device_get_devnode
-rw-r--r--src/libsystemd/sd-device/sd-device.c20
-rw-r--r--src/systemd/sd-device.h1
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);