X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fbuffer.c;h=61310381e88e1a8370431bd18e20cd79a7f56d5d;hb=9a3e8a6f4374901c386821a0e08184f369141df4;hp=b47b773ee8ea65c151db1fc8293e52ca8e58a433;hpb=c3fa22fc8023ad21ad32b13f934c3324756c9236;p=chaz%2Ftar diff --git a/src/buffer.c b/src/buffer.c index b47b773..6131038 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -854,16 +854,16 @@ seek_archive (off_t size) off_t start = current_block_ordinal (); off_t offset; off_t nrec, nblk; - off_t skipped = (blocking_factor - (current_block - record_start)); + off_t skipped = (blocking_factor - (current_block - record_start)) + * BLOCKSIZE; - size -= skipped * BLOCKSIZE; - - if (size < record_size) + if (size <= skipped) return 0; - /* FIXME: flush? */ - + /* Compute number of records to skip */ - nrec = size / record_size; + nrec = (size - skipped) / record_size; + if (nrec == 0) + return 0; offset = rmtlseek (archive, nrec * record_size, SEEK_CUR); if (offset < 0) return offset;