Browse Source

+ implemented SysUtils.FileExists for WASI

Nikolay Nikolov 3 years ago
parent
commit
4dc0c37678
1 changed files with 17 additions and 0 deletions
  1. 17 0
      rtl/wasi/sysutils.pp

+ 17 - 0
rtl/wasi/sysutils.pp

@@ -431,7 +431,24 @@ end;
 
 
 function FileExists (const FileName: RawByteString; FollowLink : Boolean): boolean;
+var
+  pr: RawByteString;
+  fd: __wasi_fd_t;
+  Info: __wasi_filestat_t;
+  flags: __wasi_lookupflags_t;
 begin
+  if FileName='' then
+    exit(false);
+  if not ConvertToFdRelativePath(FileName,fd,pr) then
+    exit(false);
+  if FollowLink then
+    flags:=__WASI_LOOKUPFLAGS_SYMLINK_FOLLOW
+  else
+    flags:=0;
+  if __wasi_path_filestat_get(fd,flags,PChar(pr),length(pr),@Info)=__WASI_ERRNO_SUCCESS then
+    result:=Info.filetype<>__WASI_FILETYPE_DIRECTORY
+  else
+    result:=false;
 end;