func()

in packages/fs.go [167:200]


func (f *zipFileSeeker) Seek(offset int64, whence int) (n int64, err error) {
	switch whence {
	case io.SeekStart:
		f.File.Close()
		f.File, err = f.reader.Open(f.path)
		if err != nil {
			return -1, err
		}
		if offset > 0 {
			r := io.LimitReader(f.File, offset)
			n, err = io.Copy(io.Discard, r)
			if err != nil {
				return -1, err
			}
			offset = int64(n)
		}
		return offset, nil
	case io.SeekEnd:
		if offset != 0 {
			return -1, fmt.Errorf("unsupported offset")
		}
		info, err := f.File.Stat()
		if err != nil {
			return -1, err
		}
		_, err = io.Copy(io.Discard, f.File)
		if err != nil {
			return -1, err
		}
		return info.Size(), nil
	default:
		return -1, fmt.Errorf("unsupported whence")
	}
}