mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-06-03 05:58:37 +03:00
I think this gets us on master zig...
This commit is contained in:
@ -14,10 +14,13 @@ final: prev: rec {
|
|||||||
|
|
||||||
# Last known working self-hosted with -fstage1, due to
|
# Last known working self-hosted with -fstage1, due to
|
||||||
# https://github.com/ziglang/zig/issues/12944
|
# https://github.com/ziglang/zig/issues/12944
|
||||||
zig = final.zigpkgs.master-2022-09-13;
|
# I ended up finding a workaround for this but I still feel
|
||||||
|
# weird about it so I'm going to keep this around in case
|
||||||
|
# we want to rollback.
|
||||||
|
#zig = final.zigpkgs.master-2022-09-13;
|
||||||
|
|
||||||
# zig we want to be the latest nightly since 0.9.0 is not released yet.
|
# zig we want to be the latest nightly since 0.9.0 is not released yet.
|
||||||
#zig = final.zigpkgs.master;
|
zig = final.zigpkgs.master;
|
||||||
|
|
||||||
# last known working stage1 build, the rest in the future are stage3
|
# last known working stage1 build, the rest in the future are stage3
|
||||||
#zig = final.zigpkgs.master-2022-08-19;
|
#zig = final.zigpkgs.master-2022-08-19;
|
||||||
|
@ -19,6 +19,9 @@ const c = switch (builtin.os.tag) {
|
|||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// https://github.com/ziglang/zig/issues/12944
|
||||||
|
const ioctl = if (builtin.os.tag == .macos) c.ioctl else std.c.ioctl;
|
||||||
|
|
||||||
/// Redeclare this winsize struct so we can just use a Zig struct. This
|
/// Redeclare this winsize struct so we can just use a Zig struct. This
|
||||||
/// layout should be correct on all tested platforms.
|
/// layout should be correct on all tested platforms.
|
||||||
const winsize = extern struct {
|
const winsize = extern struct {
|
||||||
@ -64,7 +67,7 @@ pub fn deinit(self: *Pty) void {
|
|||||||
/// Return the size of the pty.
|
/// Return the size of the pty.
|
||||||
pub fn getSize(self: Pty) !winsize {
|
pub fn getSize(self: Pty) !winsize {
|
||||||
var ws: winsize = undefined;
|
var ws: winsize = undefined;
|
||||||
if (c.ioctl(self.master, c.TIOCGWINSZ, @ptrToInt(&ws)) < 0)
|
if (ioctl(self.master, c.TIOCGWINSZ, @ptrToInt(&ws)) < 0)
|
||||||
return error.IoctlFailed;
|
return error.IoctlFailed;
|
||||||
|
|
||||||
return ws;
|
return ws;
|
||||||
@ -72,7 +75,7 @@ pub fn getSize(self: Pty) !winsize {
|
|||||||
|
|
||||||
/// Set the size of the pty.
|
/// Set the size of the pty.
|
||||||
pub fn setSize(self: Pty, size: winsize) !void {
|
pub fn setSize(self: Pty, size: winsize) !void {
|
||||||
if (c.ioctl(self.master, c.TIOCSWINSZ, @ptrToInt(&size)) < 0)
|
if (ioctl(self.master, c.TIOCSWINSZ, @ptrToInt(&size)) < 0)
|
||||||
return error.IoctlFailed;
|
return error.IoctlFailed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +86,7 @@ pub fn childPreExec(self: Pty) !void {
|
|||||||
if (setsid() < 0) return error.ProcessGroupFailed;
|
if (setsid() < 0) return error.ProcessGroupFailed;
|
||||||
|
|
||||||
// Set controlling terminal
|
// Set controlling terminal
|
||||||
if (std.c.ioctl(self.slave, c.TIOCSCTTY, @as(c_ulong, 0)) < 0)
|
if (ioctl(self.slave, c.TIOCSCTTY, @as(c_ulong, 0)) < 0)
|
||||||
return error.SetControllingTerminalFailed;
|
return error.SetControllingTerminalFailed;
|
||||||
|
|
||||||
// Can close master/slave pair now
|
// Can close master/slave pair now
|
||||||
|
Reference in New Issue
Block a user