Fixed a couple iconv loops to properly handle incomplete chars
[rsync/rsync.git] / generator.c
index 11a7cb9..acf4b88 100644 (file)
@@ -417,7 +417,7 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
        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
@@ -476,7 +476,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
                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
@@ -1923,7 +1923,7 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
                        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)