}
+static void send_match(int f,int i)
+{
+ static int matches[32];
+ static int match_count=0;
+
+ matches[match_count++] = i;
+ if (match_count == 32 || i==0) {
+ int i;
+ for (i=0;i<match_count;i++)
+ write_int(f,matches[i]);
+ match_count=0;
+ }
+}
static off_t last_match;
int l = 0;
write_int(f,n);
while (l < n) {
- int n1 = MIN(WRITE_BLOCK_SIZE,n-l);
+ int n1 = MIN(CHUNK_SIZE,n-l);
write_buf(f,map_ptr(buf,last_match+l,n1),n1);
l += n1;
}
data_transfer += n;
}
- write_int(f,-(i+1));
+ send_match(f,-(i+1));
if (i != -1)
last_match = offset + s->sums[i].len;
if (n > 0)