aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2025-12-19 09:59:05 -0800
committerAndrew Kelley <andrew@ziglang.org>2025-12-23 22:15:10 -0800
commit2f30b0f44d5dbdb80362f181f35504965db733f9 (patch)
tree7120cbf715bd14ea0ca4f7a87be06dee8250e612 /lib/std
parent406950f7566f7f220847ab2faa2c26914dcda257 (diff)
downloadzig-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.zig15
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) {