diff options
author | Wayne Davison <wayned@samba.org> | 2008-03-30 15:40:34 -0700 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2008-03-30 15:44:46 -0700 |
commit | 29a89172f77ed76dcf53612e96dc35daf15d7362 (patch) | |
tree | cadcb5daf227d3196d1492cc8d8f1a616412b3de /clientserver.c | |
parent | 20893751791a1bb7417b9fa72e91c909619bca6a (diff) | |
download | android_external_rsync-29a89172f77ed76dcf53612e96dc35daf15d7362.tar.gz android_external_rsync-29a89172f77ed76dcf53612e96dc35daf15d7362.tar.bz2 android_external_rsync-29a89172f77ed76dcf53612e96dc35daf15d7362.zip |
Improved the chdir() code:
- Renamed push_dir() to change_dir() and revised it a little so that it
can chdir() to a relative path without an intervening chdir() back to
the staring path.
- Renamed push_pathname() to change_pathname() and revised it to take
different args and to only call path_is_daemon_excluded() on a new
path (not a revisit of a file's already-checked path).
- Fixed change_pathname() to set the right pathname value when a chdir()
call fails.
- Set orig_dir once outside of the change_pathname() function.
- Got rid of pop_dir().
Diffstat (limited to 'clientserver.c')
-rw-r--r-- | clientserver.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clientserver.c b/clientserver.c index 39a8cedf..52913567 100644 --- a/clientserver.c +++ b/clientserver.c @@ -509,15 +509,15 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) out_of_memory("rsync_module"); } - /* We do a push_dir() that doesn't actually call chdir() + /* We do a change_dir() that doesn't actually call chdir() * just to make a relative path absolute. */ strlcpy(line, curr_dir, sizeof line); - if (!push_dir(module_dir, 1)) + if (!change_dir(module_dir, CD_SKIP_CHDIR)) goto chdir_failed; if (strcmp(curr_dir, module_dir) != 0 && (module_dir = strdup(curr_dir)) == NULL) out_of_memory("rsync_module"); - push_dir(line, 1); /* Restore curr_dir. */ + change_dir(line, CD_SKIP_CHDIR); /* Restore curr_dir. */ if (use_chroot) { chroot_path = module_dir; @@ -673,12 +673,12 @@ static int rsync_module(int f_in, int f_out, int i, char *addr, char *host) io_printf(f_out, "@ERROR: chroot failed\n"); return -1; } - if (!push_dir(module_dir, 0)) + if (!change_dir(module_dir, CD_NORMAL)) goto chdir_failed; if (module_dirlen) sanitize_paths = 1; } else { - if (!push_dir(module_dir, 0)) { + if (!change_dir(module_dir, CD_NORMAL)) { chdir_failed: rsyserr(FLOG, errno, "chdir %s failed\n", module_dir); io_printf(f_out, "@ERROR: chdir failed\n"); |