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) {