--- coreutils-8.23/lib/fts.c~ 2014-06-25 09:43:35.000000000 +0100 +++ coreutils-8.23/lib/fts.c 2016-06-15 19:12:08.517298812 +0100 @@ -1448,9 +1448,16 @@ while (cur->fts_dirp) { bool is_dir; size_t d_namelen; + int errno_before_readdir = errno; + __set_errno (0); struct dirent *dp = readdir(cur->fts_dirp); - if (dp == NULL) + if (dp == NULL) { + cur->fts_info = FTS_DNR; + cur->fts_errno = errno; break; + } else { + __set_errno (errno_before_readdir); + } if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name)) continue;