aboutsummaryrefslogtreecommitdiff
path: root/packfile/entry_header.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-26 09:17:14 +0000
committerGravatar Runxi Yu2026-03-26 09:18:30 +0000
commit3e884f5f3d42cbc4874a04da31dde10314b0cfad (patch)
treef5e1e325fd1a2a0801791c054010213214475d80 /packfile/entry_header.go
parentnetwork/receivepack: Rename from receivepack (diff)
signatureNo signature
format: Move commitgraph and packfile here
Diffstat (limited to 'packfile/entry_header.go')
-rw-r--r--packfile/entry_header.go52
1 files changed, 0 insertions, 52 deletions
diff --git a/packfile/entry_header.go b/packfile/entry_header.go
deleted file mode 100644
index 05664268..00000000
--- a/packfile/entry_header.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package packfile
-
-import (
- "fmt"
-
- objecttype "codeberg.org/lindenii/furgit/object/type"
-)
-
-// EntryHeader is one parsed pack entry header prefix.
-type EntryHeader struct {
- // Type is the entry type tag from the first header byte.
- Type objecttype.Type
- // Size is the declared resulting object size.
- Size int64
- // HeaderSize is the number of bytes consumed by the type/size header.
- HeaderSize int
-}
-
-// ParseEntryHeader parses one pack entry type/size header from data.
-func ParseEntryHeader(data []byte) (EntryHeader, error) {
- var zero EntryHeader
- if len(data) == 0 {
- return zero, fmt.Errorf("packfile: truncated entry header")
- }
-
- first := data[0]
- header := EntryHeader{
- Type: objecttype.Type((first >> 4) & 0x07),
- Size: int64(first & 0x0f),
- HeaderSize: 1,
- }
-
- shift := uint(4)
-
- b := first
- for b&0x80 != 0 {
- if header.HeaderSize >= len(data) {
- return zero, fmt.Errorf("packfile: truncated entry header")
- }
-
- b = data[header.HeaderSize]
- header.HeaderSize++
- header.Size |= int64(b&0x7f) << shift
- shift += 7
- }
-
- if header.Size < 0 {
- return zero, fmt.Errorf("packfile: negative entry size")
- }
-
- return header, nil
-}