mirror of
https://github.com/git/git
synced 2024-10-02 14:45:21 +00:00
chunk-format: store chunk offset during write
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> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
parent
c25606aea1
commit
a17ad58dfc
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue