Lines Matching refs:zs

117 static int zsync_read_blocksums(struct zsync_state *zs, FILE * f,
120 static int zsync_sha1(struct zsync_state *zs, int fh);
121 static int zsync_recompress(struct zsync_state *zs);
154 struct zsync_state *zs = calloc(sizeof *zs, 1); in zsync_begin() local
156 if (!zs) in zsync_begin()
160 zs->mtime = -1; in zsync_begin()
183 free(zs); in zsync_begin()
192 free(zs); in zsync_begin()
197 zs->filelen = atoll(p); in zsync_begin()
200 zs->filename = strdup(p); in zsync_begin()
203 zs->zfilename = strdup(p); in zsync_begin()
206 zs->url = (char **)append_ptrlist(&(zs->nurl), zs->url, strdup(p)); in zsync_begin()
209 zs->zurl = (char **)append_ptrlist(&(zs->nzurl), zs->zurl, strdup(p)); in zsync_begin()
212 zs->blocksize = atol(p); in zsync_begin()
213 if (zs->blocksize < 0 || (zs->blocksize & (zs->blocksize - 1))) { in zsync_begin()
214 fprintf(stderr, "nonsensical blocksize %ld\n", zs->blocksize); in zsync_begin()
215 free(zs); in zsync_begin()
226 free(zs); in zsync_begin()
230 else if (zs->blocks && !strcmp(buf, "Z-Map2")) { in zsync_begin()
237 free(zs); in zsync_begin()
245 free(zs); in zsync_begin()
249 zs->zmap = zmap_make(zblock, nzblocks); in zsync_begin()
258 zs->checksum = strdup(p); in zsync_begin()
259 zs->checksum_method = ckmeth_sha1; in zsync_begin()
266 zs->gzhead = strdup(p); in zsync_begin()
267 if (zs->gzhead) { in zsync_begin()
269 char *q = strchr(zs->gzhead, ' '); in zsync_begin()
271 q = zs->gzhead + strlen(zs->gzhead); in zsync_begin()
278 zs->gzopts = strdup(q); in zsync_begin()
281 if( !zs->gzopts ) { in zsync_begin()
283 free(zs->gzhead); in zsync_begin()
288 zs->mtime = parse_822(p); in zsync_begin()
294 free(zs); in zsync_begin()
297 if (zs->filelen && zs->blocksize) in zsync_begin()
298 zs->blocks = (zs->filelen + zs->blocksize - 1) / zs->blocksize; in zsync_begin()
302 free(zs); in zsync_begin()
306 if (!zs->filelen || !zs->blocksize) { in zsync_begin()
308 free(zs); in zsync_begin()
311 if (zsync_read_blocksums(zs, f, rsum_bytes, checksum_bytes, seq_matches) != 0) { in zsync_begin()
312 free(zs); in zsync_begin()
315 return zs; in zsync_begin()
326 static int zsync_read_blocksums(struct zsync_state *zs, FILE * f, in zsync_read_blocksums() argument
330 if (!(zs->rs = rcksum_init(zs->blocks, zs->blocksize, rsum_bytes, in zsync_read_blocksums()
337 for (; id < zs->blocks; id++) { in zsync_read_blocksums()
348 rcksum_end(zs->rs); in zsync_read_blocksums()
355 rcksum_add_target_block(zs->rs, id, r, checksum); in zsync_read_blocksums()
377 int zsync_hint_decompress(const struct zsync_state *zs) { in zsync_hint_decompress() argument
378 return (zs->nzurl > 0 ? 1 : 0); in zsync_hint_decompress()
383 int zsync_blocksize(const struct zsync_state *zs) { in zsync_blocksize() argument
384 return zs->blocksize; in zsync_blocksize()
390 char *zsync_filename(const struct zsync_state *zs) { in zsync_filename() argument
391 return strdup(zs->gzhead && zs->zfilename ? zs->zfilename : zs->filename); in zsync_filename()
398 time_t zsync_mtime(const struct zsync_state *zs) { in zsync_mtime() argument
399 return zs->mtime; in zsync_mtime()
408 int zsync_status(const struct zsync_state *zs) { in zsync_status() argument
409 int todo = rcksum_blocks_todo(zs->rs); in zsync_status()
411 if (todo == zs->blocks) in zsync_status()
421 void zsync_progress(const struct zsync_state *zs, long long *got, in zsync_progress() argument
425 int todo = zs->blocks - rcksum_blocks_todo(zs->rs); in zsync_progress()
426 *got = todo * zs->blocksize; in zsync_progress()
429 *total = zs->blocks * zs->blocksize; in zsync_progress()
439 const char *const *zsync_get_urls(struct zsync_state *zs, int *n, int *t) { in zsync_get_urls() argument
440 if (zs->zmap && zs->nzurl) { in zsync_get_urls()
441 *n = zs->nzurl; in zsync_get_urls()
443 return zs->zurl; in zsync_get_urls()
446 *n = zs->nurl; in zsync_get_urls()
448 return zs->url; in zsync_get_urls()
458 off_t *zsync_needed_byte_ranges(struct zsync_state * zs, int *num, int type) { in zsync_needed_byte_ranges() argument
464 zs_blockid *blrange = rcksum_needed_block_ranges(zs->rs, &nrange, 0, 0x7fffffff); in zsync_needed_byte_ranges()
480 byterange[2 * i] = blrange[2 * i] * (off_t)zs->blocksize; in zsync_needed_byte_ranges()
481 byterange[2 * i + 1] = blrange[2 * i + 1] * (off_t)zs->blocksize - 1; in zsync_needed_byte_ranges()
492 zmap_to_compressed_ranges(zs->zmap, byterange, nrange, &nrange); in zsync_needed_byte_ranges()
513 int zsync_submit_source_file(struct zsync_state *zs, FILE * f, int progress) { in zsync_submit_source_file() argument
514 return rcksum_submit_source_file(zs->rs, f, progress); in zsync_submit_source_file()
517 char *zsync_cur_filename(struct zsync_state *zs) { in zsync_cur_filename() argument
518 if (!zs->cur_filename) in zsync_cur_filename()
519 zs->cur_filename = rcksum_filename(zs->rs); in zsync_cur_filename()
521 return zs->cur_filename; in zsync_cur_filename()
527 int zsync_rename_file(struct zsync_state *zs, const char *f) { in zsync_rename_file() argument
528 char *rf = zsync_cur_filename(zs); in zsync_rename_file()
534 zs->cur_filename = strdup(f); in zsync_rename_file()
559 int zsync_complete(struct zsync_state *zs) { in zsync_complete() argument
564 int fh = rcksum_filehandle(zs->rs); in zsync_complete()
565 zsync_cur_filename(zs); in zsync_complete()
566 rcksum_end(zs->rs); in zsync_complete()
567 zs->rs = NULL; in zsync_complete()
571 if (ftruncate(fh, zs->filelen) != 0) { in zsync_complete()
581 if (rc == 0 && zs->checksum && !strcmp(zs->checksum_method, ckmeth_sha1)) { in zsync_complete()
582 rc = zsync_sha1(zs, fh); in zsync_complete()
587 if (rc >= 0 && zs->gzhead && zs->gzopts) { in zsync_complete()
588 if (zsync_recompress(zs) != 0) { in zsync_complete()
600 static int zsync_sha1(struct zsync_state *zs, int fh) { in zsync_sha1() argument
625 sscanf(&(zs->checksum[2 * i]), "%2x", &j); in zsync_sha1()
646 static int zsync_recompress(struct zsync_state *zs) { in zsync_recompress() argument
654 snprintf(cmd, sizeof(cmd), "gzip -n %s < ", zs->gzopts); in zsync_recompress()
661 while ((c = zs->cur_filename[i++]) != 0 && j < sizeof(cmd) - 2) { in zsync_recompress()
676 snprintf(zoname, sizeof(zoname), "%s.gz", zs->cur_filename); in zsync_recompress()
680 char *p = zs->gzhead; in zsync_recompress()
723 unlink(zs->cur_filename); in zsync_recompress()
724 free(zs->cur_filename); in zsync_recompress()
725 zs->cur_filename = strdup(zoname); in zsync_recompress()
734 char *zsync_end(struct zsync_state *zs) { in zsync_end() argument
736 char *f = zsync_cur_filename(zs); in zsync_end()
739 if (zs->rs) in zsync_end()
740 rcksum_end(zs->rs); in zsync_end()
741 if (zs->zmap) in zsync_end()
742 zmap_free(zs->zmap); in zsync_end()
745 for (i = 0; i < zs->nurl; i++) in zsync_end()
746 free(zs->url[i]); in zsync_end()
747 for (i = 0; i < zs->nzurl; i++) in zsync_end()
748 free(zs->zurl[i]); in zsync_end()
751 free(zs->url); in zsync_end()
752 free(zs->zurl); in zsync_end()
753 free(zs->checksum); in zsync_end()
754 free(zs->filename); in zsync_end()
755 free(zs->zfilename); in zsync_end()
756 free(zs); in zsync_end()
769 void zsync_configure_zstream_for_zdata(const struct zsync_state *zs, in zsync_configure_zstream_for_zdata() argument
772 configure_zstream_for_zdata(zs->zmap, zstrm, zoffset, poutoffset); in zsync_configure_zstream_for_zdata()
780 rcksum_read_known_data(zs->rs, wbuf, pos - lookback, lookback); in zsync_configure_zstream_for_zdata()
794 static int zsync_submit_data(struct zsync_state *zs, in zsync_submit_data() argument
797 zs_blockid blstart = offset / zs->blocksize; in zsync_submit_data()
800 return rcksum_submit_blocks(zs->rs, buf, blstart, blend); in zsync_submit_data()
815 struct zsync_state *zs; /* The zsync_state that we are downloading for */ member
823 struct zsync_receiver *zsync_begin_receive(struct zsync_state *zs, int url_type) { in zsync_begin_receive() argument
828 zr->zs = zs; in zsync_begin_receive()
830 zr->outbuf = malloc(zs->blocksize); in zsync_begin_receive()
857 size_t blocksize = zr->zs->blocksize; in zsync_receive_data_uncompressed()
877 (zr->zs, zr->outbuf, zr->outoffset + x - blocksize, 1)) in zsync_receive_data_uncompressed()
889 if (zsync_submit_data(zr->zs, buf, offset, w)) in zsync_receive_data_uncompressed()
919 size_t blocksize = zr->zs->blocksize; in zsync_receive_data_compressed()
929 zsync_configure_zstream_for_zdata(zr->zs, &(zr->strm), offset, in zsync_receive_data_compressed()
964 rc = zsync_submit_data(zr->zs, zr->outbuf, in zsync_receive_data_compressed()