Add file path to fts_read failure messages to make errors more
actionable. This resolves FIXME comments requesting better error
reporting during recursive operations.

Changes "fts_read failed: Permission denied" to
"fts_read failed: '/path/to/file': Permission denied"

* src/chcon.c (process_files): Include fts_path in error.
* src/chmod.c (process_files): Likewise.
* src/chown-core.c (chown_files): Likewise.
* src/remove.c (rm): Likewise.

Signed-off-by: Shubham Chakraborty <[email protected]>
---
 src/chcon.c      | 4 ++--
 src/chmod.c      | 4 ++--
 src/chown-core.c | 4 ++--
 src/remove.c     | 3 ++-
 4 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/chcon.c b/src/chcon.c
index 91b78148d..c3f6ca309 100644
--- a/src/chcon.c
+++ b/src/chcon.c
@@ -325,8 +325,8 @@ process_files (char **files, int bit_flags)
         {
           if (errno != 0)
             {
-              /* FIXME: try to give a better message  */
-              error (0, errno, _("fts_read failed"));
+              error (0, errno, _("fts_read failed: %s"),
+                     quotef (fts->fts_path));
               ok = false;
             }
           break;
diff --git a/src/chmod.c b/src/chmod.c
index 8b5717270..dd501787e 100644
--- a/src/chmod.c
+++ b/src/chmod.c
@@ -383,9 +383,9 @@ process_files (char **files, int bit_flags)
         {
           if (errno != 0)
             {
-              /* FIXME: try to give a better message  */
               if (! force_silent)
-                error (0, errno, _("fts_read failed"));
+                error (0, errno, _("fts_read failed: %s"),
+                       quotef (fts->fts_path));
               ok = false;
             }
           break;
diff --git a/src/chown-core.c b/src/chown-core.c
index e5e355fdb..6d1caf1c4 100644
--- a/src/chown-core.c
+++ b/src/chown-core.c
@@ -552,9 +552,9 @@ chown_files (char **files, int bit_flags,
         {
           if (errno != 0)
             {
-              /* FIXME: try to give a better message  */
               if (! chopt->force_silent)
-                error (0, errno, _("fts_read failed"));
+                error (0, errno, _("fts_read failed: %s"),
+                       quotef (fts->fts_path));
               ok = false;
             }
           break;
diff --git a/src/remove.c b/src/remove.c
index 99696e5de..5a2568d64 100644
--- a/src/remove.c
+++ b/src/remove.c
@@ -622,7 +622,8 @@ rm (char *const *file, struct rm_options const *x)
             {
               if (errno != 0)
                 {
-                  error (0, errno, _("fts_read failed"));
+                  error (0, errno, _("fts_read failed: %s"),
+                         quotef (fts->fts_path));
                   rm_status = RM_ERROR;
                 }
               break;
-- 
2.39.5




Reply via email to