aboutsummaryrefslogtreecommitdiffstats
path: root/token.c
diff options
context:
space:
mode:
authorMartin Pool <mbp@samba.org>2001-08-14 02:04:47 +0000
committerMartin Pool <mbp@samba.org>2001-08-14 02:04:47 +0000
commit6902ed178ba54c8e1c410519f7ee576ddb42554c (patch)
treef96da1be2d5c9d866c8a4962d879a534676caf3a /token.c
parentfab9a9c54729984199d20b637ea8cc163c73d2e2 (diff)
downloadandroid_external_rsync-6902ed178ba54c8e1c410519f7ee576ddb42554c.tar.gz
android_external_rsync-6902ed178ba54c8e1c410519f7ee576ddb42554c.tar.bz2
android_external_rsync-6902ed178ba54c8e1c410519f7ee576ddb42554c.zip
Merge across rsync+ patch; add a little documentation to the manpage. More documentation would be better.
Diffstat (limited to 'token.c')
-rw-r--r--token.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/token.c b/token.c
index 2967b44c..174f121a 100644
--- a/token.c
+++ b/token.c
@@ -90,18 +90,29 @@ static int simple_recv_token(int f,char **data)
static void simple_send_token(int f,int token,
struct map_struct *buf,OFF_T offset,int n)
{
+ extern int write_batch; /* dw */
+ int hold_int; /* dw */
+
if (n > 0) {
int l = 0;
while (l < n) {
int n1 = MIN(CHUNK_SIZE,n-l);
write_int(f,n1);
write_buf(f,map_ptr(buf,offset+l,n1),n1);
+ if (write_batch) {
+ write_batch_delta_file( (char *) &n1, sizeof(int) );
+ write_batch_delta_file(map_ptr(buf,offset+l,n1),n1);
+ }
l += n1;
}
}
/* a -2 token means to send data only and no token */
if (token != -2) {
write_int(f,-(token+1));
+ if (write_batch) {
+ hold_int = -(token+1);
+ write_batch_delta_file( (char *) &hold_int, sizeof(int) );
+ }
}
}
@@ -134,6 +145,8 @@ send_deflated_token(int f, int token,
{
int n, r;
static int init_done, flush_pending;
+ extern int write_batch; /* dw */
+ char temp_byte; /* dw */
if (last_token == -1) {
/* initialization */
@@ -166,13 +179,27 @@ send_deflated_token(int f, int token,
n = last_token - run_start;
if (r >= 0 && r <= 63) {
write_byte(f, (n==0? TOKEN_REL: TOKENRUN_REL) + r);
+ if (write_batch) { /* dw */
+ temp_byte = (char)( (n==0? TOKEN_REL: TOKENRUN_REL) + r);
+ write_batch_delta_file(&temp_byte,sizeof(char));
+ }
} else {
write_byte(f, (n==0? TOKEN_LONG: TOKENRUN_LONG));
write_int(f, run_start);
+ if (write_batch) { /* dw */
+ temp_byte = (char)(n==0? TOKEN_LONG: TOKENRUN_LONG);
+ write_batch_delta_file(&temp_byte,sizeof(temp_byte));
+ write_batch_delta_file((char *)&run_start,sizeof(run_start));
+ }
}
if (n != 0) {
write_byte(f, n);
write_byte(f, n >> 8);
+ if (write_batch) { /* dw */
+ write_batch_delta_file((char *)&n,sizeof(char));
+ temp_byte = (char) n >> 8;
+ write_batch_delta_file(&temp_byte,sizeof(temp_byte));
+ }
}
last_run_end = last_token;
run_start = token;
@@ -231,6 +258,8 @@ send_deflated_token(int f, int token,
obuf[0] = DEFLATED_DATA + (n >> 8);
obuf[1] = n;
write_buf(f, obuf, n+2);
+ if (write_batch) /* dw */
+ write_batch_delta_file(obuf,n+2);
}
}
} while (nb != 0 || tx_strm.avail_out == 0);
@@ -240,6 +269,10 @@ send_deflated_token(int f, int token,
if (token == -1) {
/* end of file - clean up */
write_byte(f, END_FLAG);
+ if (write_batch) { /* dw */
+ temp_byte = END_FLAG;
+ write_batch_delta_file((char *)&temp_byte,sizeof(temp_byte));
+ }
} else if (token != -2) {
/* add the data in the current block to the compressor's