aboutsummaryrefslogtreecommitdiff
path: root/object/header/append.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-04-02 08:54:27 +0000
committerGravatar Runxi Yu2026-04-02 08:54:27 +0000
commit6d799b169180a1de8b78875e0288776a6ad0d4e2 (patch)
treebce84e2f6cf9e09ce184a16a0690f89ae9da1d2f /object/header/append.go
parentinternal/intconv: Actually it's fine for these to be in one file probably (diff)
signatureNo signature
object/header: Add
Diffstat (limited to 'object/header/append.go')
-rw-r--r--object/header/append.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/object/header/append.go b/object/header/append.go
new file mode 100644
index 00000000..5b062e05
--- /dev/null
+++ b/object/header/append.go
@@ -0,0 +1,29 @@
+package header
+
+import (
+ "strconv"
+
+ "codeberg.org/lindenii/furgit/object/typ"
+)
+
+// Append appends a canonical loose-object header ("type size\x00") to dst.
+func Append(dst []byte, ty typ.Type, size int64) ([]byte, bool) {
+ if size < 0 {
+ return nil, false
+ }
+
+ tyName, ok := ty.Name()
+ if !ok {
+ return nil, false
+ }
+
+ sizeStr := strconv.FormatInt(size, 10)
+ out := make([]byte, 0, len(dst)+len(tyName)+len(sizeStr)+2)
+ out = append(out, dst...)
+ out = append(out, tyName...)
+ out = append(out, ' ')
+ out = append(out, sizeStr...)
+ out = append(out, 0)
+
+ return out, true
+}