diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-12-19 09:59:05 -0800 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-12-23 22:15:10 -0800 |
| commit | 2f30b0f44d5dbdb80362f181f35504965db733f9 (patch) | |
| tree | 7120cbf715bd14ea0ca4f7a87be06dee8250e612 /lib/std | |
| parent | 406950f7566f7f220847ab2faa2c26914dcda257 (diff) | |
| download | zig-2f30b0f44d5dbdb80362f181f35504965db733f9.tar.gz zig-2f30b0f44d5dbdb80362f181f35504965db733f9.zip | |
std.Progress.start: handle cancelation from isTty
It's important not to swallow error.Canceled. We don't have recancel()
yet but that will be a way to "rearm" cancelation after handling it so
that it is not ignored.
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/Progress.zig | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig index 54b52d48af..8bd120dbd1 100644 --- a/lib/std/Progress.zig +++ b/lib/std/Progress.zig @@ -497,10 +497,17 @@ pub fn start(io: Io, options: Options) Node { global_progress.terminal = stderr; if (stderr.enableAnsiEscapeCodes(io)) |_| { global_progress.terminal_mode = .ansi_escape_codes; - } else |_| if (is_windows and stderr.isTty(io)) { - global_progress.terminal_mode = TerminalMode{ .windows_api = .{ - .code_page = windows.kernel32.GetConsoleOutputCP(), - } }; + } else |_| if (is_windows) { + if (stderr.isTty(io)) { + global_progress.terminal_mode = TerminalMode{ .windows_api = .{ + .code_page = windows.kernel32.GetConsoleOutputCP(), + } }; + } else |err| switch (err) { + error.Canceled => { + // TODO: recancel here, or block cancelation for this function + return Node.none; + }, + } } if (global_progress.terminal_mode == .off) { |
