sd-device: simplify code flow

This function was written as if it wanted to do some cleanup after exiting from
the loop, but that never happened.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-07-13 11:12:00 +02:00
parent d89457a145
commit 09ace4c76d
+15 -23
View File
@@ -613,38 +613,30 @@ static int enumerator_add_parent_devices(
sd_device *device,
MatchFlag flags) {
int k, r = 0;
int r;
assert(enumerator);
assert(device);
for (;;) {
k = sd_device_get_parent(device, &device);
if (k == -ENOENT) /* Reached the top? */
break;
if (k < 0) {
r = k;
break;
}
r = sd_device_get_parent(device, &device);
if (r == -ENOENT) /* Reached the top? */
return 0;
if (r < 0)
return r;
k = test_matches(enumerator, device, flags);
if (k < 0) {
r = k;
break;
}
if (k == 0)
r = test_matches(enumerator, device, flags);
if (r < 0)
return r;
if (r == 0)
continue;
k = device_enumerator_add_device(enumerator, device);
if (k < 0) {
r = k;
break;
}
if (k == 0) /* Exists already? Then no need to go further up. */
break;
r = device_enumerator_add_device(enumerator, device);
if (r < 0)
return r;
if (r == 0) /* Exists already? Then no need to go further up. */
return 0;
}
return r;
}
int device_enumerator_add_parent_devices(sd_device_enumerator *enumerator, sd_device *device) {