diff options
| author | 2026-06-12 14:19:54 +0000 | |
|---|---|---|
| committer | 2026-06-12 14:19:54 +0000 | |
| commit | 7a60c533668747f906a1d1d234f2be6d32fca1d8 (patch) | |
| tree | 8bb5a9d96c28a5927642f86e5a8f8d56c2f13810 /object | |
| parent | internal/format/packfile: Add header parser (diff) | |
object/store/packed: Use the new format/packfile header parser
Diffstat (limited to 'object')
| -rw-r--r-- | object/store/packed/pack.go | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/object/store/packed/pack.go b/object/store/packed/pack.go index 55991c2c..cdf86203 100644 --- a/object/store/packed/pack.go +++ b/object/store/packed/pack.go @@ -2,7 +2,6 @@ package packed import ( "bytes" - "encoding/binary" "errors" "fmt" "os" @@ -14,16 +13,10 @@ import ( "lindenii.org/go/lgo/intconv" ) -// packHeaderLen is the size of the on-disk pack header: -// signature, version, and object count. -const packHeaderLen = 12 - var ( - errPackTruncated = errors.New("truncated") - errPackBadSignature = errors.New("bad signature") - errPackUnsupportedVersion = errors.New("unsupported pack version") - errPackCountMismatch = errors.New("object count differs from index") - errPackTrailerMismatch = errors.New("trailer hash differs from index") + errPackTruncated = errors.New("truncated") + errPackCountMismatch = errors.New("object count differs from index") + errPackTrailerMismatch = errors.New("trailer hash differs from index") ) // pack is one discovered pack: @@ -104,19 +97,16 @@ func mapFile(root *os.Root, name string) (*mmap.Mmap, error) { // validatePackData checks one mapped pack // against the pack format and its index. func validatePackData(data []byte, idx *packidx.Packidx, hashSize int) error { - if len(data) < packHeaderLen+hashSize { + if len(data) < packfile.HeaderLen+hashSize { return errPackTruncated } - if binary.BigEndian.Uint32(data) != packfile.Signature { - return errPackBadSignature - } - - if !packfile.SupportedVersion(binary.BigEndian.Uint32(data[4:])) { - return errPackUnsupportedVersion + header, err := packfile.ParseHeader(data) + if err != nil { + return err } - count := uint64(binary.BigEndian.Uint32(data[8:])) + count := uint64(header.ObjectCount) numObjects, err := intconv.IntToUint64(idx.NumObjects()) if err != nil { |
