From cce593bad53de280f0d69dbc24c8be420b185b95 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Fri, 17 Apr 2015 14:11:00 +0200 Subject: sd-device: enumerator - match only on initialized devices by default It is still possible to include uninitialized ones, but now that is opt-in. In most cases people only want initialized devices. Exception is if you want to work without udev running. Suggested by David Herrmann. --- src/libsystemd/sd-device/device-enumerator.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/libsystemd/sd-device/device-enumerator.c') diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c index eb637f5a5..49c44bc47 100644 --- a/src/libsystemd/sd-device/device-enumerator.c +++ b/src/libsystemd/sd-device/device-enumerator.c @@ -52,7 +52,7 @@ struct sd_device_enumerator { Set *match_sysname; Set *match_tag; sd_device *match_parent; - bool match_is_initialized; + bool match_allow_uninitialized; }; _public_ int sd_device_enumerator_new(sd_device_enumerator **ret) { @@ -250,10 +250,20 @@ _public_ int sd_device_enumerator_add_match_parent(sd_device_enumerator *enumera return 0; } -_public_ int sd_device_enumerator_add_match_is_initialized(sd_device_enumerator *enumerator) { +_public_ int sd_device_enumerator_allow_uninitialized(sd_device_enumerator *enumerator) { assert_return(enumerator, -EINVAL); - enumerator->match_is_initialized = true; + enumerator->match_allow_uninitialized = true; + + enumerator->scan_uptodate = false; + + return 0; +} + +int device_enumerator_add_match_is_initialized(sd_device_enumerator *enumerator) { + assert_return(enumerator, -EINVAL); + + enumerator->match_allow_uninitialized = false; enumerator->scan_uptodate = false; @@ -527,7 +537,7 @@ static int enumerator_scan_dir_and_add_devices(sd_device_enumerator *enumerator, * might not store a database, and have no way to find out * for all other types of devices. */ - if (enumerator->match_is_initialized && + if (!enumerator->match_allow_uninitialized && !initialized && (major(devnum) > 0 || ifindex > 0)) continue; -- cgit v1.2.3