Compare commits
3 commits
a1f296ddde
...
ab3373ab33
| Author | SHA1 | Date | |
|---|---|---|---|
| ab3373ab33 | |||
| b3efc952ee | |||
| f91a702f36 |
3 changed files with 44 additions and 2 deletions
|
|
@ -30,7 +30,7 @@
|
|||
.hash = "fuzzig-0.1.1-Ji0xivxIAQBD0g8O_NV_0foqoPf3elsg9Sc3pNfdVH4D",
|
||||
},
|
||||
.vaxis = .{
|
||||
.url = "git+https://github.com/neurocyte/libvaxis?ref=main#e9c1111efd98aeb7c2db45d3e31987429fb5f26d",
|
||||
.url = "git+https://github.com/neurocyte/libvaxis?ref=main#78aff0865f0f6206ece9263dcd9b051352da1e82",
|
||||
.hash = "vaxis-0.5.1-BWNV_BkyCQAo2UBeY_gbzP09d4pHDaqtg44snF5k3mh2",
|
||||
},
|
||||
.zeit = .{
|
||||
|
|
|
|||
35
src/main.zig
35
src/main.zig
|
|
@ -1119,6 +1119,7 @@ fn resolve_executable(executable: [:0]const u8) [:0]const u8 {
|
|||
}
|
||||
|
||||
fn restart() noreturn {
|
||||
if (builtin.os.tag == .windows) return restart_win32();
|
||||
const executable = resolve_executable(std.mem.span(std.os.argv[0]));
|
||||
const argv = [_]?[*:0]const u8{
|
||||
executable,
|
||||
|
|
@ -1143,6 +1144,40 @@ fn restart_with_sudo() noreturn {
|
|||
restart_failed(ret);
|
||||
}
|
||||
|
||||
fn restart_win32() noreturn {
|
||||
if (!build_options.gui) return restart_manual();
|
||||
const executable = resolve_executable(std.mem.span(std.os.argv[0]));
|
||||
const argv = [_][]const u8{
|
||||
executable,
|
||||
"--restore-session",
|
||||
};
|
||||
const a = std.heap.c_allocator;
|
||||
var child = std.process.Child.init(&argv, a);
|
||||
child.stdin_behavior = .Inherit;
|
||||
child.stdout_behavior = .Inherit;
|
||||
child.stderr_behavior = .Inherit;
|
||||
child.spawn() catch {
|
||||
std.os.windows.kernel32.ExitProcess(1);
|
||||
};
|
||||
std.os.windows.kernel32.ExitProcess(0);
|
||||
}
|
||||
|
||||
fn restart_manual() noreturn {
|
||||
const executable = resolve_executable(std.mem.span(std.os.argv[0]));
|
||||
var stderr_buffer: [1024]u8 = undefined;
|
||||
var stderr_writer = std.fs.File.stderr().writer(&stderr_buffer);
|
||||
stderr_writer.interface.print(
|
||||
\\
|
||||
\\ Manual restart required. Run:
|
||||
\\ > {s} --restore-session
|
||||
\\ to restart now.
|
||||
\\
|
||||
\\
|
||||
, .{executable}) catch {};
|
||||
stderr_writer.interface.flush() catch {};
|
||||
exit(234);
|
||||
}
|
||||
|
||||
fn restart_failed(ret: c_int) noreturn {
|
||||
var stderr_buffer: [1024]u8 = undefined;
|
||||
var stderr_writer = std.fs.File.stderr().writer(&stderr_buffer);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
const std = @import("std");
|
||||
const root = @import("root");
|
||||
const cbor = @import("cbor");
|
||||
const log = @import("log");
|
||||
const Style = @import("theme").Style;
|
||||
|
|
@ -80,7 +81,13 @@ pub fn init(allocator: std.mem.Allocator, handler_ctx: *anyopaque, no_alternate:
|
|||
const tty_buffer = try allocator.alloc(u8, 4096);
|
||||
return .{
|
||||
.allocator = allocator,
|
||||
.tty = vaxis.Tty.init(tty_buffer) catch return error.TtyInitError,
|
||||
.tty = vaxis.Tty.init(tty_buffer) catch |e| {
|
||||
var stderr_buffer: [1024]u8 = undefined;
|
||||
var stderr_writer = std.fs.File.stderr().writer(&stderr_buffer);
|
||||
stderr_writer.interface.print("\n" ++ root.application_name ++ " ERROR: {s}\n", .{@errorName(e)}) catch {};
|
||||
stderr_writer.interface.flush() catch {};
|
||||
return error.TtyInitError;
|
||||
},
|
||||
.tty_buffer = tty_buffer,
|
||||
.vx = try vaxis.init(allocator, opts),
|
||||
.no_alternate = no_alternate,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue