X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/80264051d88a6d845fe6338372e036cdfc0e0414..b98f040ef25bc692ad3864244eed620611f79048:/receiver.c diff --git a/receiver.c b/receiver.c index 10673ca8..bb3097a7 100644 --- a/receiver.c +++ b/receiver.c @@ -57,29 +57,6 @@ extern int inplace; extern struct exclude_list_struct server_exclude_list; -static void delete_one(char *fn, int is_dir) -{ - if (!is_dir) { - if (robust_unlink(fn) != 0) { - rsyserr(FERROR, errno, "delete_one: unlink %s failed", - full_fname(fn)); - } else if (verbose) - rprintf(FINFO, "deleting %s\n", safe_fname(fn)); - } else { - if (do_rmdir(fn) != 0) { - if (errno != ENOTEMPTY && errno != EEXIST) { - rsyserr(FERROR, errno, - "delete_one: rmdir %s failed", - full_fname(fn)); - } - } else if (verbose) { - rprintf(FINFO, "deleting directory %s\n", - safe_fname(fn)); - } - } -} - - static int is_backup_file(char *fn) { int k = strlen(fn) - backup_suffix_len; @@ -105,7 +82,7 @@ void delete_files(struct file_list *flist) } for (j = 0; j < flist->count; j++) { - if (!(flist->files[j]->flags & FLAG_TOP_DIR) + if (!(flist->files[j]->flags & FLAG_DEL_START) || !S_ISDIR(flist->files[j]->mode)) continue; @@ -132,8 +109,10 @@ void delete_files(struct file_list *flist) rprintf(FINFO, "deleting %s\n", safe_fname(f)); } - } else - delete_one(f, S_ISDIR(mode) != 0); + } else { + delete_file(f, S_ISDIR(mode) + ? DEL_DIR | DEL_RECURSE : 0); + } deletion_count++; } }