fix: Use std.os.windows.poll rather than libc

This commit is contained in:
mochalins 2024-06-23 14:23:53 +09:00 committed by Andrew Kelley
parent 9363e995fc
commit f58ee387c7

View File

@ -6479,22 +6479,21 @@ pub const PollError = error{
} || UnexpectedError;
pub fn poll(fds: []pollfd, timeout: i32) PollError!usize {
while (true) {
const fds_count = cast(nfds_t, fds.len) orelse return error.SystemResources;
const rc = system.poll(fds.ptr, fds_count, timeout);
if (native_os == .windows) {
if (rc == windows.ws2_32.SOCKET_ERROR) {
switch (windows.ws2_32.WSAGetLastError()) {
switch (windows.poll(fds.ptr, @intCast(fds.len), timeout)) {
windows.ws2_32.SOCKET_ERROR => switch (windows.ws2_32.WSAGetLastError()) {
.WSANOTINITIALISED => unreachable,
.WSAENETDOWN => return error.NetworkSubsystemFailed,
.WSAENOBUFS => return error.SystemResources,
// TODO: handle more errors
else => |err| return windows.unexpectedWSAError(err),
},
else => |rc| return @intCast(rc),
}
} else {
return @intCast(rc);
}
} else {
while (true) {
const fds_count = cast(nfds_t, fds.len) orelse return error.SystemResources;
const rc = system.poll(fds.ptr, fds_count, timeout);
switch (errno(rc)) {
.SUCCESS => return @intCast(rc),
.FAULT => unreachable,
@ -6505,7 +6504,6 @@ pub fn poll(fds: []pollfd, timeout: i32) PollError!usize {
}
}
unreachable;
}
}
pub const PPollError = error{