assert_se(r == -ENOENT);
r = sd_device_get_subsystem(d, &subsystem);
- if (r >= 0) {
+ if (r < 0)
+ assert_se(r == -ENOENT);
+ else if (!streq(subsystem, "gpio")) { /* Unfortunately, there exist /sys/class/gpio and /sys/bus/gpio.
+ * Hence, sd_device_new_from_subsystem_sysname() and
+ * sd_device_new_from_device_id() may not work as expected. */
const char *name, *id;
if (streq(subsystem, "drivers"))
r = sd_device_get_property_value(d, "ID_NET_DRIVER", &val);
assert_se(r >= 0 || r == -ENOENT);
- } else
- assert_se(r == -ENOENT);
+ }
is_block = streq_ptr(subsystem, "block");