X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/e897210106a2626b8a627fde067949f6275981d5..6ac9ce9a46c911cbaa7f3d1c33f49f595373622d:/checksum-reading.diff diff --git a/checksum-reading.diff b/checksum-reading.diff index 0314d6c..0b0492f 100644 --- a/checksum-reading.diff +++ b/checksum-reading.diff @@ -69,15 +69,15 @@ diff --git a/flist.c b/flist.c extern int copy_links; extern int copy_unsafe_links; extern int protocol_version; -@@ -68,6 +70,7 @@ extern int sanitize_paths; - extern int munge_symlinks; +@@ -69,6 +71,7 @@ extern int munge_symlinks; extern int need_unsorted_flist; + extern int sender_symlink_iconv; extern int unsort_ndx; +extern char *basis_dir[]; extern struct stats stats; extern char *filesfrom_host; -@@ -83,6 +86,12 @@ extern int filesfrom_convert; +@@ -84,6 +87,12 @@ extern int filesfrom_convert; extern iconv_t ic_send, ic_recv; #endif @@ -90,7 +90,7 @@ diff --git a/flist.c b/flist.c #define PTR_SIZE (sizeof (struct file_struct *)) int io_error; -@@ -124,7 +133,11 @@ static char empty_sum[MAX_DIGEST_LEN]; +@@ -125,7 +134,11 @@ static char empty_sum[MAX_DIGEST_LEN]; static int flist_count_offset; /* for --delete --progress */ static int dir_count = 0; @@ -103,7 +103,7 @@ diff --git a/flist.c b/flist.c static void output_flist(struct file_list *flist); void init_flist(void) -@@ -338,6 +351,238 @@ static void flist_done_allocating(struct file_list *flist) +@@ -339,6 +352,238 @@ static void flist_done_allocating(struct file_list *flist) flist->pool_boundary = ptr; } @@ -342,7 +342,7 @@ diff --git a/flist.c b/flist.c /* Call this with EITHER (1) "file, NULL, 0" to chdir() to the file's * F_PATHNAME(), or (2) "NULL, dir, dirlen" to chdir() to the supplied dir, * with dir == NULL taken to be the starting directory, and dirlen < 0 -@@ -1032,7 +1277,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1068,7 +1313,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, STRUCT_STAT *stp, int flags, int filter_level) { static char *lastdir; @@ -351,7 +351,7 @@ diff --git a/flist.c b/flist.c struct file_struct *file; char thisname[MAXPATHLEN]; char linkname[MAXPATHLEN]; -@@ -1171,9 +1416,16 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1207,9 +1452,16 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, memcpy(lastdir, thisname, len); lastdir[len] = '\0'; lastdir_len = len; @@ -369,7 +369,7 @@ diff --git a/flist.c b/flist.c basename_len = strlen(basename) + 1; /* count the '\0' */ #ifdef SUPPORT_LINKS -@@ -1250,14 +1502,18 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1286,14 +1538,18 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, memcpy(bp + basename_len, linkname, linkname_len); #endif @@ -391,7 +391,7 @@ diff --git a/flist.c b/flist.c /* 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) { -@@ -2177,7 +2433,8 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) +@@ -2253,7 +2509,8 @@ 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); } @@ -401,7 +401,7 @@ diff --git a/flist.c b/flist.c return flist; } -@@ -2279,7 +2536,7 @@ struct file_list *recv_file_list(int f) +@@ -2355,7 +2612,7 @@ struct file_list *recv_file_list(int f) else if (f >= 0) recv_id_list(f, flist); @@ -410,7 +410,7 @@ diff --git a/flist.c b/flist.c if (protocol_version < 30) { /* Recv the io_error flag */ -@@ -2477,7 +2734,7 @@ void flist_free(struct file_list *flist) +@@ -2553,7 +2810,7 @@ void flist_free(struct file_list *flist) /* This routine ensures we don't have any duplicate names in our file list. * duplicate names can cause corruption because of the pipelining. */ @@ -419,7 +419,7 @@ diff --git a/flist.c b/flist.c { char fbuf[MAXPATHLEN]; int i, prev_i; -@@ -2528,7 +2785,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root) +@@ -2604,7 +2861,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root) /* If one is a dir and the other is not, we want to * keep the dir because it might have contents in the * list. Otherwise keep the first one. */ @@ -428,7 +428,7 @@ diff --git a/flist.c b/flist.c struct file_struct *fp = flist->sorted[j]; if (!S_ISDIR(fp->mode)) keep = i, drop = j; -@@ -2544,8 +2801,8 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root) +@@ -2620,8 +2877,8 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root) } else keep = j, drop = i; @@ -439,7 +439,7 @@ diff --git a/flist.c b/flist.c rprintf(FINFO, "removing duplicate name %s from file list (%d)\n", f_name(file, fbuf), drop + flist->ndx_start); -@@ -2567,7 +2824,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root) +@@ -2643,7 +2900,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root) } flist->high = prev_i; @@ -541,7 +541,7 @@ diff --git a/generator.c b/generator.c diff --git a/hlink.c b/hlink.c --- a/hlink.c +++ b/hlink.c -@@ -385,7 +385,7 @@ int hard_link_check(struct file_struct *file, int ndx, const char *fname, +@@ -386,7 +386,7 @@ int hard_link_check(struct file_struct *file, int ndx, const char *fname, } break; } @@ -687,7 +687,7 @@ diff --git a/options.c b/options.c diff --git a/rsync.h b/rsync.h --- a/rsync.h +++ b/rsync.h -@@ -690,6 +690,10 @@ extern int xattrs_ndx; +@@ -692,6 +692,10 @@ extern int xattrs_ndx; #define F_SUM(f) ((char*)OPT_EXTRA(f, LEN64_BUMP(f) + HLINK_BUMP(f) \ + SUM_EXTRA_CNT - 1)) @@ -698,7 +698,7 @@ diff --git a/rsync.h b/rsync.h /* Some utility defines: */ #define F_IS_ACTIVE(f) (f)->basename[0] #define F_IS_HLINKED(f) ((f)->flags & FLAG_HLINKED) -@@ -868,6 +872,13 @@ typedef struct { +@@ -870,6 +874,13 @@ typedef struct { char fname[1]; /* has variable size */ } relnamecache;