aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/encoding/git85
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2009-12-15 15:27:16 -0800
committerRobert Griesemer <gri@golang.org>2009-12-15 15:27:16 -0800
commit1c729599996c05e7b743372baeec2b6c70472084 (patch)
treeac58cd99d0372dc003896650059425a8f6281750 /src/pkg/encoding/git85
parentd122bb2193cfb239efc1d9a3e63d4bb0b0635b3d (diff)
downloadgo-1c729599996c05e7b743372baeec2b6c70472084.tar.xz
1) Change default gofmt default settings for
parsing and printing to new syntax. Use -oldparser to parse the old syntax, use -oldprinter to print the old syntax. 2) Change default gofmt formatting settings to use tabs for indentation only and to use spaces for alignment. This will make the code alignment insensitive to an editor's tabwidth. Use -spaces=false to use tabs for alignment. 3) Manually changed src/exp/parser/parser_test.go so that it doesn't try to parse the parser's source files using the old syntax (they have new syntax now). 4) gofmt -w src misc test/bench 2nd set of files. R=rsc CC=golang-dev https://golang.org/cl/179067
Diffstat (limited to 'src/pkg/encoding/git85')
-rw-r--r--src/pkg/encoding/git85/git.go156
-rw-r--r--src/pkg/encoding/git85/git_test.go130
2 files changed, 143 insertions, 143 deletions
diff --git a/src/pkg/encoding/git85/git.go b/src/pkg/encoding/git85/git.go
index 1e52997929..25a3deac00 100644
--- a/src/pkg/encoding/git85/git.go
+++ b/src/pkg/encoding/git85/git.go
@@ -7,10 +7,10 @@
package git85
import (
- "bytes";
- "io";
- "os";
- "strconv";
+ "bytes"
+ "io"
+ "os"
+ "strconv"
)
type CorruptInputError int64
@@ -49,9 +49,9 @@ var decode = [256]uint8{
// The encoding splits src into chunks of at most 52 bytes
// and encodes each chunk on its own line.
func Encode(dst, src []byte) int {
- ndst := 0;
+ ndst := 0
for len(src) > 0 {
- n := len(src);
+ n := len(src)
if n > 52 {
n = 52
}
@@ -60,23 +60,23 @@ func Encode(dst, src []byte) int {
} else {
dst[ndst] = byte('a' + n - 26 - 1)
}
- ndst++;
+ ndst++
for i := 0; i < n; i += 4 {
- var v uint32;
+ var v uint32
for j := 0; j < 4 && i+j < n; j++ {
v |= uint32(src[i+j]) << uint(24-j*8)
}
for j := 4; j >= 0; j-- {
- dst[ndst+j] = encode[v%85];
- v /= 85;
+ dst[ndst+j] = encode[v%85]
+ v /= 85
}
- ndst += 5;
+ ndst += 5
}
- dst[ndst] = '\n';
- ndst++;
- src = src[n:];
+ dst[ndst] = '\n'
+ ndst++
+ src = src[n:]
}
- return ndst;
+ return ndst
}
// EncodedLen returns the length of an encoding of n source bytes.
@@ -86,7 +86,7 @@ func EncodedLen(n int) int {
}
// 5 bytes per 4 bytes of input, rounded up.
// 2 extra bytes for each line of 52 src bytes, rounded up.
- return (n+3)/4*5 + (n+51)/52*2;
+ return (n+3)/4*5 + (n+51)/52*2
}
var newline = []byte{'\n'}
@@ -97,10 +97,10 @@ var newline = []byte{'\n'}
// If Decode encounters invalid input, it returns a CorruptInputError.
//
func Decode(dst, src []byte) (n int, err os.Error) {
- ndst := 0;
- nsrc := 0;
+ ndst := 0
+ nsrc := 0
for nsrc < len(src) {
- var l int;
+ var l int
switch ch := int(src[nsrc]); {
case 'A' <= ch && ch <= 'Z':
l = ch - 'A' + 1
@@ -112,24 +112,24 @@ func Decode(dst, src []byte) (n int, err os.Error) {
if nsrc+1+l > len(src) {
return ndst, CorruptInputError(nsrc)
}
- el := (l + 3) / 4 * 5; // encoded len
+ el := (l + 3) / 4 * 5 // encoded len
if nsrc+1+el+1 > len(src) || src[nsrc+1+el] != '\n' {
return ndst, CorruptInputError(nsrc)
}
- line := src[nsrc+1 : nsrc+1+el];
+ line := src[nsrc+1 : nsrc+1+el]
for i := 0; i < el; i += 5 {
- var v uint32;
+ var v uint32
for j := 0; j < 5; j++ {
- ch := decode[line[i+j]];
+ ch := decode[line[i+j]]
if ch == 0 {
return ndst, CorruptInputError(nsrc + 1 + i + j)
}
- v = v*85 + uint32(ch-1);
+ v = v*85 + uint32(ch-1)
}
for j := 0; j < 4; j++ {
- dst[ndst] = byte(v >> 24);
- v <<= 8;
- ndst++;
+ dst[ndst] = byte(v >> 24)
+ v <<= 8
+ ndst++
}
}
// Last fragment may have run too far (but there was room in dst).
@@ -137,27 +137,27 @@ func Decode(dst, src []byte) (n int, err os.Error) {
if l%4 != 0 {
ndst -= 4 - l%4
}
- nsrc += 1 + el + 1;
+ nsrc += 1 + el + 1
}
- return ndst, nil;
+ return ndst, nil
}
-func MaxDecodedLen(n int) int { return n / 5 * 4 }
+func MaxDecodedLen(n int) int { return n / 5 * 4 }
// NewEncoder returns a new Git base85 stream encoder. Data written to
// the returned writer will be encoded and then written to w.
// The Git encoding operates on 52-byte blocks; when finished
// writing, the caller must Close the returned encoder to flush any
// partially written blocks.
-func NewEncoder(w io.Writer) io.WriteCloser { return &encoder{w: w} }
+func NewEncoder(w io.Writer) io.WriteCloser { return &encoder{w: w} }
type encoder struct {
- w io.Writer;
- err os.Error;
- buf [52]byte;
- nbuf int;
- out [1024]byte;
- nout int;
+ w io.Writer
+ err os.Error
+ buf [52]byte
+ nbuf int
+ out [1024]byte
+ nout int
}
func (e *encoder) Write(p []byte) (n int, err os.Error) {
@@ -167,70 +167,70 @@ func (e *encoder) Write(p []byte) (n int, err os.Error) {
// Leading fringe.
if e.nbuf > 0 {
- var i int;
+ var i int
for i = 0; i < len(p) && e.nbuf < 52; i++ {
- e.buf[e.nbuf] = p[i];
- e.nbuf++;
+ e.buf[e.nbuf] = p[i]
+ e.nbuf++
}
- n += i;
- p = p[i:];
+ n += i
+ p = p[i:]
if e.nbuf < 52 {
return
}
- nout := Encode(&e.out, &e.buf);
+ nout := Encode(&e.out, &e.buf)
if _, e.err = e.w.Write(e.out[0:nout]); e.err != nil {
return n, e.err
}
- e.nbuf = 0;
+ e.nbuf = 0
}
// Large interior chunks.
for len(p) >= 52 {
- nn := len(e.out) / (1 + 52/4*5 + 1) * 52;
+ nn := len(e.out) / (1 + 52/4*5 + 1) * 52
if nn > len(p) {
nn = len(p) / 52 * 52
}
if nn > 0 {
- nout := Encode(&e.out, p[0:nn]);
+ nout := Encode(&e.out, p[0:nn])
if _, e.err = e.w.Write(e.out[0:nout]); e.err != nil {
return n, e.err
}
}
- n += nn;
- p = p[nn:];
+ n += nn
+ p = p[nn:]
}
// Trailing fringe.
for i := 0; i < len(p); i++ {
e.buf[i] = p[i]
}
- e.nbuf = len(p);
- n += len(p);
- return;
+ e.nbuf = len(p)
+ n += len(p)
+ return
}
func (e *encoder) Close() os.Error {
// If there's anything left in the buffer, flush it out
if e.err == nil && e.nbuf > 0 {
- nout := Encode(&e.out, e.buf[0:e.nbuf]);
- e.nbuf = 0;
- _, e.err = e.w.Write(e.out[0:nout]);
+ nout := Encode(&e.out, e.buf[0:e.nbuf])
+ e.nbuf = 0
+ _, e.err = e.w.Write(e.out[0:nout])
}
- return e.err;
+ return e.err
}
// NewDecoder returns a new Git base85 stream decoder.
-func NewDecoder(r io.Reader) io.Reader { return &decoder{r: r} }
+func NewDecoder(r io.Reader) io.Reader { return &decoder{r: r} }
type decoder struct {
- r io.Reader;
- err os.Error;
- readErr os.Error;
- buf [1024]byte;
- nbuf int;
- out []byte;
- outbuf [1024]byte;
- off int64;
+ r io.Reader
+ err os.Error
+ readErr os.Error
+ buf [1024]byte
+ nbuf int
+ out []byte
+ outbuf [1024]byte
+ off int64
}
func (d *decoder) Read(p []byte) (n int, err os.Error) {
@@ -241,9 +241,9 @@ func (d *decoder) Read(p []byte) (n int, err os.Error) {
for {
// Copy leftover output from last decode.
if len(d.out) > 0 {
- n = copy(p, d.out);
- d.out = d.out[n:];
- return;
+ n = copy(p, d.out)
+ d.out = d.out[n:]
+ return
}
// Out of decoded output. Check errors.
@@ -251,27 +251,27 @@ func (d *decoder) Read(p []byte) (n int, err os.Error) {
return 0, d.err
}
if d.readErr != nil {
- d.err = d.readErr;
- return 0, d.err;
+ d.err = d.readErr
+ return 0, d.err
}
// Read and decode more input.
- var nn int;
- nn, d.readErr = d.r.Read(d.buf[d.nbuf:]);
- d.nbuf += nn;
+ var nn int
+ nn, d.readErr = d.r.Read(d.buf[d.nbuf:])
+ d.nbuf += nn
// Send complete lines to Decode.
- nl := bytes.LastIndex(d.buf[0:d.nbuf], newline);
+ nl := bytes.LastIndex(d.buf[0:d.nbuf], newline)
if nl < 0 {
continue
}
- nn, d.err = Decode(&d.outbuf, d.buf[0:nl+1]);
+ nn, d.err = Decode(&d.outbuf, d.buf[0:nl+1])
if e, ok := d.err.(CorruptInputError); ok {
d.err = CorruptInputError(int64(e) + d.off)
}
- d.out = d.outbuf[0:nn];
- d.nbuf = copy(&d.buf, d.buf[nl+1:d.nbuf]);
- d.off += int64(nl + 1);
+ d.out = d.outbuf[0:nn]
+ d.nbuf = copy(&d.buf, d.buf[nl+1:d.nbuf])
+ d.off += int64(nl + 1)
}
- panic("unreacahable");
+ panic("unreacahable")
}
diff --git a/src/pkg/encoding/git85/git_test.go b/src/pkg/encoding/git85/git_test.go
index 564b4915be..4a42282fe4 100644
--- a/src/pkg/encoding/git85/git_test.go
+++ b/src/pkg/encoding/git85/git_test.go
@@ -5,36 +5,36 @@
package git85
import (
- "bytes";
- "io/ioutil";
- "os";
- "reflect";
- "strings";
- "testing";
+ "bytes"
+ "io/ioutil"
+ "os"
+ "reflect"
+ "strings"
+ "testing"
)
type testpair struct {
- decoded, encoded string;
+ decoded, encoded string
}
func testEqual(t *testing.T, msg string, args ...) bool {
- v := reflect.NewValue(args).(*reflect.StructValue);
- v1 := v.Field(v.NumField() - 2);
- v2 := v.Field(v.NumField() - 1);
+ v := reflect.NewValue(args).(*reflect.StructValue)
+ v1 := v.Field(v.NumField() - 2)
+ v2 := v.Field(v.NumField() - 1)
if v1.Interface() != v2.Interface() {
- t.Errorf(msg, args);
- return false;
+ t.Errorf(msg, args)
+ return false
}
- return true;
+ return true
}
func TestGitTable(t *testing.T) {
- var saw [256]bool;
+ var saw [256]bool
for i, c := range encode {
if decode[c] != uint8(i+1) {
t.Errorf("decode['%c'] = %d, want %d", c, decode[c], i+1)
}
- saw[c] = true;
+ saw[c] = true
}
for i, b := range saw {
if !b && decode[i] != 0 {
@@ -64,65 +64,65 @@ var gitBigtest = gitPairs[len(gitPairs)-1]
func TestEncode(t *testing.T) {
for _, p := range gitPairs {
- buf := make([]byte, EncodedLen(len(p.decoded)));
- n := Encode(buf, strings.Bytes(p.decoded));
+ buf := make([]byte, EncodedLen(len(p.decoded)))
+ n := Encode(buf, strings.Bytes(p.decoded))
if n != len(buf) {
t.Errorf("EncodedLen does not agree with Encode")
}
- buf = buf[0:n];
- testEqual(t, "Encode(%q) = %q, want %q", p.decoded, string(buf), p.encoded);
+ buf = buf[0:n]
+ testEqual(t, "Encode(%q) = %q, want %q", p.decoded, string(buf), p.encoded)
}
}
func TestEncoder(t *testing.T) {
for _, p := range gitPairs {
- bb := &bytes.Buffer{};
- encoder := NewEncoder(bb);
- encoder.Write(strings.Bytes(p.decoded));
- encoder.Close();
- testEqual(t, "Encode(%q) = %q, want %q", p.decoded, bb.String(), p.encoded);
+ bb := &bytes.Buffer{}
+ encoder := NewEncoder(bb)
+ encoder.Write(strings.Bytes(p.decoded))
+ encoder.Close()
+ testEqual(t, "Encode(%q) = %q, want %q", p.decoded, bb.String(), p.encoded)
}
}
func TestEncoderBuffering(t *testing.T) {
- input := strings.Bytes(gitBigtest.decoded);
+ input := strings.Bytes(gitBigtest.decoded)
for bs := 1; bs <= 12; bs++ {
- bb := &bytes.Buffer{};
- encoder := NewEncoder(bb);
+ bb := &bytes.Buffer{}
+ encoder := NewEncoder(bb)
for pos := 0; pos < len(input); pos += bs {
- end := pos + bs;
+ end := pos + bs
if end > len(input) {
end = len(input)
}
- n, err := encoder.Write(input[pos:end]);
- testEqual(t, "Write(%q) gave error %v, want %v", input[pos:end], err, os.Error(nil));
- testEqual(t, "Write(%q) gave length %v, want %v", input[pos:end], n, end-pos);
+ n, err := encoder.Write(input[pos:end])
+ testEqual(t, "Write(%q) gave error %v, want %v", input[pos:end], err, os.Error(nil))
+ testEqual(t, "Write(%q) gave length %v, want %v", input[pos:end], n, end-pos)
}
- err := encoder.Close();
- testEqual(t, "Close gave error %v, want %v", err, os.Error(nil));
- testEqual(t, "Encoding/%d of %q = %q, want %q", bs, gitBigtest.decoded, bb.String(), gitBigtest.encoded);
+ err := encoder.Close()
+ testEqual(t, "Close gave error %v, want %v", err, os.Error(nil))
+ testEqual(t, "Encoding/%d of %q = %q, want %q", bs, gitBigtest.decoded, bb.String(), gitBigtest.encoded)
}
}
func TestDecode(t *testing.T) {
for _, p := range gitPairs {
- dbuf := make([]byte, 4*len(p.encoded));
- ndst, err := Decode(dbuf, strings.Bytes(p.encoded));
- testEqual(t, "Decode(%q) = error %v, want %v", p.encoded, err, os.Error(nil));
- testEqual(t, "Decode(%q) = ndst %v, want %v", p.encoded, ndst, len(p.decoded));
- testEqual(t, "Decode(%q) = %q, want %q", p.encoded, string(dbuf[0:ndst]), p.decoded);
+ dbuf := make([]byte, 4*len(p.encoded))
+ ndst, err := Decode(dbuf, strings.Bytes(p.encoded))
+ testEqual(t, "Decode(%q) = error %v, want %v", p.encoded, err, os.Error(nil))
+ testEqual(t, "Decode(%q) = ndst %v, want %v", p.encoded, ndst, len(p.decoded))
+ testEqual(t, "Decode(%q) = %q, want %q", p.encoded, string(dbuf[0:ndst]), p.decoded)
}
}
func TestDecoder(t *testing.T) {
for _, p := range gitPairs {
- decoder := NewDecoder(bytes.NewBufferString(p.encoded));
- dbuf, err := ioutil.ReadAll(decoder);
+ decoder := NewDecoder(bytes.NewBufferString(p.encoded))
+ dbuf, err := ioutil.ReadAll(decoder)
if err != nil {
t.Fatal("Read failed", err)
}
- testEqual(t, "Read from %q = length %v, want %v", p.encoded, len(dbuf), len(p.decoded));
- testEqual(t, "Decoding of %q = %q, want %q", p.encoded, string(dbuf), p.decoded);
+ testEqual(t, "Read from %q = length %v, want %v", p.encoded, len(dbuf), len(p.decoded))
+ testEqual(t, "Decoding of %q = %q, want %q", p.encoded, string(dbuf), p.decoded)
if err != nil {
testEqual(t, "Read from %q = %v, want %v", p.encoded, err, os.EOF)
}
@@ -131,31 +131,31 @@ func TestDecoder(t *testing.T) {
func TestDecoderBuffering(t *testing.T) {
for bs := 1; bs <= 12; bs++ {
- decoder := NewDecoder(bytes.NewBufferString(gitBigtest.encoded));
- buf := make([]byte, len(gitBigtest.decoded)+12);
- var total int;
+ decoder := NewDecoder(bytes.NewBufferString(gitBigtest.encoded))
+ buf := make([]byte, len(gitBigtest.decoded)+12)
+ var total int
for total = 0; total < len(gitBigtest.decoded); {
- n, err := decoder.Read(buf[total : total+bs]);
- testEqual(t, "Read from %q at pos %d = %d, %v, want _, %v", gitBigtest.encoded, total, n, err, os.Error(nil));
- total += n;
+ n, err := decoder.Read(buf[total : total+bs])
+ testEqual(t, "Read from %q at pos %d = %d, %v, want _, %v", gitBigtest.encoded, total, n, err, os.Error(nil))
+ total += n
}
- testEqual(t, "Decoding/%d of %q = %q, want %q", bs, gitBigtest.encoded, string(buf[0:total]), gitBigtest.decoded);
+ testEqual(t, "Decoding/%d of %q = %q, want %q", bs, gitBigtest.encoded, string(buf[0:total]), gitBigtest.decoded)
}
}
func TestDecodeCorrupt(t *testing.T) {
type corrupt struct {
- e string;
- p int;
+ e string
+ p int
}
examples := []corrupt{
corrupt{"v", 0},
corrupt{"!z!!!!!!!!!", 0},
- };
+ }
for _, e := range examples {
- dbuf := make([]byte, 2*len(e.e));
- _, err := Decode(dbuf, strings.Bytes(e.e));
+ dbuf := make([]byte, 2*len(e.e))
+ _, err := Decode(dbuf, strings.Bytes(e.e))
switch err := err.(type) {
case CorruptInputError:
testEqual(t, "Corruption in %q at offset %v, want %v", e.e, int(err), e.p)
@@ -166,34 +166,34 @@ func TestDecodeCorrupt(t *testing.T) {
}
func TestGitBig(t *testing.T) {
- n := 3*1000 + 1;
- raw := make([]byte, n);
- const alpha = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ n := 3*1000 + 1
+ raw := make([]byte, n)
+ const alpha = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i := 0; i < n; i++ {
raw[i] = alpha[i%len(alpha)]
}
- encoded := new(bytes.Buffer);
- w := NewEncoder(encoded);
- nn, err := w.Write(raw);
+ encoded := new(bytes.Buffer)
+ w := NewEncoder(encoded)
+ nn, err := w.Write(raw)
if nn != n || err != nil {
t.Fatalf("Encoder.Write(raw) = %d, %v want %d, nil", nn, err, n)
}
- err = w.Close();
+ err = w.Close()
if err != nil {
t.Fatalf("Encoder.Close() = %v want nil", err)
}
- decoded, err := ioutil.ReadAll(NewDecoder(encoded));
+ decoded, err := ioutil.ReadAll(NewDecoder(encoded))
if err != nil {
t.Fatalf("ioutil.ReadAll(NewDecoder(...)): %v", err)
}
if !bytes.Equal(raw, decoded) {
- var i int;
+ var i int
for i = 0; i < len(decoded) && i < len(raw); i++ {
if decoded[i] != raw[i] {
break
}
}
- t.Errorf("Decode(Encode(%d-byte string)) failed at offset %d", n, i);
+ t.Errorf("Decode(Encode(%d-byte string)) failed at offset %d", n, i)
}
}