From 28382b249535e964ce983fe5a0821a898a077775 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 28 Feb 2026 17:35:40 +0100 Subject: multi file for both sides --- src/bin/client/platform.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/bin/client/platform.rs (limited to 'src/bin/client/platform.rs') diff --git a/src/bin/client/platform.rs b/src/bin/client/platform.rs new file mode 100644 index 0000000..1a6d71b --- /dev/null +++ b/src/bin/client/platform.rs @@ -0,0 +1,28 @@ +#[cfg(windows)] +pub mod win { + use std::io; + use std::os::windows::io::AsRawHandle; + use winapi::um::consoleapi::GetConsoleMode; + use winapi::um::consoleapi::SetConsoleMode; + use winapi::um::wincon::ENABLE_VIRTUAL_TERMINAL_PROCESSING; + use winapi::um::winbase::STD_OUTPUT_HANDLE; + use winapi::um::processenv::GetStdHandle; + use winapi::shared::minwindef::DWORD; + + pub fn enable_vt() -> io::Result<()> { + unsafe { + let h = GetStdHandle(STD_OUTPUT_HANDLE); + if h.is_null() { return Err(io::Error::last_os_error()); } + + let mut mode: DWORD = 0; + if GetConsoleMode(h, &mut mode) == 0 { + return Err(io::Error::last_os_error()); + } + let new = mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if SetConsoleMode(h, new) == 0 { + return Err(io::Error::last_os_error()); + } + Ok(()) + } + } +} -- cgit v1.2.3