summaryrefslogtreecommitdiff
path: root/src/libsystemd
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-04-28 21:37:59 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-04-30 04:14:10 +0900
commit15345fc67739b8b62bcde55521a882d826faf801 (patch)
treec744adc203f352b463fad8651818b76a9889b08f /src/libsystemd
parentdd309fcdb8a5c64e291a7186ed69965ad31134a7 (diff)
downloadsystemd-15345fc67739b8b62bcde55521a882d826faf801.tar.gz
sd-device: introduce device_get_property_bool()
Diffstat (limited to 'src/libsystemd')
-rw-r--r--src/libsystemd/sd-device/device-private.h1
-rw-r--r--src/libsystemd/sd-device/sd-device.c21
2 files changed, 18 insertions, 4 deletions
diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h
index b6b36b6727..5160f58006 100644
--- a/src/libsystemd/sd-device/device-private.h
+++ b/src/libsystemd/sd-device/device-private.h
@@ -17,6 +17,7 @@ static inline int device_new_from_watch_handle(sd_device **ret, int wd) {
return device_new_from_watch_handle_at(ret, -1, wd);
}
+int device_get_property_bool(sd_device *device, const char *key);
int device_get_device_id(sd_device *device, const char **ret);
int device_get_devlink_priority(sd_device *device, int *ret);
int device_get_watch_handle(sd_device *device);
diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
index c7f4c48d42..0bfcdcdf2d 100644
--- a/src/libsystemd/sd-device/sd-device.c
+++ b/src/libsystemd/sd-device/sd-device.c
@@ -2007,6 +2007,20 @@ _public_ int sd_device_get_property_value(sd_device *device, const char *key, co
return 0;
}
+int device_get_property_bool(sd_device *device, const char *key) {
+ const char *value;
+ int r;
+
+ assert(device);
+ assert(key);
+
+ r = sd_device_get_property_value(device, key, &value);
+ if (r < 0)
+ return r;
+
+ return parse_boolean(value);
+}
+
_public_ int sd_device_get_trigger_uuid(sd_device *device, sd_id128_t *ret) {
const char *s;
sd_id128_t id;
@@ -2296,7 +2310,7 @@ _public_ int sd_device_trigger_with_uuid(
_public_ int sd_device_open(sd_device *device, int flags) {
_cleanup_close_ int fd = -1, fd2 = -1;
- const char *devname, *subsystem = NULL, *val = NULL;
+ const char *devname, *subsystem = NULL;
uint64_t q, diskseq = 0;
struct stat st;
dev_t devnum;
@@ -2338,11 +2352,10 @@ _public_ int sd_device_open(sd_device *device, int flags) {
if (FLAGS_SET(flags, O_PATH))
return TAKE_FD(fd);
- r = sd_device_get_property_value(device, "ID_IGNORE_DISKSEQ", &val);
+ r = device_get_property_bool(device, "ID_IGNORE_DISKSEQ");
if (r < 0 && r != -ENOENT)
return r;
-
- if (!val || parse_boolean(val) <= 0) {
+ if (r <= 0) {
r = sd_device_get_diskseq(device, &diskseq);
if (r < 0 && r != -ENOENT)
return r;