deletion_count--;
return 0;
}
- if (!zap_dir || (errno != ENOTEMPTY && errno != EEXIST)) {
+ if (!zap_dir) {
rsyserr(FERROR, errno, "delete_file: rmdir %s failed",
full_fname(fname));
return -1;
continue;
f_name_to(fp, buf);
- if (delete_item(buf, fp->mode, flags & ~DEL_TERSE) != 0) {
- flist_free(dirlist);
- return -1;
- }
+ delete_item(buf, fp->mode, flags & ~DEL_TERSE);
}
flist_free(dirlist);
if (flist_find(flist, fp) < 0) {
int mode = fp->mode;
f_name_to(fp, delbuf);
- if (delete_item(delbuf, mode, DEL_FORCE_RECURSE) < 0)
- break;
+ delete_item(delbuf, mode, DEL_FORCE_RECURSE);
}
}
: S_ISDIR(file->mode) ? !omit_dir_times
: !S_ISLNK(file->mode);
- if ((iflags & (ITEM_TRANSFER|ITEM_LOCAL_CHANGE) && !keep_time)
- || (keep_time && file->modtime != st->st_mtime))
+ if ((iflags & (ITEM_TRANSFER|ITEM_LOCAL_CHANGE) && !keep_time
+ && (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
+ || (keep_time && cmp_modtime(file->modtime, st->st_mtime) != 0))
iflags |= ITEM_REPORT_TIME;
if (preserve_perms && file->mode != st->st_mode)
iflags |= ITEM_REPORT_PERMS;
name = fp->basename;
if (fp->length == file->length
- && fp->modtime == file->modtime) {
+ && cmp_modtime(fp->modtime, file->modtime) == 0) {
if (verbose > 4) {
rprintf(FINFO,
"fuzzy size/modtime match for %s\n",
if (statret != 0 && do_mkdir(fname,file->mode) != 0 && errno != EEXIST) {
if (!relative_paths || errno != ENOENT
|| create_directory_path(fname, orig_umask) < 0
- || do_mkdir(fname, file->mode) < 0) {
+ || (do_mkdir(fname, file->mode) < 0 && errno != EEXIST)) {
rsyserr(FERROR, errno,
"recv_generator: mkdir %s failed",
full_fname(fname));