From b3db4988d785c6905d7891353dc907718370c329 Mon Sep 17 00:00:00 2001 From: Felicitas Pojtinger Date: Wed, 26 Jan 2022 00:21:48 +0100 Subject: [PATCH] fix: Handle seeking over limits --- pkg/fs/file.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/fs/file.go b/pkg/fs/file.go index c30ed2e..50dfe71 100644 --- a/pkg/fs/file.go +++ b/pkg/fs/file.go @@ -292,7 +292,8 @@ func (f *File) seekWithoutLocking(offset int64, whence int) (int64, error) { }) if f.info.IsDir() { - return -1, config.ErrIsDirectory + // Noop + return 0, nil } if f.writeBuf != nil { @@ -353,7 +354,17 @@ func (f *File) seekWithoutLocking(offset int64, whence int) (int64, error) { written, err := io.CopyN(io.Discard, f.readOpReader, dst-int64(f.readOpReader.BytesRead)) if err == io.EOF { - return written, io.EOF + // Noop + switch whence { + case io.SeekStart: + return offset, nil + case io.SeekCurrent: + return int64(f.readOpReader.BytesRead) + offset, nil + case io.SeekEnd: + return int64(f.info.Size()) - offset, nil + default: + return -1, config.ErrNotImplemented + } } if err != nil {