- int i;
- STRUCT_STAT st;
-
- if (link_stat(f_name(flist->files[j]), &st)) return 1;
-
- for (i=0;i<dlist_len;i++) {
- if (st.st_ino == delete_list[i].inode &&
- st.st_dev == delete_list[i].dev)
- return 1;
- }
-
- return 0;
-}
-
-static void add_delete_entry(struct file_struct *file)
-{
- if (dlist_len == dlist_alloc_len) {
- dlist_alloc_len += 1024;
- delete_list = (struct delete_list *)Realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len);
- if (!delete_list) out_of_memory("add_delete_entry");
- }
-
- delete_list[dlist_len].dev = file->dev;
- delete_list[dlist_len].inode = file->inode;
- dlist_len++;
-
- if (verbose > 3)
- rprintf(FINFO,"added %s to delete list\n", f_name(file));
-}
-
-static void delete_one(struct file_struct *f)
-{
- if (!S_ISDIR(f->mode)) {
- if (robust_unlink(f_name(f)) != 0) {
- rprintf(FERROR,"unlink %s : %s\n",f_name(f),strerror(errno));
- } else if (verbose) {
- rprintf(FINFO,"deleting %s\n",f_name(f));
- }
- } else {
- if (do_rmdir(f_name(f)) != 0) {
- if (errno != ENOTEMPTY && errno != EEXIST)
- rprintf(FERROR,"rmdir %s : %s\n",f_name(f),strerror(errno));
+ 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));
+ }