findutils/find-process-unreadable-directories-with-depth.patch
2019-09-30 10:38:48 -04:00

50 lines
1.5 KiB
Diff

From 22ff99e150faa82980361e577cff643cc17e7fac Mon Sep 17 00:00:00 2001
From: Bernhard Voelker <mail@bernhard-voelker.de>
Date: Sun, 8 Jul 2018 00:17:27 +0200
Subject: [PATCH 176/224] find: process unreadable directories with -depth
* find/ftsfind.c (consider_visiting): Split the FTS_ERR and FTS_DNR
cases to be able to continue processing that entry in the latter case
(unreadable directory) when the -depth option is given.
* NEWS (Bug Fixes): Mention the fix.
Reported by Tavian Barnes in https://savannah.gnu.org/bugs/?54171.
---
NEWS | 4 ++++
find/ftsfind.c | 15 +++++++++++++--
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/find/ftsfind.c b/find/ftsfind.c
index 0e2aca33..607ea8d3 100644
--- a/find/ftsfind.c
+++ b/find/ftsfind.c
@@ -342,12 +342,23 @@ consider_visiting (FTS *p, FTSENT *ent)
statbuf.st_ino = ent->fts_statp->st_ino;
/* Cope with various error conditions. */
- if (ent->fts_info == FTS_ERR
- || ent->fts_info == FTS_DNR)
+ if (ent->fts_info == FTS_ERR)
{
nonfatal_target_file_error (ent->fts_errno, ent->fts_path);
return;
}
+ if (ent->fts_info == FTS_DNR)
+ {
+ nonfatal_target_file_error (ent->fts_errno, ent->fts_path);
+ if (options.do_dir_first)
+ {
+ /* Return for unreadable directories without -depth.
+ * With -depth, the directory itself has to be processed, yet the
+ * error message above has to be output.
+ */
+ return;
+ }
+ }
else if (ent->fts_info == FTS_DC)
{
issue_loop_warning (ent);
--
2.19.1