int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
{
+#ifndef HAVE_LUTIMES
+ if (S_ISLNK(file->mode)) {
+ ;
+ } else
+#endif
+ if (preserve_times && cmp_time(sxp->st.st_mtime, file->modtime) != 0)
+ return 0;
+
if (preserve_perms && !BITS_EQUAL(sxp->st.st_mode, file->mode, CHMOD_BITS))
return 0;
case 2:
if (!unchanged_attrs(cmpbuf, file, sxp))
continue;
- if (always_checksum > 0 && preserve_times
- && cmp_time(sxp->st.st_mtime, file->modtime))
- continue;
best_match = j;
match_level = 3;
break;
if (delete_during == 2 || !dir_tweaking) {
/* Skip directory touch-up. */
- } else if (first_flist->ndx_start != 0)
+ } else if (first_flist->parent_ndx >= 0)
touch_up_dirs(dir_flist, first_flist->parent_ndx);
flist_free(first_flist); /* updates first_flist */
}
#endif
- if (inc_recurse && cur_flist->ndx_start) {
+ if (inc_recurse && cur_flist->parent_ndx >= 0) {
struct file_struct *fp = dir_flist->files[cur_flist->parent_ndx];
f_name(fp, fbuf);
ndx = cur_flist->ndx_start - 1;