Browse Source

+ implemented Do_Seek and Do_Seekend for the WASI target

git-svn-id: trunk@49531 -
nickysn 4 years ago
parent
commit
539ea53bab
1 changed files with 22 additions and 2 deletions
  1. 22 2
      rtl/wasi/sysfile.inc

+ 22 - 2
rtl/wasi/sysfile.inc

@@ -123,13 +123,33 @@ begin
 end;
 end;
 
 
 procedure Do_Seek(Handle:thandle;Pos:Int64);
 procedure Do_Seek(Handle:thandle;Pos:Int64);
+var
+  res: __wasi_errno_t;
+  newoffset: __wasi_filesize_t;
 begin
 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;
 end;
 
 
 function Do_Seekend(Handle:thandle):Int64;
 function Do_Seekend(Handle:thandle):Int64;
+var
+  res: __wasi_errno_t;
+  newoffset: __wasi_filesize_t;
 begin
 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;
 end;
 
 
 function Do_FileSize(Handle:thandle):Int64;
 function Do_FileSize(Handle:thandle):Int64;