if ((statret = do_stat(dest_path, &st)) == 0) {
/* If the destination is a dir, enter it and use mode 1. */
if (S_ISDIR(st.st_mode)) {
if ((statret = do_stat(dest_path, &st)) == 0) {
/* If the destination is a dir, enter it and use mode 1. */
if (S_ISDIR(st.st_mode)) {
- if (!push_dir(dest_path, 0)) {
- rsyserr(FERROR, errno, "push_dir#1 %s failed",
+ if (!change_dir(dest_path, CD_NORMAL)) {
+ rsyserr(FERROR, errno, "change_dir#1 %s failed",
- if (!push_dir(dest_path, dry_run > 1)) {
- rsyserr(FERROR, errno, "push_dir#2 %s failed",
+ if (!change_dir(dest_path, dry_run > 1 ? CD_SKIP_CHDIR : CD_NORMAL)) {
+ rsyserr(FERROR, errno, "change_dir#2 %s failed",
- if (!push_dir(dest_path, 0)) {
- rsyserr(FERROR, errno, "push_dir#3 %s failed",
+ if (!change_dir(dest_path, CD_NORMAL)) {
+ rsyserr(FERROR, errno, "change_dir#3 %s failed",
- if (!push_dir(dir, 0)) {
- rsyserr(FERROR, errno, "push_dir#3 %s failed",
+ if (!change_dir(dir, CD_NORMAL)) {
+ rsyserr(FERROR, errno, "change_dir#3 %s failed",
- if (!am_daemon && !push_dir(dir, 0)) {
- rsyserr(FERROR, errno, "push_dir#4 %s failed",
+ if (!am_daemon && !change_dir(dir, CD_NORMAL)) {
+ rsyserr(FERROR, errno, "change_dir#4 %s failed",
* (implemented by forking "pwd" and reading its output) doesn't
* work when there are other child processes. Also, on all systems
* that implement getcwd that way "pwd" can't be found after chroot. */
* (implemented by forking "pwd" and reading its output) doesn't
* work when there are other child processes. Also, on all systems
* that implement getcwd that way "pwd" can't be found after chroot. */