From ecd375b64aeb3805261916ee3408fadcacd0c448 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 13 Jun 2005 10:15:19 +0000 Subject: [PATCH] (make_dir_parents): New parameter: different_working_dir, to tell caller if/when we change the working directory and are unable to return to the initial one. --- lib/mkdir-p.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/mkdir-p.c b/lib/mkdir-p.c index 839b338..bcda8d4 100644 --- a/lib/mkdir-p.c +++ b/lib/mkdir-p.c @@ -63,6 +63,7 @@ _("failed to return to initial working directory")); \ free_cwd (&cwd); \ errno = _saved_errno; \ + *different_working_dir = true; \ return false; \ } \ free_cwd (&cwd); \ @@ -144,6 +145,9 @@ make_dir (char const *dir, char const *fulldir, mode_t mode, with the name of the directory that was just made as an argument. If PRESERVE_EXISTING is true and ARG is an existing directory, then do not attempt to set its permissions and ownership. + Upon return, set *DIFFERENT_WORKING_DIR to true if this function + has changed the current working directory and is unable to restore + it to its initial state. Return true iff ARG exists as a directory with the proper ownership and permissions when done. */ @@ -155,10 +159,12 @@ make_dir_parents (char const *arg, uid_t owner, gid_t group, bool preserve_existing, - char const *verbose_fmt_string) + char const *verbose_fmt_string, + bool *different_working_dir) { struct stat stats; bool retval = true; + *different_working_dir = false; if (stat (arg, &stats) != 0) { -- 2.7.4