diff options
| author | Ondřej Surý <ondrej@sury.org> | 2012-01-30 15:38:19 +0100 |
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2012-01-30 15:38:19 +0100 |
| commit | 4cecda6c347bd6902b960c6a35a967add7070b0d (patch) | |
| tree | a462e224ff41ec9f3eb1a0b6e815806f9e8804ad /src/pkg/compress/zlib | |
| parent | 6c7ca6e4d4e26e4c8cbe0d183966011b3b088a0a (diff) | |
| download | golang-4cecda6c347bd6902b960c6a35a967add7070b0d.tar.gz | |
Imported Upstream version 2012.01.27upstream-weekly/2012.01.27
Diffstat (limited to 'src/pkg/compress/zlib')
| -rw-r--r-- | src/pkg/compress/zlib/reader.go | 26 | ||||
| -rw-r--r-- | src/pkg/compress/zlib/reader_test.go | 9 | ||||
| -rw-r--r-- | src/pkg/compress/zlib/writer.go | 18 | ||||
| -rw-r--r-- | src/pkg/compress/zlib/writer_test.go | 4 |
4 files changed, 26 insertions, 31 deletions
diff --git a/src/pkg/compress/zlib/reader.go b/src/pkg/compress/zlib/reader.go index 78dabdf4d..4638a6548 100644 --- a/src/pkg/compress/zlib/reader.go +++ b/src/pkg/compress/zlib/reader.go @@ -26,36 +26,36 @@ package zlib import ( "bufio" "compress/flate" + "errors" "hash" "hash/adler32" "io" - "os" ) const zlibDeflate = 8 -var ChecksumError = os.NewError("zlib checksum error") -var HeaderError = os.NewError("invalid zlib header") -var DictionaryError = os.NewError("invalid zlib dictionary") +var ErrChecksum = errors.New("zlib checksum error") +var ErrHeader = errors.New("invalid zlib header") +var ErrDictionary = errors.New("invalid zlib dictionary") type reader struct { r flate.Reader decompressor io.ReadCloser digest hash.Hash32 - err os.Error + err error scratch [4]byte } // NewReader creates a new io.ReadCloser that satisfies reads by decompressing data read from r. // The implementation buffers input and may read more data than necessary from r. // It is the caller's responsibility to call Close on the ReadCloser when done. -func NewReader(r io.Reader) (io.ReadCloser, os.Error) { +func NewReader(r io.Reader) (io.ReadCloser, error) { return NewReaderDict(r, nil) } // NewReaderDict is like NewReader but uses a preset dictionary. // NewReaderDict ignores the dictionary if the compressed data does not refer to it. -func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, os.Error) { +func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, error) { z := new(reader) if fr, ok := r.(flate.Reader); ok { z.r = fr @@ -68,7 +68,7 @@ func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, os.Error) { } h := uint(z.scratch[0])<<8 | uint(z.scratch[1]) if (z.scratch[0]&0x0f != zlibDeflate) || (h%31 != 0) { - return nil, HeaderError + return nil, ErrHeader } if z.scratch[1]&0x20 != 0 { _, err = io.ReadFull(z.r, z.scratch[0:4]) @@ -77,7 +77,7 @@ func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, os.Error) { } checksum := uint32(z.scratch[0])<<24 | uint32(z.scratch[1])<<16 | uint32(z.scratch[2])<<8 | uint32(z.scratch[3]) if checksum != adler32.Checksum(dict) { - return nil, DictionaryError + return nil, ErrDictionary } z.decompressor = flate.NewReaderDict(z.r, dict) } else { @@ -87,7 +87,7 @@ func NewReaderDict(r io.Reader, dict []byte) (io.ReadCloser, os.Error) { return z, nil } -func (z *reader) Read(p []byte) (n int, err os.Error) { +func (z *reader) Read(p []byte) (n int, err error) { if z.err != nil { return 0, z.err } @@ -97,7 +97,7 @@ func (z *reader) Read(p []byte) (n int, err os.Error) { n, err = z.decompressor.Read(p) z.digest.Write(p[0:n]) - if n != 0 || err != os.EOF { + if n != 0 || err != io.EOF { z.err = err return } @@ -110,14 +110,14 @@ func (z *reader) Read(p []byte) (n int, err os.Error) { // ZLIB (RFC 1950) is big-endian, unlike GZIP (RFC 1952). checksum := uint32(z.scratch[0])<<24 | uint32(z.scratch[1])<<16 | uint32(z.scratch[2])<<8 | uint32(z.scratch[3]) if checksum != z.digest.Sum32() { - z.err = ChecksumError + z.err = ErrChecksum return 0, z.err } return } // Calling Close does not close the wrapped io.Reader originally passed to NewReader. -func (z *reader) Close() os.Error { +func (z *reader) Close() error { if z.err != nil { return z.err } diff --git a/src/pkg/compress/zlib/reader_test.go b/src/pkg/compress/zlib/reader_test.go index 195db446c..3b02a0868 100644 --- a/src/pkg/compress/zlib/reader_test.go +++ b/src/pkg/compress/zlib/reader_test.go @@ -7,7 +7,6 @@ package zlib import ( "bytes" "io" - "os" "testing" ) @@ -16,7 +15,7 @@ type zlibTest struct { raw string compressed []byte dict []byte - err os.Error + err error } // Compare-to-golden test data was generated by the ZLIB example program at @@ -46,14 +45,14 @@ var zlibTests = []zlibTest{ "", []byte{0x78, 0x9f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01}, nil, - HeaderError, + ErrHeader, }, { "bad checksum", "", []byte{0x78, 0x9c, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff}, nil, - ChecksumError, + ErrChecksum, }, { "not enough data", @@ -96,7 +95,7 @@ var zlibTests = []zlibTest{ []byte{ 0x48, 0x65, 0x6c, 0x6c, }, - DictionaryError, + ErrDictionary, }, } diff --git a/src/pkg/compress/zlib/writer.go b/src/pkg/compress/zlib/writer.go index 8f86e9c4c..bbff6375e 100644 --- a/src/pkg/compress/zlib/writer.go +++ b/src/pkg/compress/zlib/writer.go @@ -6,10 +6,10 @@ package zlib import ( "compress/flate" + "errors" "hash" "hash/adler32" "io" - "os" ) // These constants are copied from the flate package, so that code that imports @@ -27,17 +27,17 @@ type Writer struct { w io.Writer compressor *flate.Writer digest hash.Hash32 - err os.Error + err error scratch [4]byte } // NewWriter calls NewWriterLevel with the default compression level. -func NewWriter(w io.Writer) (*Writer, os.Error) { +func NewWriter(w io.Writer) (*Writer, error) { return NewWriterLevel(w, DefaultCompression) } // NewWriterLevel calls NewWriterDict with no dictionary. -func NewWriterLevel(w io.Writer, level int) (*Writer, os.Error) { +func NewWriterLevel(w io.Writer, level int) (*Writer, error) { return NewWriterDict(w, level, nil) } @@ -46,7 +46,7 @@ func NewWriterLevel(w io.Writer, level int) (*Writer, os.Error) { // level is the compression level, which can be DefaultCompression, NoCompression, // or any integer value between BestSpeed and BestCompression (inclusive). // dict is the preset dictionary to compress with, or nil to use no dictionary. -func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, os.Error) { +func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error) { z := new(Writer) // ZLIB has a two-byte header (as documented in RFC 1950). // The first four bits is the CINFO (compression info), which is 7 for the default deflate window size. @@ -66,7 +66,7 @@ func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, os.Error) { case 7, 8, 9: z.scratch[1] = 3 << 6 default: - return nil, os.NewError("level out of range") + return nil, errors.New("level out of range") } if dict != nil { z.scratch[1] |= 1 << 5 @@ -94,7 +94,7 @@ func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, os.Error) { return z, nil } -func (z *Writer) Write(p []byte) (n int, err os.Error) { +func (z *Writer) Write(p []byte) (n int, err error) { if z.err != nil { return 0, z.err } @@ -111,7 +111,7 @@ func (z *Writer) Write(p []byte) (n int, err os.Error) { } // Flush flushes the underlying compressor. -func (z *Writer) Flush() os.Error { +func (z *Writer) Flush() error { if z.err != nil { return z.err } @@ -120,7 +120,7 @@ func (z *Writer) Flush() os.Error { } // Calling Close does not close the wrapped io.Writer originally passed to NewWriter. -func (z *Writer) Close() os.Error { +func (z *Writer) Close() error { if z.err != nil { return z.err } diff --git a/src/pkg/compress/zlib/writer_test.go b/src/pkg/compress/zlib/writer_test.go index 32f05ab68..a71894da3 100644 --- a/src/pkg/compress/zlib/writer_test.go +++ b/src/pkg/compress/zlib/writer_test.go @@ -59,10 +59,6 @@ func testLevelDict(t *testing.T, fn string, b0 []byte, level int, d string) { } defer zlibw.Close() _, err = zlibw.Write(b0) - if err == os.EPIPE { - // Fail, but do not report the error, as some other (presumably reported) error broke the pipe. - return - } if err != nil { t.Errorf("%s (level=%d, dict=%q): %v", fn, level, d, err) return |
