From 22cd0b38131cb07e9ca0b0b8ff326fb67b4c432d Mon Sep 17 00:00:00 2001 From: n3f4s Date: Thu, 8 Jul 2021 17:22:49 +0200 Subject: Don't stop listing files in dir when stat fail Check errno when stat fail during traversal of a directory: doesn't stop traversing for all stat errors --- src/navigator.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/navigator.c b/src/navigator.c index d62ea52..e93d682 100644 --- a/src/navigator.c +++ b/src/navigator.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "list.h" @@ -87,8 +88,12 @@ int imv_navigator_add(struct imv_navigator *nav, const char *path, snprintf(path_buf, sizeof path_buf, "%s/%s", path, dir->d_name); struct stat new_path_info; if (stat(path_buf, &new_path_info)) { - result = 1; - break; + switch (errno) { + case ELOOP: + case ENOTDIR: + case ENOENT: continue; + default: result = 1; break; + } } int is_dir = S_ISDIR(new_path_info.st_mode); if (is_dir && recursive) { -- cgit v1.2.3