diff --git a/Cargo.lock b/Cargo.lock index fdcb463e..958753d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2640,7 +2640,7 @@ dependencies = [ "memchr", "ntapi", "objc2-core-foundation", - "windows", + "windows 0.56.0", ] [[package]] @@ -2661,7 +2661,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f89f5fb70d6f62381f5d9b2ba9008196150b40b75f3068eb24faeddf1c686871" dependencies = [ "quick-xml 0.31.0", - "windows", + "windows 0.56.0", "windows-version", ] @@ -2918,7 +2918,7 @@ dependencies = [ "walkdir", "which", "wildmatch", - "winapi", + "windows 0.62.0", ] [[package]] @@ -3301,6 +3301,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9579d0e6970fd5250aa29aba5994052385ff55cf7b28a059e484bb79ea842e42" +dependencies = [ + "windows-collections", + "windows-core 0.62.0", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90dd7a7b86859ec4cdf864658b311545ef19dbcf17a672b52ab7cefe80c336f" +dependencies = [ + "windows-core 0.62.0", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -3316,12 +3338,36 @@ version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", + "windows-implement 0.56.0", + "windows-interface 0.56.0", + "windows-result 0.1.2", "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" +dependencies = [ + "windows-implement 0.60.0", + "windows-interface 0.59.1", + "windows-link", + "windows-result 0.4.0", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2194dee901458cb79e1148a4e9aac2b164cc95fa431891e7b296ff0b2f1d8a6" +dependencies = [ + "windows-core 0.62.0", + "windows-link", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.56.0" @@ -3333,6 +3379,17 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.99", +] + [[package]] name = "windows-interface" version = "0.56.0" @@ -3344,6 +3401,33 @@ dependencies = [ "syn 2.0.99", ] +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.99", +] + +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + +[[package]] +name = "windows-numerics" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce3498fe0aba81e62e477408383196b4b0363db5e0c27646f932676283b43d8" +dependencies = [ + "windows-core 0.62.0", + "windows-link", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -3353,6 +3437,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -3411,6 +3513,15 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-threading" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab47f085ad6932defa48855254c758cdd0e2f2d48e62a34118a268d8f345e118" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-version" version = "0.1.1" diff --git a/Cargo.toml b/Cargo.toml index d5bd7a81..58f3b41f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,7 +81,7 @@ self_update_crate = { version = "~0.40", default-features = false, optional = tr is_elevated = "~0.1" parselnk = "~0.1" self_update_crate = { version = "~0.40", default-features = false, optional = true, package = "self_update", features = ["archive-zip", "compression-zip-deflate", "rustls"] } -winapi = { version = "~0.3", features = ["consoleapi", "wincon"] } +windows = { version = "~0.62", features = ["Win32_System_Console"] } [profile.release] lto = true diff --git a/src/ctrlc/windows.rs b/src/ctrlc/windows.rs index 5519cfb0..d7ee08f2 100644 --- a/src/ctrlc/windows.rs +++ b/src/ctrlc/windows.rs @@ -1,22 +1,21 @@ //! A stub for Ctrl + C handling. use crate::ctrlc::interrupted::set_interrupted; use tracing::error; -use winapi::shared::minwindef::{BOOL, DWORD, FALSE, TRUE}; -use winapi::um::consoleapi::SetConsoleCtrlHandler; -use winapi::um::wincon::CTRL_C_EVENT; +use windows::core::BOOL; +use windows::Win32::System::Console::{SetConsoleCtrlHandler, CTRL_C_EVENT}; -extern "system" fn handler(ctrl_type: DWORD) -> BOOL { +extern "system" fn handler(ctrl_type: u32) -> BOOL { match ctrl_type { CTRL_C_EVENT => { set_interrupted(); - TRUE + true.into() } - _ => FALSE, + _ => false.into(), } } pub fn set_handler() { - if 0 == unsafe { SetConsoleCtrlHandler(Some(handler), TRUE) } { - error!("Cannot set a control C handler") + if let Err(e) = unsafe { SetConsoleCtrlHandler(Some(handler), true) } { + error!("Cannot set a control C handler: {e}") } }