X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/9e31c4824cabb1bf173f87cbd0abe93f25ea9598..038406fdfef4945bfa18f760377cc45cd6221982:/checksum.c diff --git a/checksum.c b/checksum.c index ba813586..2344b632 100644 --- a/checksum.c +++ b/checksum.c @@ -24,6 +24,7 @@ int csum_length=SUM_LENGTH; #define CSUM_CHUNK 64 int checksum_seed = 0; +extern int remote_version; /* a simple 32 bit checksum that can be upadted from either end @@ -127,6 +128,10 @@ void file_checksum(char *fname,char *sum,off_t size) void checksum_init(void) { + if (remote_version >= 14) + csum_length = 2; /* adaptive */ + else + csum_length = SUM_LENGTH; } @@ -137,8 +142,11 @@ static char sumrbuf[CSUM_CHUNK]; void sum_init(void) { - MDbegin(&sumMD); + char s[4]; + MDbegin(&sumMD); sumresidue=0; + SIVAL(s,0,checksum_seed); + sum_update(s,4); } void sum_update(char *p,int len) @@ -177,22 +185,3 @@ void sum_end(char *sum) } -#ifdef CHECKSUM_MAIN - int main(int argc,char *argv[]) -{ - char sum[SUM_LENGTH]; - int i,j; - - checksum_init(); - - for (i=1;i