Commit ddaef70c authored by Wayne Davison's avatar Wayne Davison

Make the --ignore-existing option not overwrite a regular file with

a dir/symlink/device/special-file, just like it already refuses to
overwrite a non-regular file with a regular file.
parent 2357a51e
...@@ -1358,6 +1358,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, ...@@ -1358,6 +1358,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
&& !am_root && sx.st.st_uid == our_uid) && !am_root && sx.st.st_uid == our_uid)
del_opts |= DEL_NO_UID_WRITE; del_opts |= DEL_NO_UID_WRITE;
if (ignore_existing > 0 && statret == 0
&& (!is_dir || !S_ISDIR(sx.st.st_mode))) {
if (verbose > 1 && is_dir >= 0)
rprintf(FINFO, "%s exists\n", fname);
goto cleanup;
}
if (is_dir) { if (is_dir) {
if (!implied_dirs && file->flags & FLAG_IMPLIED_DIR) if (!implied_dirs && file->flags & FLAG_IMPLIED_DIR)
goto cleanup; goto cleanup;
...@@ -1663,12 +1670,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, ...@@ -1663,12 +1670,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto cleanup; goto cleanup;
} }
if (ignore_existing > 0 && statret == 0) {
if (verbose > 1)
rprintf(FINFO, "%s exists\n", fname);
goto cleanup;
}
if (update_only > 0 && statret == 0 if (update_only > 0 && statret == 0
&& cmp_time(sx.st.st_mtime, file->modtime) > 0) { && cmp_time(sx.st.st_mtime, file->modtime) > 0) {
if (verbose > 1) if (verbose > 1)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment