aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2006-03-02 03:53:42 +0000
committerWayne Davison <wayned@samba.org>2006-03-02 03:53:42 +0000
commit44c26bf2a18a84c0f492c92c934060fe385096f7 (patch)
tree56203c642e3d676a74f605eec0e20468e8b0a418 /main.c
parentcc8c5057fecefca576daa1f4e891b444f25686fd (diff)
downloadandroid_external_rsync-44c26bf2a18a84c0f492c92c934060fe385096f7.tar.gz
android_external_rsync-44c26bf2a18a84c0f492c92c934060fe385096f7.tar.bz2
android_external_rsync-44c26bf2a18a84c0f492c92c934060fe385096f7.zip
Don't allow overwriting a non-directory with a directory (just
like cp).
Diffstat (limited to 'main.c')
-rw-r--r--main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/main.c b/main.c
index 4b51d31e..3acdfd31 100644
--- a/main.c
+++ b/main.c
@@ -480,6 +480,13 @@ static char *get_local_name(struct file_list *flist, char *dest_path)
" copying more than 1 file\n");
exit_cleanup(RERR_FILESELECT);
}
+ /* Caution: flist->count could be 0! */
+ if (flist->count == 1 && S_ISDIR(flist->files[0]->mode)) {
+ rprintf(FERROR,
+ "ERROR: cannot overwrite non-directory"
+ " with a directory\n");
+ exit_cleanup(RERR_FILESELECT);
+ }
} else if (errno != ENOENT) {
rsyserr(FERROR, errno, "cannot stat destination %s",
full_fname(dest_path));