- if (preserve_times && !S_ISLNK(st->st_mode) &&
- cmp_modtime(st->st_mtime, file->modtime) != 0) {
+ if (!preserve_times || S_ISLNK(st->st_mode)
+ || (make_backups && !backup_dir && S_ISDIR(st->st_mode)))
+ flags |= PERMS_SKIP_MTIME;
+ if (!(flags & PERMS_SKIP_MTIME)
+ && cmp_modtime(st->st_mtime, file->modtime) != 0) {