From: Lennart Poettering Date: Mon, 11 Apr 2022 21:00:52 +0000 (+0200) Subject: sd-device: split out checking of matches from enumerator_scan_dir_and_add_devices() X-Git-Tag: v251-rc2~131^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7c7d79d52643656cb97d60003a6a3f44fecf916;p=thirdparty%2Fsystemd.git sd-device: split out checking of matches from enumerator_scan_dir_and_add_devices() No change in behaviour, just some splitting out of code. --- diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c index 61645f44d81..55b8aba53ac 100644 --- a/src/libsystemd/sd-device/device-enumerator.c +++ b/src/libsystemd/sd-device/device-enumerator.c @@ -547,7 +547,42 @@ static int match_initialized(sd_device_enumerator *enumerator, sd_device *device return (enumerator->match_initialized == MATCH_INITIALIZED_NO) == (r == 0); } -static int enumerator_scan_dir_and_add_devices(sd_device_enumerator *enumerator, const char *basedir, const char *subdir1, const char *subdir2) { +static int test_matches( + sd_device_enumerator *enumerator, + sd_device *device) { + + int r; + + assert(enumerator); + assert(device); + + /* Checks all matches, except for the sysname match (which the caller should check beforehand) */ + + r = match_initialized(enumerator, device); + if (r <= 0) + return r; + + if (!device_match_parent(device, enumerator->match_parent, NULL)) + return false; + + if (!match_tag(enumerator, device)) + return false; + + if (!match_property(enumerator, device)) + return false; + + if (!device_match_sysattr(device, enumerator->match_sysattr, enumerator->nomatch_sysattr)) + return false; + + return true; +} + +static int enumerator_scan_dir_and_add_devices( + sd_device_enumerator *enumerator, + const char *basedir, + const char *subdir1, + const char *subdir2) { + _cleanup_closedir_ DIR *dir = NULL; char *path; int k, r = 0; @@ -589,25 +624,13 @@ static int enumerator_scan_dir_and_add_devices(sd_device_enumerator *enumerator, continue; } - k = match_initialized(enumerator, device); + k = test_matches(enumerator, device); if (k <= 0) { if (k < 0) r = k; continue; } - if (!device_match_parent(device, enumerator->match_parent, NULL)) - continue; - - if (!match_tag(enumerator, device)) - continue; - - if (!match_property(enumerator, device)) - continue; - - if (!device_match_sysattr(device, enumerator->match_sysattr, enumerator->nomatch_sysattr)) - continue; - k = device_enumerator_add_device(enumerator, device); if (k < 0) r = k;