diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-04-28 21:37:59 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-04-30 04:14:10 +0900 |
commit | 15345fc67739b8b62bcde55521a882d826faf801 (patch) | |
tree | c744adc203f352b463fad8651818b76a9889b08f /src/libsystemd | |
parent | dd309fcdb8a5c64e291a7186ed69965ad31134a7 (diff) | |
download | systemd-15345fc67739b8b62bcde55521a882d826faf801.tar.gz |
sd-device: introduce device_get_property_bool()
Diffstat (limited to 'src/libsystemd')
-rw-r--r-- | src/libsystemd/sd-device/device-private.h | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-device/sd-device.c | 21 |
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; |