Something went wrong. Try again.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899const std = @import("std");const options = @import("build_options");const builtin = @import("builtin");const comlink = @import("comlink.zig");const vaxis = @import("vaxis");const ziglua = @import("ziglua");
const Lua = ziglua.Lua;
const log = std.log.scoped(.main);
pub const panic = vaxis.panic_handler;
pub const version = options.version;
/// Called after receiving a terminating signalfn cleanUp(sig: c_int) callconv(.C) void { if (vaxis.tty.global_tty) |gty| { const reset: []const u8 = vaxis.ctlseqs.csi_u_pop ++ vaxis.ctlseqs.mouse_reset ++ vaxis.ctlseqs.bp_reset ++ vaxis.ctlseqs.rmcup;
gty.anyWriter().writeAll(reset) catch {};
gty.deinit(); } if (sig < 255 and sig >= 0) std.process.exit(@as(u8, @intCast(sig))) else std.process.exit(1);}
pub fn main() !void { var debug_allocator: std.heap.DebugAllocator(.{}) = .init; const gpa, const is_debug = gpa: { break :gpa switch (builtin.mode) { .Debug, .ReleaseSafe => .{ debug_allocator.allocator(), true }, .ReleaseFast, .ReleaseSmall => .{ std.heap.smp_allocator, false }, }; }; defer if (is_debug) { _ = debug_allocator.deinit(); };
var args = try std.process.argsWithAllocator(gpa); while (args.next()) |arg| { if (argMatch("-v", "--version", arg)) { const stdout = std.io.getStdOut(); try stdout.writer().print("comlink {s}\n", .{version}); return; } }
// Handle termination signals switch (builtin.os.tag) { .windows => {}, else => { var action: std.posix.Sigaction = .{ .handler = .{ .handler = cleanUp }, .mask = switch (builtin.os.tag) { .macos => 0, else => std.posix.empty_sigset, }, .flags = 0, }; std.posix.sigaction(std.posix.SIG.INT, &action, null); std.posix.sigaction(std.posix.SIG.TERM, &action, null); }, }
comlink.Command.user_commands = std.StringHashMap(i32).init(gpa); defer comlink.Command.user_commands.deinit();
var app = try vaxis.vxfw.App.init(gpa); defer app.deinit();
var comlink_app: comlink.App = undefined; try comlink_app.init(gpa, &app.vx.unicode); defer comlink_app.deinit();
try app.run(comlink_app.widget(), .{});}
fn argMatch(maybe_short: ?[]const u8, maybe_long: ?[]const u8, arg: [:0]const u8) bool { if (maybe_short) |short| { if (std.mem.eql(u8, short, arg)) return true; } if (maybe_long) |long| { if (std.mem.eql(u8, long, arg)) return true; } return false;}
test { _ = @import("format.zig"); _ = @import("irc.zig");}