bug-findutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Fix save_cwd/restore_cwd error diagnostics.


From: Dmitry V. Levin
Subject: [PATCH] Fix save_cwd/restore_cwd error diagnostics.
Date: Sat, 19 Dec 2015 00:25:09 +0300

Before this change, a pointer to struct saved_cwd was used in place
of char*, leading to incorrect error diagnostics, e.g.:
$ chmod a-x . && find / -maxdepth 0 -exec true \;
find: Failed to change directory: ÿÿÿÿ: Permission denied
find: failed to restore initial working directory: ÿÿÿÿ: Permission denied

* find/exec.c (prep_child_for_exec): Fix error diagnostics.
* find/util.c (record_initial_cwd, cleanup_initial_cwd): Likewise.
---
 find/exec.c | 4 +++-
 find/util.c | 8 ++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/find/exec.c b/find/exec.c
index a57b6d4..7b6ecf6 100644
--- a/find/exec.c
+++ b/find/exec.c
@@ -282,7 +282,9 @@ prep_child_for_exec (bool close_stdin, const struct 
saved_cwd *wd)
    */
   if (0 != restore_cwd (wd))
     {
-      error (0, errno, _("Failed to change directory: %s"), wd);
+      error (0, errno, _("Failed to change directory%s%s"),
+            (wd->desc < 0 && wd->name) ? ": " : "",
+            (wd->desc < 0 && wd->name) ? wd->name : "");
       ok = false;
     }
   return ok;
diff --git a/find/util.c b/find/util.c
index eb5efa2..0560e63 100644
--- a/find/util.c
+++ b/find/util.c
@@ -456,7 +456,9 @@ record_initial_cwd (void)
   if (0 != save_cwd (initial_wd))
     {
       error (EXIT_FAILURE, errno,
-            _("failed to save initial working directory: %s"), initial_wd);
+            _("Failed to save initial working directory%s%s"),
+            (initial_wd->desc < 0 && initial_wd->name) ? ": " : "",
+            (initial_wd->desc < 0 && initial_wd->name) ? initial_wd->name : 
"");
     }
 }
 
@@ -473,7 +475,9 @@ cleanup_initial_cwd (void)
     {
       /* since we may already be in atexit, die with _exit(). */
       error (0, errno,
-            _("failed to restore initial working directory: %s"), initial_wd);
+            _("Failed to restore initial working directory%s%s"),
+            (initial_wd->desc < 0 && initial_wd->name) ? ": " : "",
+            (initial_wd->desc < 0 && initial_wd->name) ? initial_wd->name : 
"");
       _exit (EXIT_FAILURE);
     }
 }
-- 
2.6.4



-- 
ldv



reply via email to

[Prev in Thread] Current Thread [Next in Thread]