--- old/flist.c
+++ new/flist.c
-@@ -33,6 +33,7 @@ extern int am_sender;
+@@ -33,6 +33,7 @@ extern int am_generator;
extern int inc_recurse;
extern int do_progress;
extern int always_checksum;
extern int module_id;
extern int ignore_errors;
extern int numeric_ids;
-@@ -882,6 +883,15 @@ static struct file_struct *recv_file_ent
+@@ -955,6 +956,15 @@ static struct file_struct *recv_file_ent
memcpy(bp, F_SUM(first), checksum_len);
} else
read_buf(f, bp, checksum_len);
extern int checksum_len;
extern char *partial_dir;
extern char *basis_dir[];
-@@ -590,7 +591,8 @@ void itemize(const char *fname, struct f
+@@ -618,7 +619,8 @@ void itemize(const char *fnamecmp, struc
/* Perform our quick-check heuristic for determining if a file is unchanged. */
{
if (st->st_size != F_LENGTH(file))
return 0;
-@@ -599,6 +601,8 @@ int unchanged_file(char *fn, struct file
+@@ -627,6 +629,8 @@ int unchanged_file(char *fn, struct file
of the file time to determine whether to sync */
if (always_checksum > 0 && S_ISREG(st->st_mode)) {
char sum[MAX_DIGEST_LEN];
file_checksum(fn, sum, st->st_size);
return memcmp(sum, F_SUM(file), checksum_len) == 0;
}
-@@ -819,7 +823,7 @@ static int try_dests_reg(struct file_str
+@@ -847,7 +851,7 @@ static int try_dests_reg(struct file_str
match_level = 1;
/* FALL THROUGH */
case 1:
continue;
best_match = j;
match_level = 2;
-@@ -1524,7 +1528,7 @@ static void recv_generator(char *fname,
+@@ -1575,7 +1579,7 @@ static void recv_generator(char *fname,
;
else if (fnamecmp_type == FNAMECMP_FUZZY)
;
handle_partial_dir(partialptr, PDIR_DELETE);
--- old/hlink.c
+++ new/hlink.c
-@@ -384,7 +384,7 @@ int hard_link_check(struct file_struct *
+@@ -392,7 +392,7 @@ int hard_link_check(struct file_struct *
}
break;
}
+ if (pre_checksum)
+ pop_dir(olddir);
+
- if (flist && flist->count > 0) {
+ if (flist && flist->used > 0) {
local_name = get_local_name(flist, argv[0]);
--- old/rsync.h
+++ new/rsync.h
-@@ -70,6 +70,7 @@
- #define FLAG_HLINK_LAST (1<<7) /* receiver/generator */
+@@ -71,6 +71,7 @@
#define FLAG_HLINK_DONE (1<<8) /* receiver/generator */
#define FLAG_LENGTH64 (1<<9) /* sender/receiver/generator */
-+#define FLAG_SUM_DIFFERS (1<<10)/* receiver/generator */
+ #define FLAG_SKIP_GROUP (1<<10) /* receiver/generator */
++#define FLAG_SUM_DIFFERS (1<<11)/* receiver/generator */
/* These flags are passed to functions but not stored. */