fn fileIsTty(userdata: ?*anyopaque, file: File) Io.Cancelable!bool userdata: ?*anyopaquefile: File3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828fn fileIsTty(userdata: ?*anyopaque, file: File) Io.Cancelable!bool {
const ev: *Evented = @ptrCast(@alignCast(userdata));
var sync: CancelRegion.Sync = try .init(ev);
defer sync.deinit(ev);
while (true) {
try sync.cancel_region.await(.nothing);
var wsz: winsize = undefined;
const rc = linux.ioctl(file.handle, linux.T.IOCGWINSZ, @intFromPtr(&wsz));
switch (linux.errno(rc)) {
.SUCCESS => return true,
.INTR => {},
else => return false,
}
}
}