mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 22:35:24 +00:00
Merge pull request #7134 from alexnask/fix_std_fs_watch
The std.fs.Watch rewrite PR
This commit is contained in:
commit
73b17474d7
File diff suppressed because it is too large
Load Diff
@ -569,6 +569,9 @@ pub const EV_ONESHOT = 0x0010;
|
||||
/// clear event state after reporting
|
||||
pub const EV_CLEAR = 0x0020;
|
||||
|
||||
/// error, event data contains errno
|
||||
pub const EV_ERROR = 0x4000;
|
||||
|
||||
/// force immediate event output
|
||||
/// ... with or without EV_ERROR
|
||||
/// ... use KEVENT_FLAG_ERROR_EVENTS
|
||||
|
||||
@ -109,7 +109,12 @@ pub fn OpenFile(sub_path_w: []const u16, options: OpenFileOptions) OpenError!HAN
|
||||
0,
|
||||
);
|
||||
switch (rc) {
|
||||
.SUCCESS => return result,
|
||||
.SUCCESS => {
|
||||
if (std.io.is_async and options.io_mode == .evented) {
|
||||
_ = CreateIoCompletionPort(result, std.event.Loop.instance.?.os_data.io_port, undefined, undefined) catch undefined;
|
||||
}
|
||||
return result;
|
||||
},
|
||||
.OBJECT_NAME_INVALID => unreachable,
|
||||
.OBJECT_NAME_NOT_FOUND => return error.FileNotFound,
|
||||
.OBJECT_PATH_NOT_FOUND => return error.FileNotFound,
|
||||
@ -418,8 +423,6 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64, io_mode: std.io.Mo
|
||||
},
|
||||
},
|
||||
};
|
||||
// TODO only call create io completion port once per fd
|
||||
_ = CreateIoCompletionPort(in_hFile, loop.os_data.io_port, undefined, undefined) catch undefined;
|
||||
loop.beginOneEvent();
|
||||
suspend {
|
||||
// TODO handle buffer bigger than DWORD can hold
|
||||
@ -500,8 +503,6 @@ pub fn WriteFile(
|
||||
},
|
||||
},
|
||||
};
|
||||
// TODO only call create io completion port once per fd
|
||||
_ = CreateIoCompletionPort(handle, loop.os_data.io_port, undefined, undefined) catch undefined;
|
||||
loop.beginOneEvent();
|
||||
suspend {
|
||||
const adjusted_len = math.cast(DWORD, bytes.len) catch maxInt(DWORD);
|
||||
|
||||
@ -813,7 +813,8 @@ pub const FILE_NOTIFY_INFORMATION = extern struct {
|
||||
NextEntryOffset: DWORD,
|
||||
Action: DWORD,
|
||||
FileNameLength: DWORD,
|
||||
FileName: [1]WCHAR,
|
||||
// Flexible array member
|
||||
// FileName: [1]WCHAR,
|
||||
};
|
||||
|
||||
pub const FILE_ACTION_ADDED = 0x00000001;
|
||||
|
||||
@ -8,7 +8,7 @@ usingnamespace @import("bits.zig");
|
||||
pub extern "kernel32" fn AddVectoredExceptionHandler(First: c_ulong, Handler: ?VECTORED_EXCEPTION_HANDLER) callconv(WINAPI) ?*c_void;
|
||||
pub extern "kernel32" fn RemoveVectoredExceptionHandler(Handle: HANDLE) callconv(WINAPI) c_ulong;
|
||||
|
||||
pub extern "kernel32" fn CancelIoEx(hFile: HANDLE, lpOverlapped: LPOVERLAPPED) callconv(WINAPI) BOOL;
|
||||
pub extern "kernel32" fn CancelIoEx(hFile: HANDLE, lpOverlapped: ?LPOVERLAPPED) callconv(WINAPI) BOOL;
|
||||
|
||||
pub extern "kernel32" fn CloseHandle(hObject: HANDLE) callconv(WINAPI) BOOL;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user