mirror of
https://github.com/ziglang/zig.git
synced 2025-12-16 03:03:09 +00:00
fix: Use std.os.windows.poll rather than libc
This commit is contained in:
parent
9363e995fc
commit
f58ee387c7
@ -6479,33 +6479,31 @@ pub const PollError = error{
|
||||
} || UnexpectedError;
|
||||
|
||||
pub fn poll(fds: []pollfd, timeout: i32) PollError!usize {
|
||||
if (native_os == .windows) {
|
||||
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),
|
||||
}
|
||||
}
|
||||
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()) {
|
||||
.WSANOTINITIALISED => unreachable,
|
||||
.WSAENETDOWN => return error.NetworkSubsystemFailed,
|
||||
.WSAENOBUFS => return error.SystemResources,
|
||||
// TODO: handle more errors
|
||||
else => |err| return windows.unexpectedWSAError(err),
|
||||
}
|
||||
} else {
|
||||
return @intCast(rc);
|
||||
}
|
||||
} else {
|
||||
switch (errno(rc)) {
|
||||
.SUCCESS => return @intCast(rc),
|
||||
.FAULT => unreachable,
|
||||
.INTR => continue,
|
||||
.INVAL => unreachable,
|
||||
.NOMEM => return error.SystemResources,
|
||||
else => |err| return unexpectedErrno(err),
|
||||
}
|
||||
switch (errno(rc)) {
|
||||
.SUCCESS => return @intCast(rc),
|
||||
.FAULT => unreachable,
|
||||
.INTR => continue,
|
||||
.INVAL => unreachable,
|
||||
.NOMEM => return error.SystemResources,
|
||||
else => |err| return unexpectedErrno(err),
|
||||
}
|
||||
unreachable;
|
||||
}
|
||||
unreachable;
|
||||
}
|
||||
|
||||
pub const PPollError = error{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user