mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-05-24 23:05:52 -04:00
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.
This commit is contained in:
13
generator.c
13
generator.c
@@ -1358,6 +1358,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
|
||||
&& !am_root && sx.st.st_uid == our_uid)
|
||||
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 (!implied_dirs && file->flags & FLAG_IMPLIED_DIR)
|
||||
goto cleanup;
|
||||
@@ -1663,12 +1670,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
|
||||
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
|
||||
&& cmp_time(sx.st.st_mtime, file->modtime) > 0) {
|
||||
if (verbose > 1)
|
||||
|
||||
Reference in New Issue
Block a user