- tag_hits = 0;
- matches=0;
- data_transfer=0;
-
- sum_init();
-
- if (len > 0 && s->count>0) {
- build_hash_table(s);
-
- if (verbose > 2)
- rprintf(FINFO,"built hash table\n");
-
- hash_search(f,s,buf,len);
-
- if (verbose > 2)
+ hash_hits = 0;
+ matches = 0;
+ data_transfer = 0;
+
+ sum_init(checksum_seed);
+
+ if (append_mode > 0) {
+ if (append_mode == 2) {
+ OFF_T j = 0;
+ for (j = CHUNK_SIZE; j < s->flength; j += CHUNK_SIZE) {
+ if (buf && do_progress)
+ show_progress(last_match, buf->file_size);
+ sum_update(map_ptr(buf, last_match, CHUNK_SIZE),
+ CHUNK_SIZE);
+ last_match = j;
+ }
+ if (last_match < s->flength) {
+ int32 n = (int32)(s->flength - last_match);
+ if (buf && do_progress)
+ show_progress(last_match, buf->file_size);
+ sum_update(map_ptr(buf, last_match, n), n);
+ }
+ }
+ last_match = s->flength;
+ s->count = 0;
+ }
+
+ if (len > 0 && s->count > 0) {
+ hash_search(f, s, buf, len);
+
+ if (verbose > 2)