diff --git a/lib/std/x/os/Socket.zig b/lib/std/x/os/Socket.zig index 33e463e731..bb984af97a 100644 --- a/lib/std/x/os/Socket.zig +++ b/lib/std/x/os/Socket.zig @@ -273,8 +273,8 @@ pub fn setReadBufferSize(self: Socket, size: u32) !void { /// to the socket will thereafter return `error.WouldBlock` should the timeout be exceeded. pub fn setWriteTimeout(self: Socket, milliseconds: usize) !void { const timeout = os.timeval{ - .tv_sec = @intCast(isize, milliseconds / time.ms_per_s), - .tv_usec = @intCast(isize, (milliseconds % time.ms_per_s) * time.us_per_ms), + .tv_sec = @intCast(i32, milliseconds / time.ms_per_s), + .tv_usec = @intCast(i32, (milliseconds % time.ms_per_s) * time.us_per_ms), }; return os.setsockopt(self.fd, os.SOL_SOCKET, os.SO_SNDTIMEO, mem.asBytes(&timeout)); @@ -286,8 +286,8 @@ pub fn setWriteTimeout(self: Socket, milliseconds: usize) !void { /// exceeded. pub fn setReadTimeout(self: Socket, milliseconds: usize) !void { const timeout = os.timeval{ - .tv_sec = @intCast(isize, milliseconds / time.ms_per_s), - .tv_usec = @intCast(isize, (milliseconds % time.ms_per_s) * time.us_per_ms), + .tv_sec = @intCast(i32, milliseconds / time.ms_per_s), + .tv_usec = @intCast(i32, (milliseconds % time.ms_per_s) * time.us_per_ms), }; return os.setsockopt(self.fd, os.SOL_SOCKET, os.SO_RCVTIMEO, mem.asBytes(&timeout)); diff --git a/lib/std/x/os/net.zig b/lib/std/x/os/net.zig index 78de60e6c1..2534570c53 100644 --- a/lib/std/x/os/net.zig +++ b/lib/std/x/os/net.zig @@ -17,18 +17,21 @@ const testing = std.testing; /// an error if either resolution fails, or if the interface name is /// too long. pub fn resolveScopeID(name: []const u8) !u32 { - if (name.len >= os.IFNAMESIZE - 1) return error.NameTooLong; + if (comptime @hasDecl(os, "IFNAMESIZE")) { + if (name.len >= os.IFNAMESIZE - 1) return error.NameTooLong; - const fd = try os.socket(os.AF_UNIX, os.SOCK_DGRAM, 0); - defer os.closeSocket(fd); + const fd = try os.socket(os.AF_UNIX, os.SOCK_DGRAM, 0); + defer os.closeSocket(fd); - var f: os.ifreq = undefined; - mem.copy(u8, &f.ifrn.name, name); - f.ifrn.name[name.len] = 0; + var f: os.ifreq = undefined; + mem.copy(u8, &f.ifrn.name, name); + f.ifrn.name[name.len] = 0; - try os.ioctl_SIOCGIFINDEX(fd, &f); + try os.ioctl_SIOCGIFINDEX(fd, &f); - return @bitCast(u32, f.ifru.ivalue); + return @bitCast(u32, f.ifru.ivalue); + } + return error.Unsupported; } /// An IPv4 address comprised of 4 bytes.