]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(make_dir_parents): New parameter: different_working_dir,
authorJim Meyering <jim@meyering.net>
Mon, 13 Jun 2005 10:15:19 +0000 (10:15 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 13 Jun 2005 10:15:19 +0000 (10:15 +0000)
to tell caller if/when we change the working directory and are
unable to return to the initial one.

lib/mkdir-p.c

index 839b338427f643edfbc46075ad314a2081e509a8..bcda8d48274966493bae6d4540b3d22c4e2094e3 100644 (file)
@@ -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)
     {