From: Jim Meyering Date: Mon, 13 Jun 2005 10:15:19 +0000 (+0000) Subject: (make_dir_parents): New parameter: different_working_dir, X-Git-Tag: CPPI-1_12~642 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ecd375b64aeb3805261916ee3408fadcacd0c448;p=thirdparty%2Fcoreutils.git (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. --- diff --git a/lib/mkdir-p.c b/lib/mkdir-p.c index 839b338427..bcda8d4827 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) {