diff options
-rw-r--r-- | .gitignore | 19 | ||||
-rw-r--r-- | xdelta3/Makefile.am | 1 | ||||
-rw-r--r-- | xdelta3/go/src/regtest.go | 34 | ||||
-rw-r--r-- | xdelta3/go/src/xdelta/rstream.go | 20 | ||||
-rw-r--r-- | xdelta3/go/src/xdelta/test.go | 9 | ||||
-rwxr-xr-x | xdelta3/run_release.sh | 1 | ||||
-rw-r--r-- | xdelta3/xdelta3-main.h | 2 | ||||
-rw-r--r-- | xdelta3/xdelta3.h | 2 |
8 files changed, 60 insertions, 28 deletions
@@ -1 +1,20 @@ | |||
1 | *.o | 1 | *.o |
2 | *~ | ||
3 | |||
4 | Makefile.in | ||
5 | aclocal.m4 | ||
6 | autom4te.cache | ||
7 | build | ||
8 | compile | ||
9 | config.guess | ||
10 | config.h.in | ||
11 | config.sub | ||
12 | configure | ||
13 | depcomp | ||
14 | ltmain.sh | ||
15 | libtool.m4 | ||
16 | ltoptions.m4 | ||
17 | ltsugar.m4 | ||
18 | ltversion.m4 | ||
19 | lt~obsolete.m4 | ||
20 | missing | ||
diff --git a/xdelta3/Makefile.am b/xdelta3/Makefile.am index f589599..ffc35a4 100644 --- a/xdelta3/Makefile.am +++ b/xdelta3/Makefile.am | |||
@@ -1,4 +1,5 @@ | |||
1 | ACLOCAL_AMFLAGS = -I m4 | 1 | ACLOCAL_AMFLAGS = -I m4 |
2 | AUTOMAKE_OPTIONS = subdir-objects | ||
2 | 3 | ||
3 | bin_PROGRAMS = xdelta3 | 4 | bin_PROGRAMS = xdelta3 |
4 | noinst_PROGRAMS = xdelta3regtest xdelta3decode xdelta3checksum | 5 | noinst_PROGRAMS = xdelta3regtest xdelta3decode xdelta3checksum |
diff --git a/xdelta3/go/src/regtest.go b/xdelta3/go/src/regtest.go index d31e905..52547e1 100644 --- a/xdelta3/go/src/regtest.go +++ b/xdelta3/go/src/regtest.go | |||
@@ -1,16 +1,20 @@ | |||
1 | package main | 1 | package main |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "bufio" | ||
4 | "bytes" | 5 | "bytes" |
5 | "fmt" | 6 | "fmt" |
6 | "io" | 7 | "io" |
7 | "io/ioutil" | 8 | "io/ioutil" |
9 | "os" | ||
10 | |||
8 | "xdelta" | 11 | "xdelta" |
9 | ) | 12 | ) |
10 | 13 | ||
11 | const ( | 14 | const ( |
12 | blocksize = 1<<20 | 15 | blocksize = 1<<16 |
13 | prog = "/Users/jmacd/src/xdelta/xdelta3/xdelta3" | 16 | winsize = 1<<26 |
17 | prog = "/Users/jmacd/src/xdelta/xdelta3/build/m64/64size-64off/xdelta3" | ||
14 | seed = 1422253499919909358 | 18 | seed = 1422253499919909358 |
15 | ) | 19 | ) |
16 | 20 | ||
@@ -26,10 +30,14 @@ func drain(f io.ReadCloser) <-chan []byte { | |||
26 | return c | 30 | return c |
27 | } | 31 | } |
28 | 32 | ||
29 | func empty(f io.ReadCloser) { | 33 | func empty(f io.ReadCloser, desc string) { |
30 | go func() { | 34 | go func() { |
31 | if _, err := ioutil.ReadAll(f); err != nil { | 35 | s := bufio.NewScanner(f) |
32 | panic(err) | 36 | for s.Scan() { |
37 | os.Stderr.Write([]byte(fmt.Sprint(desc, ": ", s.Text(), "\n"))) | ||
38 | } | ||
39 | if err := s.Err(); err != nil { | ||
40 | fmt.Println("error reading input:", err) | ||
33 | } | 41 | } |
34 | }() | 42 | }() |
35 | } | 43 | } |
@@ -52,7 +60,7 @@ func smokeTest(r *xdelta.Runner, p *xdelta.Program) { | |||
52 | panic(err) | 60 | panic(err) |
53 | } | 61 | } |
54 | encodeout := drain(run.Stdout) | 62 | encodeout := drain(run.Stdout) |
55 | empty(run.Stderr) | 63 | empty(run.Stderr, "encode") |
56 | 64 | ||
57 | write(run.Stdin, []byte(target)) | 65 | write(run.Stdin, []byte(target)) |
58 | write(run.Srcin, []byte(source)) | 66 | write(run.Srcin, []byte(source)) |
@@ -67,7 +75,7 @@ func smokeTest(r *xdelta.Runner, p *xdelta.Program) { | |||
67 | } | 75 | } |
68 | 76 | ||
69 | decodeout := drain(run.Stdout) | 77 | decodeout := drain(run.Stdout) |
70 | empty(run.Stderr) | 78 | empty(run.Stderr, "decode") |
71 | 79 | ||
72 | write(run.Stdin, <-encodeout) | 80 | write(run.Stdin, <-encodeout) |
73 | write(run.Srcin, []byte(source)) | 81 | write(run.Srcin, []byte(source)) |
@@ -121,12 +129,12 @@ func compareStreams(r1 io.ReadCloser, r2 io.ReadCloser, length int64) { | |||
121 | } | 129 | } |
122 | } | 130 | } |
123 | 131 | ||
124 | func offsetTest(r *xdelta.Runner, p *xdelta.Program, offset, length int64) { | 132 | func offsetTest(r *xdelta.Runner, p *xdelta.Program, offset, bufsize, length int64) { |
125 | enc, err := r.Exec(p, true, []string{"-e"}) | 133 | enc, err := r.Exec(p, true, []string{"-e", "-1", "-n", fmt.Sprint("-B", bufsize), "-vv", fmt.Sprint("-W", winsize)}) |
126 | if err != nil { | 134 | if err != nil { |
127 | panic(err) | 135 | panic(err) |
128 | } | 136 | } |
129 | dec, err := r.Exec(p, true, []string{"-d"}) | 137 | dec, err := r.Exec(p, true, []string{"-d", fmt.Sprint("-B", bufsize), "-vv", fmt.Sprint("-W", winsize)}) |
130 | if err != nil { | 138 | if err != nil { |
131 | panic(err) | 139 | panic(err) |
132 | } | 140 | } |
@@ -136,8 +144,8 @@ func offsetTest(r *xdelta.Runner, p *xdelta.Program, offset, length int64) { | |||
136 | go copyStreams(enc.Stdout, dec.Stdin) | 144 | go copyStreams(enc.Stdout, dec.Stdin) |
137 | go compareStreams(dec.Stdout, read, length) | 145 | go compareStreams(dec.Stdout, read, length) |
138 | 146 | ||
139 | empty(enc.Stderr) // Use these? | 147 | empty(enc.Stderr, "encode") |
140 | empty(dec.Stderr) | 148 | empty(dec.Stderr, "decode") |
141 | 149 | ||
142 | // TODO: seems possible to use one WriteRstreams call to generate | 150 | // TODO: seems possible to use one WriteRstreams call to generate |
143 | // the source and target for both encoder and decoder. Why not? | 151 | // the source and target for both encoder and decoder. Why not? |
@@ -163,5 +171,5 @@ func main() { | |||
163 | 171 | ||
164 | smokeTest(r, prog) | 172 | smokeTest(r, prog) |
165 | 173 | ||
166 | offsetTest(r, prog, 0, 1024 << 20) | 174 | offsetTest(r, prog, 1 << 31, 1 << 32, 1 << 33) |
167 | } | 175 | } |
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 | ||
19 | func writeOne(seed, offset, len int64, stream io.WriteCloser) { | 19 | func 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 | ||
32 | func writeRand(r *rand.Rand, len int64, s io.Writer) { | 33 | func 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 | ||
47 | func fillRand(r *rand.Rand, blk []byte) { | 49 | func 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 | ||
86 | func writeFifo(srcfile string, read io.Reader) { | 86 | func 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 | } |
diff --git a/xdelta3/run_release.sh b/xdelta3/run_release.sh index fc06491..2ac810a 100755 --- a/xdelta3/run_release.sh +++ b/xdelta3/run_release.sh | |||
@@ -52,6 +52,7 @@ function buildit { | |||
52 | echo CXXFLAGS=$CXXFLAGS | 52 | echo CXXFLAGS=$CXXFLAGS |
53 | D=build/$MACH/${sizebits}size-${offsetbits}off | 53 | D=build/$MACH/${sizebits}size-${offsetbits}off |
54 | mkdir -p $D | 54 | mkdir -p $D |
55 | echo "Configuring $D ..." | ||
55 | (cd $D && $SRCDIR/configure --prefix=$PWD/bin --enable-debug-symbols) | 56 | (cd $D && $SRCDIR/configure --prefix=$PWD/bin --enable-debug-symbols) |
56 | #(cd $D && make all && make test) | 57 | #(cd $D && make all && make test) |
57 | } | 58 | } |
diff --git a/xdelta3/xdelta3-main.h b/xdelta3/xdelta3-main.h index 157a4fb..1871f14 100644 --- a/xdelta3/xdelta3-main.h +++ b/xdelta3/xdelta3-main.h | |||
@@ -708,7 +708,7 @@ main_atoux (const char* arg, xoff_t *xo, xoff_t low, | |||
708 | int ret; | 708 | int ret; |
709 | 709 | ||
710 | if ((ret = main_strtoxoff (arg, & x, which))) { return ret; } | 710 | if ((ret = main_strtoxoff (arg, & x, which))) { return ret; } |
711 | XPR(NT "SEE -%c: value %"Q" low %"Q" high %"Q"\n", which, x, low, high); | 711 | |
712 | if (x < low) | 712 | if (x < low) |
713 | { | 713 | { |
714 | XPR(NT "-%c: minimum value: %"Q"\n", which, low); | 714 | XPR(NT "-%c: minimum value: %"Q"\n", which, low); |
diff --git a/xdelta3/xdelta3.h b/xdelta3/xdelta3.h index f1aa5d8..bb5f4d6 100644 --- a/xdelta3/xdelta3.h +++ b/xdelta3/xdelta3.h | |||
@@ -71,7 +71,7 @@ | |||
71 | * | 71 | * |
72 | * 8-16MB is reasonable, probably don't need to go larger. */ | 72 | * 8-16MB is reasonable, probably don't need to go larger. */ |
73 | #ifndef XD3_HARDMAXWINSIZE | 73 | #ifndef XD3_HARDMAXWINSIZE |
74 | #define XD3_HARDMAXWINSIZE (1U<<24) | 74 | #define XD3_HARDMAXWINSIZE (1U<<26) |
75 | #endif | 75 | #endif |
76 | /* The IOPT_SIZE value sets the size of a buffer used to batch | 76 | /* The IOPT_SIZE value sets the size of a buffer used to batch |
77 | * overlapping copy instructions before they are optimized by picking | 77 | * overlapping copy instructions before they are optimized by picking |