From 8a40ca167872372dcacb2519f927903a407bc4db Mon Sep 17 00:00:00 2001 From: Jackson Netherwood-Imig Date: Fri, 17 Apr 2026 15:12:36 -0700 Subject: [PATCH] fix: cast ioctl result based on syscall result type --- src/sys.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sys.zig b/src/sys.zig index 549d87d..a05c187 100644 --- a/src/sys.zig +++ b/src/sys.zig @@ -4,13 +4,18 @@ const IOCTL = std.os.linux.IOCTL; pub const IoctlError = std.Io.Cancelable || std.posix.UnexpectedError; pub fn ioctl(file: std.Io.File, io: std.Io, request: Request, arg: ?*anyopaque) IoctlError!void { - const rc = try io.operate(.{ .device_io_control = .{ + const result = try io.operate(.{ .device_io_control = .{ .file = file, .code = @intFromEnum(request), .arg = arg, } }); - return switch (std.posix.errno(@bitCast(@as(isize, rc.device_io_control)))) { + const rc = if (@import("builtin").link_libc) + @as(c_int, @intCast(result.device_io_control)) + else + @as(usize, @bitCast(@as(isize, @intCast(result.device_io_control)))); + + return switch (std.posix.errno(rc)) { .SUCCESS => {}, else => |e| std.posix.unexpectedErrno(e), };