sd-device: split out checking of matches from enumerator_scan_dir_and_add_devices()

No change in behaviour, just some splitting out of code.
This commit is contained in:
Lennart Poettering
2022-04-13 14:41:04 +02:00
parent 5cf0ee31ec
commit e7c7d79d52
+37 -14
View File
@@ -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;