int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
{
-#if !defined HAVE_LUTIMES || !defined HAVE_UTIMES
+#ifndef CAN_SET_SYMLINK_TIMES
if (S_ISLNK(file->mode)) {
;
} else
if (preserve_acls && !S_ISLNK(file->mode)) {
if (!ACL_READY(*sxp))
get_acl(fname, sxp);
- if (set_acl(NULL, file, sxp) == 0)
+ if (set_acl(NULL, file, sxp, file->mode))
return 0;
}
#endif
if (statret >= 0) { /* A from-dest-dir statret can == 1! */
int keep_time = !preserve_times ? 0
: S_ISDIR(file->mode) ? preserve_times > 1 :
-#if defined HAVE_LUTIMES && defined HAVE_UTIMES
+#ifdef CAN_SET_SYMLINK_TIMES
1;
#else
!S_ISLNK(file->mode);
if (preserve_acls && !S_ISLNK(file->mode)) {
if (!ACL_READY(*sxp))
get_acl(fnamecmp, sxp);
- if (set_acl(NULL, file, sxp) == 0)
+ if (set_acl(NULL, file, sxp, file->mode))
iflags |= ITEM_REPORT_ACL;
}
#endif
char *cmpbuf, stat_x *sxp, int itemizing,
enum logcode code)
{
- char lnk[MAXPATHLEN];
int best_match = -1;
int match_level = 0;
enum nonregtype type;
uint32 *devp;
- int len, j = 0;
+#ifdef SUPPORT_LINKS
+ char lnk[MAXPATHLEN];
+ int len;
+#endif
+ int j = 0;
#ifndef SUPPORT_LINKS
if (S_ISLNK(file->mode))
if (!IS_DEVICE(sxp->st.st_mode))
continue;
break;
-#ifdef SUPPORT_LINKS
case TYPE_SYMLINK:
+#ifdef SUPPORT_LINKS
if (!S_ISLNK(sxp->st.st_mode))
continue;
break;
+#else
+ return -1;
#endif
}
if (match_level < 1) {
if (sxp->st.st_rdev != MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp)))
continue;
break;
-#ifdef SUPPORT_LINKS
case TYPE_SYMLINK:
- if ((len = readlink(cmpbuf, lnk, MAXPATHLEN-1)) <= 0)
+#ifdef SUPPORT_LINKS
+ if ((len = do_readlink(cmpbuf, lnk, MAXPATHLEN-1)) <= 0)
continue;
lnk[len] = '\0';
if (strcmp(lnk, F_SYMLINK(file)) != 0)
continue;
break;
+#else
+ return -1;
#endif
}
if (match_level < 2) {
int len;
if (S_ISLNK(sx.st.st_mode)
- && (len = readlink(fname, lnk, MAXPATHLEN-1)) > 0
+ && (len = do_readlink(fname, lnk, MAXPATHLEN-1)) > 0
&& strncmp(lnk, sl, len) == 0 && sl[len] == '\0') {
/* The link is pointing to the right place. */
set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT);
STRUCT_STAT st;
if (link_stat(fname, &st, 0) == 0
&& cmp_time(st.st_mtime, file->modtime) != 0)
- set_modtime(fname, file->modtime, file->mode);
+ set_modtime(fname, file->modtime, F_MOD_NSEC(file), file->mode);
}
if (counter >= loopchk_limit) {
if (allowed_lull)