X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4c36ddbeecdde407c870109d70527640ca127ace..fe8c0a9824bf990ae3ff692d25105dd2c9f0ebf4:/rsync.c diff --git a/rsync.c b/rsync.c index 555c009a..b61128b1 100644 --- a/rsync.c +++ b/rsync.c @@ -74,6 +74,7 @@ static int delete_file(char *fname) extern int force_delete; STRUCT_STAT st; int ret; + extern int recurse; if (do_unlink(fname) == 0 || errno == ENOENT) return 0; @@ -93,7 +94,8 @@ static int delete_file(char *fname) } if (do_rmdir(fname) == 0 || errno == ENOENT) return 0; - if (!force_delete || (errno != ENOTEMPTY && errno != EEXIST)) { + if (!force_delete || !recurse || + (errno != ENOTEMPTY && errno != EEXIST)) { rprintf(FERROR,"rmdir(%s) : %s\n", fname, strerror(errno)); return -1; } @@ -636,11 +638,7 @@ static void add_delete_entry(struct file_struct *file) { if (dlist_len == dlist_alloc_len) { dlist_alloc_len += 1024; - if (!delete_list) { - delete_list = (struct delete_list *)malloc(sizeof(delete_list[0])*dlist_alloc_len); - } else { - delete_list = (struct delete_list *)realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len); - } + delete_list = (struct delete_list *)Realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len); if (!delete_list) out_of_memory("add_delete_entry"); }