diff --git a/src/main.zig b/src/main.zig index 085510a..b8c7012 100644 --- a/src/main.zig +++ b/src/main.zig @@ -237,7 +237,7 @@ pub fn main() anyerror!void { var final_exit_status: u8 = 0; var want_restart: bool = false; -fn print_exit_status(_: void, msg: []const u8) void { +pub fn print_exit_status(_: void, msg: []const u8) void { if (std.mem.eql(u8, msg, "normal")) { return; } else if (std.mem.eql(u8, msg, "restart")) { @@ -314,7 +314,7 @@ fn trace_to_file(m: thespian.message.c_buffer_type) callconv(.C) void { buffer.flush() catch {}; } -fn exit(status: u8) noreturn { +pub fn exit(status: u8) noreturn { if (builtin.os.tag == .linux) { // drain stdin so we don't leave junk at the next prompt _ = std.os.linux.syscall3(.ioctl, @as(usize, @bitCast(@as(isize, std.posix.STDIN_FILENO))), std.os.linux.T.CFLSH, 0); diff --git a/src/tui/tui.zig b/src/tui/tui.zig index 1e2481f..cf7eb97 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -514,6 +514,12 @@ const cmds = struct { try tp.self_pid().send("restart"); } + pub fn force_terminate(self: *Self, _: Ctx) Result { + self.deinit(); + root.print_exit_status({}, "FORCE TERMINATE"); + root.exit(99); + } + pub fn theme_next(self: *Self, _: Ctx) Result { self.theme = get_next_theme_by_name(self.theme.name); self.config.theme = self.theme.name;