To use this patch, run these commands for a successful build:
- patch -p1 <patches/checksum4mirrors.diff
+ patch -p1 <patches/checksum-reading.diff
./configure (optional if already run)
make
---- old/flist.c
-+++ new/flist.c
-@@ -117,6 +117,7 @@ static char empty_sum[MAX_DIGEST_LEN];
+diff --git a/flist.c b/flist.c
+--- a/flist.c
++++ b/flist.c
+@@ -122,6 +122,7 @@ static char empty_sum[MAX_DIGEST_LEN];
static int flist_count_offset; /* for --delete --progress */
static int dir_count = 0;
static int high_hlink_ndx;
static void clean_flist(struct file_list *flist, int strip_root);
static void output_flist(struct file_list *flist);
-@@ -304,6 +305,186 @@ static void flist_done_allocating(struct
+@@ -314,6 +315,186 @@ static void flist_done_allocating(struct file_list *flist)
flist->pool_boundary = ptr;
}
int push_pathname(const char *dir, int len)
{
if (dir == pathname)
-@@ -989,7 +1170,7 @@ struct file_struct *make_file(const char
+@@ -1005,7 +1186,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
STRUCT_STAT *stp, int flags, int filter_level)
{
static char *lastdir;
struct file_struct *file;
char thisname[MAXPATHLEN];
char linkname[MAXPATHLEN];
-@@ -1119,9 +1300,16 @@ struct file_struct *make_file(const char
+@@ -1133,9 +1314,16 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
memcpy(lastdir, thisname, len);
lastdir[len] = '\0';
lastdir_len = len;
basename_len = strlen(basename) + 1; /* count the '\0' */
#ifdef SUPPORT_LINKS
-@@ -1197,11 +1385,21 @@ struct file_struct *make_file(const char
+@@ -1211,11 +1399,21 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
}
#endif
/* This code is only used by the receiver when it is building
* a list of files for a delete pass. */
if (keep_dirlinks && linkname_len && flist) {
-@@ -2051,7 +2249,11 @@ struct file_list *send_file_list(int f,
+@@ -2079,7 +2277,11 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
* file-list to check if this is a 1-file xfer. */
send_extra_file_list(f, 1);
}
return flist;
}
---- old/ifuncs.h
-+++ new/ifuncs.h
+diff --git a/ifuncs.h b/ifuncs.h
+--- a/ifuncs.h
++++ b/ifuncs.h
@@ -64,6 +64,12 @@ isDigit(const char *ptr)
}
isPrint(const char *ptr)
{
return isprint(*(unsigned char *)ptr);
---- old/support/rsyncsums
-+++ new/support/rsyncsums
+diff --git a/support/rsyncsums b/support/rsyncsums
+new file mode 100644
+--- /dev/null
++++ b/support/rsyncsums
@@ -0,0 +1,203 @@
+#!/usr/bin/perl -w
+use strict;