From b6e9e69c96b4402b042bd72101f0f7cb5bde419b Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 8 Aug 2025 13:29:22 +1000 Subject: [PATCH] Fix build on Windows --- storage/file-piece.go | 8 ++------ storage/seek-data_unix.go | 19 +++++++++++++++++++ storage/seek-data_windows.go | 10 ++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 storage/seek-data_unix.go create mode 100644 storage/seek-data_windows.go diff --git a/storage/file-piece.go b/storage/file-piece.go index d50c509a..54f1556b 100644 --- a/storage/file-piece.go +++ b/storage/file-piece.go @@ -12,8 +12,6 @@ import ( g "github.com/anacrolix/generics" "github.com/anacrolix/missinggo/v2/panicif" - "golang.org/x/sys/unix" - "github.com/anacrolix/torrent/metainfo" "github.com/anacrolix/torrent/segments" ) @@ -318,10 +316,8 @@ func (me *filePieceImpl) writeFileTo(w io.Writer, fileIndex int, extent segments panicif.GreaterThan(extent.End(), file.FileInfo.Length) extentRemaining := extent.Length var dataOffset int64 - dataOffset, err = unix.Seek(int(f.Fd()), extent.Start, unix.SEEK_DATA) - if err == unix.ENXIO { - // File has no more data. Treat as short write like io.CopyN. - err = io.EOF + dataOffset, err = seekData(f, extent.Start) + if err == io.EOF { return } panicif.Err(err) diff --git a/storage/seek-data_unix.go b/storage/seek-data_unix.go new file mode 100644 index 00000000..35e0dee0 --- /dev/null +++ b/storage/seek-data_unix.go @@ -0,0 +1,19 @@ +//go:build unix + +package storage + +import ( + "io" + "os" + + "golang.org/x/sys/unix" +) + +func seekData(f *os.File, offset int64) (ret int64, err error) { + ret, err = unix.Seek(int(f.Fd()), offset, unix.SEEK_DATA) + if err == unix.ENXIO { + // File has no more data. Treat as short write like io.CopyN. + err = io.EOF + } + return +} diff --git a/storage/seek-data_windows.go b/storage/seek-data_windows.go new file mode 100644 index 00000000..ccfe202f --- /dev/null +++ b/storage/seek-data_windows.go @@ -0,0 +1,10 @@ +package storage + +import ( + "io" + "os" +) + +func seekData(f *os.File, offset int64) (ret int64, err error) { + return f.Seek(offset, io.SeekStart) +} -- 2.51.0