X-Git-Url: https://mattmccutchen.net/rsync/rsync-patches.git/blobdiff_plain/9127013998bd097f699897b0f2b142fe2ba71e9d..3215b7e17bc725ab1f9d9f53bfbecb80d0642c90:/checksum-updating.diff diff --git a/checksum-updating.diff b/checksum-updating.diff index dabcccd..bea59fa 100644 --- a/checksum-updating.diff +++ b/checksum-updating.diff @@ -389,8 +389,8 @@ diff --git a/flist.c b/flist.c } /* Call this with EITHER (1) "file, NULL, 0" to chdir() to the file's -@@ -1364,6 +1575,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, - if (excl_ret) { +@@ -1371,6 +1582,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, + if (is_excluded(thisname, S_ISDIR(st.st_mode) != 0, filter_level)) { if (ignore_perishable) non_perishable_cnt++; + if (S_ISREG(st.st_mode)) @@ -398,7 +398,7 @@ diff --git a/flist.c b/flist.c return NULL; } -@@ -1410,13 +1623,13 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1417,13 +1630,13 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, lastdir[len] = '\0'; lastdir_len = len; if (checksum_files && am_sender && flist) @@ -414,7 +414,7 @@ diff --git a/flist.c b/flist.c } } basename_len = strlen(basename) + 1; /* count the '\0' */ -@@ -1498,7 +1711,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, +@@ -1509,7 +1722,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist, if (always_checksum && am_sender && S_ISREG(st.st_mode)) { if (flist && checksum_files) @@ -423,7 +423,7 @@ diff --git a/flist.c b/flist.c else file_checksum(thisname, st.st_size, tmp_sum); } -@@ -1824,6 +2037,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len, +@@ -1839,6 +2052,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len, closedir(d); @@ -433,16 +433,16 @@ diff --git a/flist.c b/flist.c if (f >= 0 && recurse && !divert_dirs) { int i, end = flist->used - 1; /* send_if_directory() bumps flist->used, so use "end". */ -@@ -2417,6 +2633,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) - } +@@ -2436,6 +2652,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) } else flist_eof = 1; -+ + + if (checksum_files & CSF_UPDATE && flist_eof) + reset_checksum_cache(0); /* writes any last updates */ - ++ return flist; } + diff --git a/generator.c b/generator.c --- a/generator.c +++ b/generator.c @@ -454,7 +454,7 @@ diff --git a/generator.c b/generator.c static const char *solo_file = NULL; /* For calling delete_item() and delete_dir_contents(). */ -@@ -720,7 +721,7 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st, int slot +@@ -723,7 +724,7 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st, int slot if (always_checksum > 0 && S_ISREG(st->st_mode)) { char sum[MAX_DIGEST_LEN]; if (checksum_files && slot >= 0) @@ -463,7 +463,7 @@ diff --git a/generator.c b/generator.c else file_checksum(fn, st->st_size, sum); return memcmp(sum, F_SUM(file), checksum_len) == 0; -@@ -1353,7 +1354,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1366,7 +1367,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, fuzzy_dirlist = get_dirlist(fnamecmpbuf, -1, 1); } if (checksum_files) { @@ -473,7 +473,7 @@ diff --git a/generator.c b/generator.c } need_new_dirscan = 0; } -@@ -1498,6 +1500,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1516,6 +1518,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, else change_local_filter_dir(fname, strlen(fname), F_DEPTH(file)); } @@ -481,7 +481,7 @@ diff --git a/generator.c b/generator.c goto cleanup; } -@@ -1790,6 +1793,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, +@@ -1808,6 +1811,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, handle_partial_dir(partialptr, PDIR_DELETE); } set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT); @@ -490,7 +490,7 @@ diff --git a/generator.c b/generator.c if (itemizing) itemize(fnamecmp, file, ndx, statret, &sx, 0, 0, NULL); #ifdef SUPPORT_HARD_LINKS -@@ -2217,6 +2222,7 @@ void generate_files(int f_out, const char *local_name) +@@ -2250,6 +2255,7 @@ void generate_files(int f_out, const char *local_name) } else change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp)); } @@ -498,7 +498,7 @@ diff --git a/generator.c b/generator.c } for (i = cur_flist->low; i <= cur_flist->high; i++) { struct file_struct *file = cur_flist->sorted[i]; -@@ -2297,6 +2303,9 @@ void generate_files(int f_out, const char *local_name) +@@ -2333,6 +2339,9 @@ void generate_files(int f_out, const char *local_name) wait_for_receiver(); } @@ -595,7 +595,7 @@ diff --git a/receiver.c b/receiver.c diff --git a/rsync.h b/rsync.h --- a/rsync.h +++ b/rsync.h -@@ -870,6 +870,8 @@ typedef struct { +@@ -874,6 +874,8 @@ typedef struct { #define CSF_ENABLE (1<<1) #define CSF_LAX (1<<2)