mirror of
https://github.com/vbatts/tar-split.git
synced 2025-08-01 20:00:29 +00:00
Add tar/asm.IterateHeaders
This allows reading the metadata contained in tar-split without expensively recreating the whole tar stream including full contents. We have two use cases for this: - In a situation where tar-split is distributed along with a separate metadata stream, ensuring that the two are exactly consistent - Reading the tar headers allows making a ~cheap check of consistency of on-disk layers, just checking that the files exist in expected sizes, without reading the full contents. This can be implemented outside of this repo, but it's not ideal: - The function necessarily hard-codes some assumptions about how tar-split determines the boundaries of SegmentType/FileType entries (or, indeed, whether it uses FileType entries at all). That's best maintained directly beside the code that creates this. - The ExpectedPadding() value is not currently exported, so the consumer would have to heuristically guess where the padding ends. Signed-off-by: Miloslav Trmač <mitr@redhat.com>
This commit is contained in:
parent
fe4605ae8b
commit
99c8914877
5 changed files with 190 additions and 1 deletions
|
@ -56,6 +56,11 @@ func (tr *Reader) RawBytes() []byte {
|
|||
|
||||
}
|
||||
|
||||
// ExpectedPadding returns the number of bytes of padding expected after the last header returned by Next()
|
||||
func (tr *Reader) ExpectedPadding() int64 {
|
||||
return tr.pad
|
||||
}
|
||||
|
||||
// NewReader creates a new Reader reading from r.
|
||||
func NewReader(r io.Reader) *Reader {
|
||||
return &Reader{r: r, curr: ®FileReader{r, 0}}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue