X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/273a7ed59f03b1f50348cca57cfc6877f8634900..0417c34e2d641cbac292ba5cf8a619249c87d4e3:/generator.c diff --git a/generator.c b/generator.c index f131c1a3..3ed33851 100644 --- a/generator.c +++ b/generator.c @@ -446,8 +446,8 @@ static void sum_sizes_sqroot(struct sum_struct *sum, int64 len) sum->flength = len; sum->blength = blength; sum->s2length = s2length; - sum->count = (len + (blength - 1)) / blength; - sum->remainder = (len % blength); + sum->remainder = len % blength; + sum->count = len / blength + (sum->remainder != 0); if (sum->count && verbose > 2) { rprintf(FINFO, @@ -812,9 +812,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, } if (am_root && preserve_devices && IS_DEVICE(file->mode)) { - if (statret != 0 || - st.st_mode != file->mode || - st.st_rdev != file->u.rdev) { + if (statret != 0 + || (st.st_mode & ~CHMOD_BITS) != (file->mode & ~CHMOD_BITS) + || st.st_rdev != file->u.rdev) { if (delete_item(fname, st.st_mode, DEL_TERSE) < 0) return; if (preserve_hard_links && file->link_u.links