diff options
Diffstat (limited to 'src/pkg/archive/zip/reader.go')
| -rw-r--r-- | src/pkg/archive/zip/reader.go | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/pkg/archive/zip/reader.go b/src/pkg/archive/zip/reader.go index b0a559936b..64152b4245 100644 --- a/src/pkg/archive/zip/reader.go +++ b/src/pkg/archive/zip/reader.go @@ -7,6 +7,7 @@ package zip import ( "bufio" "compress/flate" + "errors" "hash" "hash/crc32" "encoding/binary" @@ -16,9 +17,9 @@ import ( ) var ( - FormatError = os.NewError("zip: not a valid zip file") - UnsupportedMethod = os.NewError("zip: unsupported compression algorithm") - ChecksumError = os.NewError("zip: checksum error") + FormatError = errors.New("zip: not a valid zip file") + UnsupportedMethod = errors.New("zip: unsupported compression algorithm") + ChecksumError = errors.New("zip: checksum error") ) type Reader struct { @@ -44,7 +45,7 @@ func (f *File) hasDataDescriptor() bool { } // OpenReader will open the Zip file specified by name and return a ReadCloser. -func OpenReader(name string) (*ReadCloser, os.Error) { +func OpenReader(name string) (*ReadCloser, error) { f, err := os.Open(name) if err != nil { return nil, err @@ -64,7 +65,7 @@ func OpenReader(name string) (*ReadCloser, os.Error) { // NewReader returns a new Reader reading from r, which is assumed to // have the given size in bytes. -func NewReader(r io.ReaderAt, size int64) (*Reader, os.Error) { +func NewReader(r io.ReaderAt, size int64) (*Reader, error) { zr := new(Reader) if err := zr.init(r, size); err != nil { return nil, err @@ -72,7 +73,7 @@ func NewReader(r io.ReaderAt, size int64) (*Reader, os.Error) { return zr, nil } -func (z *Reader) init(r io.ReaderAt, size int64) os.Error { +func (z *Reader) init(r io.ReaderAt, size int64) error { end, err := readDirectoryEnd(r, size) if err != nil { return err @@ -110,13 +111,13 @@ func (z *Reader) init(r io.ReaderAt, size int64) os.Error { } // Close closes the Zip file, rendering it unusable for I/O. -func (rc *ReadCloser) Close() os.Error { +func (rc *ReadCloser) Close() error { return rc.f.Close() } // Open returns a ReadCloser that provides access to the File's contents. // It is safe to Open and Read from files concurrently. -func (f *File) Open() (rc io.ReadCloser, err os.Error) { +func (f *File) Open() (rc io.ReadCloser, err error) { bodyOffset, err := f.findBodyOffset() if err != nil { return @@ -148,10 +149,10 @@ type checksumReader struct { zipr io.Reader // for reading the data descriptor } -func (r *checksumReader) Read(b []byte) (n int, err os.Error) { +func (r *checksumReader) Read(b []byte) (n int, err error) { n, err = r.rc.Read(b) r.hash.Write(b[:n]) - if err != os.EOF { + if err != io.EOF { return } if r.f.hasDataDescriptor() { @@ -165,9 +166,9 @@ func (r *checksumReader) Read(b []byte) (n int, err os.Error) { return } -func (r *checksumReader) Close() os.Error { return r.rc.Close() } +func (r *checksumReader) Close() error { return r.rc.Close() } -func readFileHeader(f *File, r io.Reader) os.Error { +func readFileHeader(f *File, r io.Reader) error { var b [fileHeaderLen]byte if _, err := io.ReadFull(r, b[:]); err != nil { return err @@ -197,7 +198,7 @@ func readFileHeader(f *File, r io.Reader) os.Error { // findBodyOffset does the minimum work to verify the file has a header // and returns the file body offset. -func (f *File) findBodyOffset() (int64, os.Error) { +func (f *File) findBodyOffset() (int64, error) { r := io.NewSectionReader(f.zipr, f.headerOffset, f.zipsize-f.headerOffset) var b [fileHeaderLen]byte if _, err := io.ReadFull(r, b[:]); err != nil { @@ -215,7 +216,7 @@ func (f *File) findBodyOffset() (int64, os.Error) { // readDirectoryHeader attempts to read a directory header from r. // It returns io.ErrUnexpectedEOF if it cannot read a complete header, // and FormatError if it doesn't find a valid header signature. -func readDirectoryHeader(f *File, r io.Reader) os.Error { +func readDirectoryHeader(f *File, r io.Reader) error { var b [directoryHeaderLen]byte if _, err := io.ReadFull(r, b[:]); err != nil { return err @@ -250,7 +251,7 @@ func readDirectoryHeader(f *File, r io.Reader) os.Error { return nil } -func readDataDescriptor(r io.Reader, f *File) os.Error { +func readDataDescriptor(r io.Reader, f *File) error { var b [dataDescriptorLen]byte if _, err := io.ReadFull(r, b[:]); err != nil { return err @@ -262,7 +263,7 @@ func readDataDescriptor(r io.Reader, f *File) os.Error { return nil } -func readDirectoryEnd(r io.ReaderAt, size int64) (dir *directoryEnd, err os.Error) { +func readDirectoryEnd(r io.ReaderAt, size int64) (dir *directoryEnd, err error) { // look for directoryEndSignature in the last 1k, then in the last 65k var b []byte for i, bLen := range []int64{1024, 65 * 1024} { @@ -270,7 +271,7 @@ func readDirectoryEnd(r io.ReaderAt, size int64) (dir *directoryEnd, err os.Erro bLen = size } b = make([]byte, int(bLen)) - if _, err := r.ReadAt(b, size-bLen); err != nil && err != os.EOF { + if _, err := r.ReadAt(b, size-bLen); err != nil && err != io.EOF { return nil, err } if p := findSignatureInBlock(b); p >= 0 { |
