MCPcopy Create free account
hub / github.com/antonmedv/gitmal / ParseBinaryFragments

Method ParseBinaryFragments

pkg/gitdiff/binary.go:13–50  ·  view source on GitHub ↗
(f *File)

Source from the content-addressed store, hash-verified

11)
12
13func (p *parser) ParseBinaryFragments(f *File) (n int, err error) {
14 isBinary, hasData, err := p.ParseBinaryMarker()
15 if err != nil || !isBinary {
16 return 0, err
17 }
18
19 f.IsBinary = true
20 if !hasData {
21 return 0, nil
22 }
23
24 forward, err := p.ParseBinaryFragmentHeader()
25 if err != nil {
26 return 0, err
27 }
28 if forward == nil {
29 return 0, p.Errorf(0, "missing data for binary patch")
30 }
31 if err := p.ParseBinaryChunk(forward); err != nil {
32 return 0, err
33 }
34 f.BinaryFragment = forward
35
36 // valid for reverse to not exist, but it must be valid if present
37 reverse, err := p.ParseBinaryFragmentHeader()
38 if err != nil {
39 return 1, err
40 }
41 if reverse == nil {
42 return 1, nil
43 }
44 if err := p.ParseBinaryChunk(reverse); err != nil {
45 return 1, err
46 }
47 f.ReverseBinaryFragment = reverse
48
49 return 1, nil
50}
51
52func (p *parser) ParseBinaryMarker() (isBinary bool, hasData bool, err error) {
53 line := p.Line(0)

Callers 2

TestParseBinaryFragmentsFunction · 0.80

Calls 4

ParseBinaryMarkerMethod · 0.95
ErrorfMethod · 0.95
ParseBinaryChunkMethod · 0.95

Tested by 2

TestParseBinaryFragmentsFunction · 0.64