summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Boesch <chrboesch@noreply.codeberg.org>2026-02-08 21:41:30 +0100
committerChris Boesch <chrboesch@noreply.codeberg.org>2026-02-08 21:41:30 +0100
commit3ecaa34271da0c0c41926ff604f9419e0b492bb3 (patch)
treeafea80c45aba449151bbd137776102b754b703dd
parent7d4162e3881ef558b2c65db9e55d4c25073f9928 (diff)
parentdf3f2df50b2ec703fefe2a712312a7096859b669 (diff)
Merge pull request 'use Io interface for enabling ansi escape codes' (#361) from sno2/exercises:main into main
Reviewed-on: https://codeberg.org/ziglings/exercises/pulls/361
-rw-r--r--build.zig20
1 files changed, 5 insertions, 15 deletions
diff --git a/build.zig b/build.zig
index 8a64333..0ad2a1e 100644
--- a/build.zig
+++ b/build.zig
@@ -128,23 +128,13 @@ pub fn build(b: *Build) !void {
if (!validate_exercises()) std.process.exit(2);
use_color_escapes = false;
- if (try std.Io.File.stderr().supportsAnsiEscapeCodes(io)) {
+ const stderr = std.Io.File.stderr();
+ if (try stderr.supportsAnsiEscapeCodes(io)) {
use_color_escapes = true;
} else if (builtin.os.tag == .windows) {
- const w32 = struct {
- const DWORD = std.os.windows.DWORD;
- const ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004;
- const STD_ERROR_HANDLE: DWORD = @bitCast(@as(i32, -12));
- const GetStdHandle = std.os.windows.kernel32.GetStdHandle;
- const GetConsoleMode = std.os.windows.kernel32.GetConsoleMode;
- const SetConsoleMode = std.os.windows.kernel32.SetConsoleMode;
- };
- const handle = w32.GetStdHandle(w32.STD_ERROR_HANDLE).?;
- var mode: w32.DWORD = 0;
- if (w32.GetConsoleMode(handle, &mode) != 0) {
- mode |= w32.ENABLE_VIRTUAL_TERMINAL_PROCESSING;
- use_color_escapes = w32.SetConsoleMode(handle, mode) != 0;
- }
+ if (stderr.enableAnsiEscapeCodes(io)) {
+ use_color_escapes = true;
+ } else |_| {}
}
if (use_color_escapes) {