fn fileStat(userdata: ?*anyopaque, file: File) File.StatError!File.Stat
fn fileStat(userdata: ?*anyopaque, file: File) File.StatError!File.Stat { const ev: *Evented = @ptrCast(@alignCast(userdata)); _ = ev; while (true) { var stat = std.mem.zeroes(c.Stat); switch (c.errno(c.fstat(file.handle, &stat))) { .SUCCESS => return statFromPosix(&stat), .INTR => {}, .INVAL => |err| return errnoBug(err), .BADF => |err| return errnoBug(err), // File descriptor used after closed. .NOMEM => return error.SystemResources, .ACCES => return error.AccessDenied, else => |err| return unexpectedErrno(err), } } }