| 685 | } |
| 686 | |
| 687 | WasiExpect<INode> INode::open(std::string Path, __wasi_oflags_t OpenFlags, |
| 688 | __wasi_fdflags_t FdFlags, |
| 689 | VFS::Flags VFSFlags) noexcept { |
| 690 | EXPECTED_TRY(auto Pack, getOpenFlags(OpenFlags, FdFlags, VFSFlags)); |
| 691 | const auto [AttributeFlags, AccessFlags, CreationDisposition] = Pack; |
| 692 | const DWORD_ ShareFlags = FILE_SHARE_VALID_FLAGS_; |
| 693 | const auto FullPath = std::filesystem::u8path(Path); |
| 694 | |
| 695 | INode Result(FullPath, AccessFlags, ShareFlags, CreationDisposition, |
| 696 | AttributeFlags); |
| 697 | |
| 698 | if (unlikely(!Result.ok())) { |
| 699 | return WasiUnexpect(detail::fromLastError(GetLastError())); |
| 700 | } |
| 701 | |
| 702 | Result.SavedFdFlags = FdFlags; |
| 703 | Result.SavedVFSFlags = VFSFlags; |
| 704 | return Result; |
| 705 | } |
| 706 | |
| 707 | WasiExpect<void> INode::fdAdvise(__wasi_filesize_t Offset, __wasi_filesize_t, |
| 708 | __wasi_advice_t Advice |
no test coverage detected