aboutsummaryrefslogtreecommitdiff
path: root/format/packfile/ingest/crc.go
diff options
context:
space:
mode:
Diffstat (limited to 'format/packfile/ingest/crc.go')
-rw-r--r--format/packfile/ingest/crc.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/format/packfile/ingest/crc.go b/format/packfile/ingest/crc.go
new file mode 100644
index 00000000..f55af4ff
--- /dev/null
+++ b/format/packfile/ingest/crc.go
@@ -0,0 +1,22 @@
+package ingest
+
+import "fmt"
+
+// beginEntryCRC starts inline CRC accumulation for one packed entry.
+func (scanner *streamScanner) beginEntryCRC() {
+ scanner.entryCRC = 0
+ scanner.inEntryCRC = true
+}
+
+// endEntryCRC finishes inline CRC accumulation for one packed entry.
+func (scanner *streamScanner) endEntryCRC() (uint32, error) {
+ if !scanner.inEntryCRC {
+ return 0, fmt.Errorf("packfile/ingest: entry CRC not started")
+ }
+
+ crc := scanner.entryCRC
+ scanner.entryCRC = 0
+ scanner.inEntryCRC = false
+
+ return crc, nil
+}