summaryrefslogtreecommitdiff
path: root/xdelta3/go/src/xdelta
diff options
context:
space:
mode:
authorJoshua MacDonald <josh.macdonald@gmail.com>2015-02-01 21:20:03 -0800
committerJoshua MacDonald <josh.macdonald@gmail.com>2015-02-01 21:20:03 -0800
commit1e7f716f0854ad67df9a77341a829c84e4e6b1e5 (patch)
tree3f64e096859c7b2fa47f5bbaf56f7adbee9a57cc /xdelta3/go/src/xdelta
parentb55fcf3dc4c775ef35dce116ab23d35a5f9ff326 (diff)
regtest.go exhibits bad compression >2GB boundary
Diffstat (limited to 'xdelta3/go/src/xdelta')
-rw-r--r--xdelta3/go/src/xdelta/rstream.go20
-rw-r--r--xdelta3/go/src/xdelta/test.go9
2 files changed, 16 insertions, 13 deletions
diff --git a/xdelta3/go/src/xdelta/rstream.go b/xdelta3/go/src/xdelta/rstream.go
index 1666934..1d56031 100644
--- a/xdelta3/go/src/xdelta/rstream.go
+++ b/xdelta3/go/src/xdelta/rstream.go
@@ -16,20 +16,21 @@ func WriteRstreams(seed, offset, len int64,
16 go writeOne(seed, offset, len, second) 16 go writeOne(seed, offset, len, second)
17} 17}
18 18
19func writeOne(seed, offset, len int64, stream io.WriteCloser) { 19func writeOne(seed, offset, len int64, stream io.WriteCloser) error {
20 if offset != 0 { 20 if offset != 0 {
21 // Fill with other random data until the offset 21 // Fill with other random data until the offset
22 writeRand(rand.New(rand.NewSource(^seed)), 22 if err := writeRand(rand.New(rand.NewSource(^seed)), offset, stream); err != nil {
23 offset, stream) 23 return err
24 }
24 } 25 }
25 writeRand(rand.New(rand.NewSource(seed)), 26 if err := writeRand(rand.New(rand.NewSource(seed)),
26 len - offset, stream) 27 len - offset, stream); err != nil {
27 if err := stream.Close(); err != nil { 28 return err
28 panic(err)
29 } 29 }
30 return stream.Close()
30} 31}
31 32
32func writeRand(r *rand.Rand, len int64, s io.Writer) { 33func writeRand(r *rand.Rand, len int64, s io.Writer) error {
33 blk := make([]byte, blocksize) 34 blk := make([]byte, blocksize)
34 for len > 0 { 35 for len > 0 {
35 fillRand(r, blk) 36 fillRand(r, blk)
@@ -38,10 +39,11 @@ func writeRand(r *rand.Rand, len int64, s io.Writer) {
38 c = int(len) 39 c = int(len)
39 } 40 }
40 if _, err := s.Write(blk[0:c]); err != nil { 41 if _, err := s.Write(blk[0:c]); err != nil {
41 panic(err) 42 return err
42 } 43 }
43 len -= int64(c) 44 len -= int64(c)
44 } 45 }
46 return nil
45} 47}
46 48
47func fillRand(r *rand.Rand, blk []byte) { 49func fillRand(r *rand.Rand, blk []byte) {
diff --git a/xdelta3/go/src/xdelta/test.go b/xdelta3/go/src/xdelta/test.go
index 292f133..3143dfa 100644
--- a/xdelta3/go/src/xdelta/test.go
+++ b/xdelta3/go/src/xdelta/test.go
@@ -83,15 +83,16 @@ func (r *Runner) Exec(p *Program, srcfifo bool, flags []string) (*Run, error) {
83 return run, nil 83 return run, nil
84} 84}
85 85
86func writeFifo(srcfile string, read io.Reader) { 86func writeFifo(srcfile string, read io.Reader) error {
87 fifo, err := os.OpenFile(srcfile, os.O_WRONLY, 0600) 87 fifo, err := os.OpenFile(srcfile, os.O_WRONLY, 0600)
88 if err != nil { 88 if err != nil {
89 panic(err) 89 return err
90 } 90 }
91 if _, err := io.Copy(fifo, read); err != nil { 91 if _, err := io.Copy(fifo, read); err != nil {
92 panic(err) 92 return err
93 } 93 }
94 if err := fifo.Close(); err != nil { 94 if err := fifo.Close(); err != nil {
95 panic(err) 95 return err
96 } 96 }
97 return nil
97} 98}