A simple change to change_pathname() to ensure that the error output
authorWayne Davison <wayned@samba.org>
Mon, 31 Mar 2008 14:46:47 +0000 (07:46 -0700)
committerWayne Davison <wayned@samba.org>
Mon, 31 Mar 2008 14:46:47 +0000 (07:46 -0700)
mentions the right path when dir == NULL.

flist.c

diff --git a/flist.c b/flist.c
index 4e302aa..b0b05dc 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -366,19 +366,23 @@ int change_pathname(struct file_struct *file, const char *dir, int dirlen)
                        change_dir(orig_dir, CD_SKIP_CHDIR);
        }
 
                        change_dir(orig_dir, CD_SKIP_CHDIR);
        }
 
-       if (!change_dir(dir ? dir : orig_dir, CD_NORMAL)) {
+       pathname = dir;
+       pathname_len = dirlen;
+
+       if (!dir)
+               dir = orig_dir;
+
+       if (!change_dir(dir, CD_NORMAL)) {
          chdir_error:
                io_error |= IOERR_GENERAL;
                rsyserr(FERROR, errno, "change_dir %s failed", full_fname(dir));
          chdir_error:
                io_error |= IOERR_GENERAL;
                rsyserr(FERROR, errno, "change_dir %s failed", full_fname(dir));
-               change_dir(orig_dir, CD_NORMAL);
+               if (dir != orig_dir)
+                       change_dir(orig_dir, CD_NORMAL);
                pathname = NULL;
                pathname_len = 0;
                return 0;
        }
 
                pathname = NULL;
                pathname_len = 0;
                return 0;
        }
 
-       pathname = dir;
-       pathname_len = dirlen;
-
        return 1;
 }
 
        return 1;
 }