Download raw body.
fix deflate checksumming
Split off from my larger pack file generation patch, this patch fixes checksum errors in generated pack files and makes the code simpler. ok? diff 54d5be07768d1e312078b5eb60f0e32738a1631a /home/stsp/src/got blob - a9a36a64dd1519966e9aa8699e80bd93c895bdbf file + lib/deflate.c --- lib/deflate.c +++ lib/deflate.c @@ -35,8 +35,7 @@ #endif const struct got_error * -got_deflate_init(struct got_deflate_buf *zb, uint8_t *outbuf, size_t bufsize, - struct got_deflate_checksum *csum) +got_deflate_init(struct got_deflate_buf *zb, uint8_t *outbuf, size_t bufsize) { const struct got_error *err = NULL; int zerr; @@ -74,8 +73,6 @@ got_deflate_init(struct got_deflate_buf *zb, uint8_t * zb->flags |= GOT_DEFLATE_F_OWN_OUTBUF; } else zb->outbuf = outbuf; - - zb->csum = csum; done: if (err) got_deflate_end(zb); @@ -104,9 +101,6 @@ got_deflate_read(struct got_deflate_buf *zb, FILE *f, *outlenp = 0; do { - char *csum_out = NULL; - size_t csum_avail = 0; - if (z->avail_in == 0) { size_t n = fread(zb->inbuf, 1, zb->inlen, f); if (n == 0) { @@ -119,15 +113,7 @@ got_deflate_read(struct got_deflate_buf *zb, FILE *f, z->next_in = zb->inbuf; z->avail_in = n; } - if (zb->csum) { - csum_out = z->next_out; - csum_avail = z->avail_out; - } ret = deflate(z, Z_NO_FLUSH); - if (zb->csum) { - csum_output(zb->csum, csum_out, - csum_avail - z->avail_out); - } } while (ret == Z_OK && z->avail_out > 0); if (ret == Z_OK) { @@ -159,7 +145,7 @@ got_deflate_to_file(size_t *outlen, FILE *infile, FILE size_t avail; struct got_deflate_buf zb; - err = got_deflate_init(&zb, NULL, GOT_DEFLATE_BUFSIZE, csum); + err = got_deflate_init(&zb, NULL, GOT_DEFLATE_BUFSIZE); if (err) goto done; @@ -176,6 +162,8 @@ got_deflate_to_file(size_t *outlen, FILE *infile, FILE err = got_ferror(outfile, GOT_ERR_IO); goto done; } + if (csum) + csum_output(csum, zb.outbuf, avail); *outlen += avail; } } while (zb.flags & GOT_DEFLATE_F_HAVE_MORE); blob - c359d7c4cfbe99e2e20a5f7798a73ce6a55257c3 file + lib/got_lib_deflate.h --- lib/got_lib_deflate.h +++ lib/got_lib_deflate.h @@ -37,7 +37,7 @@ struct got_deflate_buf { #define GOT_DEFLATE_BUFSIZE 8192 const struct got_error *got_deflate_init(struct got_deflate_buf *, uint8_t *, - size_t, struct got_deflate_checksum *); + size_t); const struct got_error *got_deflate_read(struct got_deflate_buf *, FILE *, size_t *); void got_deflate_end(struct got_deflate_buf *);
fix deflate checksumming