[PATCH 09/30] chunk-format: store chunk offset during write
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Nov 7, 2022, 18:35 UTC
- Message-ID
- <ff176b52306345fbb2ad96193b890839d7959015.1667846164.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1408.git.1667846164.gitgitgadget@gmail.com>
From: Derrick Stolee <derrickstolee@github.com>
As a preparatory step to allowing trailing table of contents, store the offsets of each chunk as we write them. This replaces an existing use of a local variable, but the stored value will be used in the next change.
Signed-off-by: Derrick Stolee <derrickstolee@github.com> --- chunk-format.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/chunk-format.c b/chunk-format.c index 0275b74a895..f1b2c8a8b36 100644 --- a/chunk-format.c +++ b/chunk-format.c @@ -13,6 +13,7 @@ struct chunk_info { chunk_write_fn write_fn; const void *start; + off_t offset; }; struct chunkfile { @@ -78,16 +79,16 @@ int write_chunkfile(struct chunkfile *cf, void *data) hashwrite_be64(cf->f, cur_offset); for (i = 0; i < cf->chunks_nr; i++) { - off_t start_offset = hashfile_total(cf->f); + cf->chunks[i].offset = hashfile_total(cf->f); result = cf->chunks[i].write_fn(cf->f, data); if (result) goto cleanup; - if (hashfile_total(cf->f) - start_offset != cf->chunks[i].size) + if (hashfile_total(cf->f) - cf->chunks[i].offset != cf->chunks[i].size) BUG("expected to write %"PRId64" bytes to chunk %"PRIx32", but wrote %"PRId64" instead", cf->chunks[i].size, cf->chunks[i].id, - hashfile_total(cf->f) - start_offset); + hashfile_total(cf->f) - cf->chunks[i].offset); } cleanup:
-- gitgitgadget