diff --git a/Userland/Libraries/LibWasm/WASI/Wasi.cpp b/Userland/Libraries/LibWasm/WASI/Wasi.cpp index 587f566eb1c..e0c6ec1fbde 100644 --- a/Userland/Libraries/LibWasm/WASI/Wasi.cpp +++ b/Userland/Libraries/LibWasm/WASI/Wasi.cpp @@ -812,6 +812,19 @@ ErrorOr> Implementation::impl$fd_fdstat_get(Configuration&, FD fd }; } +ErrorOr> Implementation::impl$fd_seek(Configuration&, FD fd, FileDelta offset, Whence whence) +{ + auto mapped_fd = map_fd(fd); + if (!mapped_fd.has()) + return errno_value_from_errno(EBADF); + + u32 fd_value = mapped_fd.get(); + auto result = lseek(fd_value, offset, static_cast(whence)); + if (result < 0) + return errno_value_from_errno(errno); + return FileSize(result); +} + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" @@ -830,7 +843,6 @@ ErrorOr> Implementation::impl$fd_pread(Configuration&, FD, Pointer< ErrorOr> Implementation::impl$fd_pwrite(Configuration&, FD, Pointer iovs, Size iovs_len, FileSize offset) { return Errno::NoSys; } ErrorOr> Implementation::impl$fd_readdir(Configuration&, FD, Pointer buf, Size buf_len, DirCookie cookie) { return Errno::NoSys; } ErrorOr> Implementation::impl$fd_renumber(Configuration&, FD from, FD to) { return Errno::NoSys; } -ErrorOr> Implementation::impl$fd_seek(Configuration&, FD, FileDelta offset, Whence whence) { return Errno::NoSys; } ErrorOr> Implementation::impl$fd_sync(Configuration&, FD) { return Errno::NoSys; } ErrorOr> Implementation::impl$fd_tell(Configuration&, FD) { return Errno::NoSys; } ErrorOr> Implementation::impl$path_filestat_set_times(Configuration&, FD, LookupFlags, Pointer path, Size path_len, Timestamp atim, Timestamp mtim, FSTFlags) { return Errno::NoSys; }