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")
}
}