From 1354a38afd7c7183e4e7f5f17bef7fccfc4d2a06 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Tue, 28 Mar 2023 10:49:35 +0900 Subject: [PATCH 1/2] Document the heuristics IsTerminal uses on Windows --- library/std/src/io/stdio.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/std/src/io/stdio.rs b/library/std/src/io/stdio.rs index 0455a00956e6f..7c1bf488a2106 100644 --- a/library/std/src/io/stdio.rs +++ b/library/std/src/io/stdio.rs @@ -1054,6 +1054,10 @@ pub trait IsTerminal: crate::sealed::Sealed { /// On platforms where Rust does not know how to detect a terminal yet, this will return /// `false`. This will also return `false` if an unexpected error occurred, such as from /// passing an invalid file descriptor. + /// + /// On Windows, in addition to detecting consoles, this currently uses some heuristics to + /// detect older msys/cygwin/mingw pseudo-terminals based on device name: devices with names + /// starting with `msys-` or `cygwin-` and ending in `-pty` will be considered terminals. fn is_terminal(&self) -> bool; } From b38732f25c326659e860a0fac81775bd07932223 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Tue, 28 Mar 2023 11:26:43 +0900 Subject: [PATCH 2/2] Add "Platform-specific behavior" heading and link to changes disclaimer --- library/std/src/io/stdio.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/std/src/io/stdio.rs b/library/std/src/io/stdio.rs index 7c1bf488a2106..1a3200a5c62b8 100644 --- a/library/std/src/io/stdio.rs +++ b/library/std/src/io/stdio.rs @@ -1055,9 +1055,14 @@ pub trait IsTerminal: crate::sealed::Sealed { /// `false`. This will also return `false` if an unexpected error occurred, such as from /// passing an invalid file descriptor. /// + /// # Platform-specific behavior + /// /// On Windows, in addition to detecting consoles, this currently uses some heuristics to /// detect older msys/cygwin/mingw pseudo-terminals based on device name: devices with names /// starting with `msys-` or `cygwin-` and ending in `-pty` will be considered terminals. + /// Note that this [may change in the future][changes]. + /// + /// [changes]: io#platform-specific-behavior fn is_terminal(&self) -> bool; }