path = strjoina(path, subdir2, "/");
dir = opendir(path);
- if (!dir)
+ if (!dir) {
+ bool ignore = errno == ENOENT;
+
/* this is necessarily racey, so ignore missing directories */
- return (errno == ENOENT && (subdir1 || subdir2)) ? 0 : -errno;
+ log_debug_errno(errno,
+ "sd-device-enumerator: Failed to open directory %s%s: %m",
+ path, ignore ? ", ignoring" : "");
+ return ignore ? 0 : -errno;
+ }
FOREACH_DIRENT_ALL(de, dir, return -errno) {
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
path = strjoina("/sys/", basedir);
dir = opendir(path);
- if (!dir)
- return -errno;
+ if (!dir) {
+ bool ignore = errno == ENOENT;
+
+ log_debug_errno(errno,
+ "sd-device-enumerator: Failed to open directory %s%s: %m",
+ path, ignore ? ", ignoring" : "");
+ return ignore ? 0 : -errno;
+ }
FOREACH_DIRENT_ALL(de, dir, return -errno) {
int k;
dir = opendir(path);
if (!dir) {
- if (errno != ENOENT)
- return log_debug_errno(errno, "sd-device-enumerator: Failed to open tags directory %s: %m", path);
- return 0;
+ bool ignore = errno == ENOENT;
+
+ log_debug_errno(errno,
+ "sd-device-enumerator: Failed to open directory %s%s: %m",
+ path, ignore ? ", ignoring" : "");
+ return ignore ? 0 : -errno;
}
/* TODO: filter away subsystems? */
dir = opendir(path);
if (!dir) {
- if (errno == ENOENT)
- return 0;
- return log_debug_errno(errno, "sd-device-enumerator: Failed to open %s: %m", path);
+ bool ignore = errno == ENOENT;
+
+ log_debug_errno(errno,
+ "sd-device-enumerator: Failed to open directory %s%s: %m",
+ path, ignore ? ", ignoring" : "");
+ return ignore ? 0 : -errno;
}
FOREACH_DIRENT_ALL(de, dir, return -errno) {