Include the array-size in array externs so that IBM's code-checker
[rsync/rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index b3a2653..7c21f73 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -66,6 +66,7 @@ extern int sanitize_paths;
 extern int munge_symlinks;
 extern int need_unsorted_flist;
 extern int output_needs_newline;
+extern int sender_keeps_checksum;
 extern int unsort_ndx;
 extern struct stats stats;
 extern char *filesfrom_host;
@@ -1209,6 +1210,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                extra_len += EXTRA_LEN;
 #endif
 
+       if (always_checksum && am_sender && S_ISREG(st.st_mode)) {
+               file_checksum(thisname, tmp_sum, st.st_size);
+               if (sender_keeps_checksum)
+                       extra_len += SUM_EXTRA_CNT * EXTRA_LEN;
+       }
+
 #if EXTRA_ROUNDING > 0
        if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN))
                extra_len = (extra_len | (EXTRA_ROUNDING * EXTRA_LEN)) + EXTRA_LEN;
@@ -1272,9 +1279,6 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                memcpy(bp + basename_len, linkname, linkname_len);
 #endif
 
-       if (always_checksum && am_sender && S_ISREG(st.st_mode))
-               file_checksum(thisname, tmp_sum, st.st_size);
-
        if (am_sender)
                F_PATHNAME(file) = pathname;
        else if (!pool)
@@ -1305,6 +1309,9 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                return NULL;
        }
 
+       if (sender_keeps_checksum && S_ISREG(st.st_mode))
+               memcpy(F_SUM(file), tmp_sum, checksum_len);
+
        if (unsort_ndx)
                F_NDX(file) = dir_count;
 
@@ -2210,12 +2217,13 @@ struct file_list *recv_file_list(int f)
        int dstart, flags;
        int64 start_read;
 
-       if (!first_flist)
+       if (!first_flist) {
+               if (show_filelist_p())
+                       start_filelist_progress("receiving file list");
+               else if (inc_recurse && INFO_GTE(FLIST, 1) && !am_server)
+                       rprintf(FCLIENT, "receiving incremental file list\n");
                rprintf(FLOG, "receiving file list\n");
-       if (show_filelist_p())
-               start_filelist_progress("receiving file list");
-       else if (inc_recurse && INFO_GTE(FLIST, 1) && !am_server && !first_flist)
-               rprintf(FCLIENT, "receiving incremental file list\n");
+       }
 
        start_read = stats.total_read;
 
@@ -2430,14 +2438,16 @@ struct file_list *flist_new(int flags, char *msg)
 
        if (flags & FLIST_TEMP) {
                if (!(flist->file_pool = pool_create(SMALL_EXTENT, 0,
-                                               out_of_memory, POOL_INTERN)))
+                                                    out_of_memory,
+                                                    POOL_INTERN)))
                        out_of_memory(msg);
        } else {
                /* This is a doubly linked list with prev looping back to
                 * the end of the list, but the last next pointer is NULL. */
                if (!first_flist) {
                        flist->file_pool = pool_create(NORMAL_EXTENT, 0,
-                                               out_of_memory, POOL_INTERN);
+                                                      out_of_memory,
+                                                      POOL_INTERN);
                        if (!flist->file_pool)
                                out_of_memory(msg);