Skip to content

Commit 8ea9c43

Browse files
committed
fix getting stdout/stderr on windows
having a global stdout/stderr is not supported on Windows
1 parent 8366744 commit 8ea9c43

File tree

2 files changed

+35
-31
lines changed

2 files changed

+35
-31
lines changed

src/logger.zig

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,43 @@
11
const std = @import("std");
22

3-
var stdout_buf: [64]u8 = undefined;
4-
var stdout_writer = std.fs.File.stdout().writer(&stdout_buf);
5-
const stdout = &stdout_writer.interface;
6-
7-
var stderr_buf: [64]u8 = undefined;
8-
var stderr_writer = std.fs.File.stderr().writer(&stderr_buf);
9-
const stderr = &stderr_writer.interface;
10-
113
pub fn query(comptime message: []const u8, args: anytype) void {
12-
stdout.print("[?] " ++ message, args) catch {};
13-
stdout.flush() catch {};
4+
printToStdout("[?] " ++ message, args);
145
}
156

167
pub fn log_stderr(comptime message: []const u8, args: anytype) void {
17-
stderr.print("[l] " ++ message ++ "\n", args) catch {};
18-
stderr.flush() catch {};
8+
printToStderr("[l] " ++ message ++ "\n", args);
199
}
2010

2111
pub fn info(comptime message: []const u8, args: anytype) void {
22-
stdout.print("[i] " ++ message ++ "\n", args) catch {};
23-
stdout.flush() catch {};
12+
printToStdout("[i] " ++ message ++ "\n", args);
2413
}
2514

2615
pub fn warn(comptime message: []const u8, args: anytype) void {
27-
stderr.print("[w] " ++ message ++ "\n", args) catch {};
28-
stderr.flush() catch {};
16+
printToStderr("[w] " ++ message ++ "\n", args);
2917
}
3018

3119
pub fn err(comptime message: []const u8, args: anytype) void {
32-
stderr.print("[!] " ++ message ++ "\n", args) catch {};
33-
stderr.flush() catch {};
20+
printToStderr("[!] " ++ message ++ "\n", args);
3421
}
3522

3623
pub fn crit(comptime message: []const u8, args: anytype) void {
37-
stderr.print("[!!] " ++ message ++ "\n", args) catch {};
24+
printToStderr("[!!] " ++ message ++ "\n", args);
25+
}
26+
27+
fn printToStdout(comptime message: []const u8, args: anytype) void {
28+
var stdout_buf: [64]u8 = undefined;
29+
var stdout_writer = std.fs.File.stdout().writer(&stdout_buf);
30+
const stdout = &stdout_writer.interface;
31+
32+
stdout.print(message, args) catch {};
33+
stdout.flush() catch {};
34+
}
35+
36+
fn printToStderr(comptime message: []const u8, args: anytype) void {
37+
var stderr_buf: [64]u8 = undefined;
38+
var stderr_writer = std.fs.File.stderr().writer(&stderr_buf);
39+
const stderr = &stderr_writer.interface;
40+
41+
stderr.print(message, args) catch {};
3842
stderr.flush() catch {};
3943
}

src/maintenance.zig

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ const wrapper = @import("wrapper.zig");
77

88
const MetaStruct = metadata.MetaStruct;
99

10-
var stdout_buf: [64]u8 = undefined;
11-
var stdout_writer = std.fs.File.stdout().writer(&stdout_buf);
12-
const stdout = &stdout_writer.interface;
13-
1410
pub fn do_maint(args: [][:0]u8, install_dir: []const u8) !void {
11+
var stdout_buf: [64]u8 = undefined;
12+
var stdout_writer = std.fs.File.stdout().writer(&stdout_buf);
13+
const stdout = &stdout_writer.interface;
14+
1515
if (args.len < 1) {
1616
logger.warn("No sub-command provided!", .{});
1717
} else {
@@ -20,11 +20,11 @@ pub fn do_maint(args: [][:0]u8, install_dir: []const u8) !void {
2020
}
2121

2222
if (std.mem.eql(u8, args[0], "directory")) {
23-
try print_install_dir(install_dir);
23+
try print_install_dir(stdout, install_dir);
2424
}
2525

2626
if (std.mem.eql(u8, args[0], "meta")) {
27-
try print_metadata();
27+
try print_metadata(stdout);
2828
}
2929
}
3030
}
@@ -62,14 +62,14 @@ fn do_uninstall(install_dir: []const u8) !void {
6262
logger.info("Quitting.", .{});
6363
}
6464

65-
fn print_metadata() !void {
66-
try stdout.print("{s}", .{wrapper.RELEASE_METADATA_JSON});
67-
try stdout.flush();
65+
fn print_metadata(out: *std.Io.Writer) !void {
66+
try out.print("{s}", .{wrapper.RELEASE_METADATA_JSON});
67+
try out.flush();
6868
}
6969

70-
fn print_install_dir(install_dir: []const u8) !void {
71-
try stdout.print("{s}\n", .{install_dir});
72-
try stdout.flush();
70+
fn print_install_dir(out: *std.Io.Writer, install_dir: []const u8) !void {
71+
try out.print("{s}\n", .{install_dir});
72+
try out.flush();
7373
}
7474

7575
pub fn do_clean_old_versions(install_prefix_path: []const u8, current_install_path: []const u8) !void {

0 commit comments

Comments
 (0)