diff --git a/rtl/wasi/sysfile.inc b/rtl/wasi/sysfile.inc index c73620e116..8419062421 100644 --- a/rtl/wasi/sysfile.inc +++ b/rtl/wasi/sysfile.inc @@ -123,13 +123,33 @@ begin end; procedure Do_Seek(Handle:thandle;Pos:Int64); +var + res: __wasi_errno_t; + newoffset: __wasi_filesize_t; begin - DebugWriteLn('Do_Seek'); + res:=__wasi_fd_seek(Handle,Pos,__WASI_WHENCE_SET,@newoffset); + if res=__WASI_ERRNO_SUCCESS then + InOutRes:=0 + else + InOutRes:=Errno2InoutRes(res); end; function Do_Seekend(Handle:thandle):Int64; +var + res: __wasi_errno_t; + newoffset: __wasi_filesize_t; begin - DebugWriteLn('Do_Seekend'); + res:=__wasi_fd_seek(Handle,0,__WASI_WHENCE_END,@newoffset); + if res=__WASI_ERRNO_SUCCESS then + begin + InOutRes:=0; + Do_Seekend:=newoffset; + end + else + begin + InOutRes:=Errno2InoutRes(res); + Do_Seekend:=-1; + end; end; function Do_FileSize(Handle:thandle):Int64;