From ae91d4ed41da98bdfa16041dbc6cd30287920120 Mon Sep 17 00:00:00 2001 From: hzlinyiyu Date: Tue, 31 Jan 2023 18:02:57 +0800 Subject: [PATCH] do some clean up --- Cargo.toml | 27 +++++++------------ crates/cargo-test-support/Cargo.toml | 2 +- crates/cargo-test-support/src/paths.rs | 2 +- crates/cargo-util/Cargo.toml | 2 +- crates/cargo-util/src/paths.rs | 5 ++-- crates/cargo-util/src/process_builder.rs | 8 +++--- crates/cargo-util/src/process_error.rs | 5 ++-- crates/cargo-util/src/read2.rs | 2 +- .../cargo-credential-wincred/Cargo.toml | 2 +- crates/home/Cargo.toml | 9 ++----- crates/home/src/lib.rs | 2 +- crates/home/src/windows.rs | 5 ++-- src/cargo/core/resolver/features.rs | 2 +- src/cargo/core/shell.rs | 19 ++++++++----- src/cargo/util/cpu.rs | 5 ++-- src/cargo/util/flock.rs | 22 ++++++++++----- src/cargo/util/job.rs | 17 +++++++----- 17 files changed, 69 insertions(+), 67 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b28e425dc..9b96a7533 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -84,25 +84,16 @@ rustc-workspace-hack = "1.0.0" [target.'cfg(windows)'.dependencies] fwdansi = "1.1.0" -[target.'cfg(windows)'.dependencies.winapi] -version = "0.3" +[target.'cfg(windows)'.dependencies.windows-sys] +version = "0.45" features = [ - "basetsd", - "handleapi", - "jobapi", - "jobapi2", - "memoryapi", - "minwindef", - "ntdef", - "ntstatus", - "processenv", - "processthreadsapi", - "psapi", - "synchapi", - "winerror", - "winbase", - "wincon", - "winnt", + "Win32_Foundation", + "Win32_Storage_FileSystem", + "Win32_System_IO", + "Win32_System_Threading", + "Win32_System_JobObjects", + "Win32_Security", + "Win32_System_SystemServices" ] [dev-dependencies] diff --git a/crates/cargo-test-support/Cargo.toml b/crates/cargo-test-support/Cargo.toml index 653c5db4d..89eb94a5e 100644 --- a/crates/cargo-test-support/Cargo.toml +++ b/crates/cargo-test-support/Cargo.toml @@ -29,7 +29,7 @@ toml_edit = { version = "0.15.0", features = ["serde", "easy", "perf"] } url = "2.2.2" [target.'cfg(windows)'.dependencies] -winapi = "0.3" +windows-sys = { version = "0.45.0", features = ["Win32_Storage_FileSystem"] } [features] deny-warnings = [] diff --git a/crates/cargo-test-support/src/paths.rs b/crates/cargo-test-support/src/paths.rs index 6925597a1..ef1fddb70 100644 --- a/crates/cargo-test-support/src/paths.rs +++ b/crates/cargo-test-support/src/paths.rs @@ -305,7 +305,7 @@ pub fn windows_reserved_names_are_allowed() -> bool { use std::ffi::OsStr; use std::os::windows::ffi::OsStrExt; use std::ptr; - use winapi::um::fileapi::GetFullPathNameW; + use windows_sys::Win32::Storage::FileSystem::GetFullPathNameW; let test_file_name: Vec<_> = OsStr::new("aux.rs").encode_wide().collect(); diff --git a/crates/cargo-util/Cargo.toml b/crates/cargo-util/Cargo.toml index ff47587b3..7c9d89df1 100644 --- a/crates/cargo-util/Cargo.toml +++ b/crates/cargo-util/Cargo.toml @@ -25,4 +25,4 @@ core-foundation = { version = "0.9.0", features = ["mac_os_10_7_support"] } [target.'cfg(windows)'.dependencies] miow = "0.5.0" -winapi = { version = "0.3.9", features = ["consoleapi", "minwindef"] } +windows-sys = { version = "0.45.0", features = ["Win32_Storage_FileSystem", "Win32_Foundation", "Win32_System_Console"] } diff --git a/crates/cargo-util/src/paths.rs b/crates/cargo-util/src/paths.rs index d0ac2a79a..69df7a209 100644 --- a/crates/cargo-util/src/paths.rs +++ b/crates/cargo-util/src/paths.rs @@ -701,8 +701,9 @@ fn exclude_from_content_indexing(path: &Path) { { use std::iter::once; use std::os::windows::prelude::OsStrExt; - use winapi::um::fileapi::{GetFileAttributesW, SetFileAttributesW}; - use winapi::um::winnt::FILE_ATTRIBUTE_NOT_CONTENT_INDEXED; + use windows_sys::Win32::Storage::FileSystem::{ + GetFileAttributesW, SetFileAttributesW, FILE_ATTRIBUTE_NOT_CONTENT_INDEXED, + }; let path: Vec = path.as_os_str().encode_wide().chain(once(0)).collect(); unsafe { diff --git a/crates/cargo-util/src/process_builder.rs b/crates/cargo-util/src/process_builder.rs index be8a5fca3..76392f256 100644 --- a/crates/cargo-util/src/process_builder.rs +++ b/crates/cargo-util/src/process_builder.rs @@ -606,10 +606,10 @@ mod imp { use super::{ProcessBuilder, ProcessError}; use anyhow::Result; use std::io; - use winapi::shared::minwindef::{BOOL, DWORD, FALSE, TRUE}; - use winapi::um::consoleapi::SetConsoleCtrlHandler; + use windows_sys::Win32::Foundation::{BOOL, FALSE, TRUE}; + use windows_sys::Win32::System::Console::SetConsoleCtrlHandler; - unsafe extern "system" fn ctrlc_handler(_: DWORD) -> BOOL { + unsafe extern "system" fn ctrlc_handler(_: u32) -> BOOL { // Do nothing; let the child process handle it. TRUE } @@ -626,7 +626,7 @@ mod imp { } pub fn command_line_too_big(err: &io::Error) -> bool { - use winapi::shared::winerror::ERROR_FILENAME_EXCED_RANGE; + use windows_sys::Win32::Foundation::ERROR_FILENAME_EXCED_RANGE; err.raw_os_error() == Some(ERROR_FILENAME_EXCED_RANGE as i32) } } diff --git a/crates/cargo-util/src/process_error.rs b/crates/cargo-util/src/process_error.rs index e8607d661..9b4a38cb5 100644 --- a/crates/cargo-util/src/process_error.rs +++ b/crates/cargo-util/src/process_error.rs @@ -140,11 +140,10 @@ pub fn exit_status_to_string(status: ExitStatus) -> String { #[cfg(windows)] fn status_to_string(status: ExitStatus) -> String { - use winapi::shared::minwindef::DWORD; - use winapi::um::winnt::*; + use windows_sys::Win32::Foundation::*; let mut base = status.to_string(); - let extra = match status.code().unwrap() as DWORD { + let extra = match status.code().unwrap() as i32 { STATUS_ACCESS_VIOLATION => "STATUS_ACCESS_VIOLATION", STATUS_IN_PAGE_ERROR => "STATUS_IN_PAGE_ERROR", STATUS_INVALID_HANDLE => "STATUS_INVALID_HANDLE", diff --git a/crates/cargo-util/src/read2.rs b/crates/cargo-util/src/read2.rs index 53322a51d..742dc1daa 100644 --- a/crates/cargo-util/src/read2.rs +++ b/crates/cargo-util/src/read2.rs @@ -84,7 +84,7 @@ mod imp { use miow::iocp::{CompletionPort, CompletionStatus}; use miow::pipe::NamedPipe; use miow::Overlapped; - use winapi::shared::winerror::ERROR_BROKEN_PIPE; + use windows_sys::Win32::Foundation::ERROR_BROKEN_PIPE; struct Pipe<'a> { dst: &'a mut Vec, diff --git a/crates/credential/cargo-credential-wincred/Cargo.toml b/crates/credential/cargo-credential-wincred/Cargo.toml index b612c26fe..d17b1afa0 100644 --- a/crates/credential/cargo-credential-wincred/Cargo.toml +++ b/crates/credential/cargo-credential-wincred/Cargo.toml @@ -8,4 +8,4 @@ description = "A Cargo credential process that stores tokens with Windows Creden [dependencies] cargo-credential = { version = "0.2.0", path = "../cargo-credential" } -winapi = { version = "0.3.9", features = ["wincred", "winerror", "impl-default"] } +windows-sys = { version = "0.45", features = [] } diff --git a/crates/home/Cargo.toml b/crates/home/Cargo.toml index 052b61932..f2797db9c 100644 --- a/crates/home/Cargo.toml +++ b/crates/home/Cargo.toml @@ -16,10 +16,5 @@ readme = "README.md" repository = "https://github.com/brson/home" description = "Shared definitions of home directories" -[target."cfg(windows)".dependencies.winapi] -version = "0.3" -features = [ - "shlobj", - "std", - "winerror", -] +[target."cfg(windows)".dependencies] +windows-sys = { version = "0.45.0", features = ["Win32_Foundation", "Win32_UI_Shell"] } diff --git a/crates/home/src/lib.rs b/crates/home/src/lib.rs index ad254ca3b..2dd22883b 100644 --- a/crates/home/src/lib.rs +++ b/crates/home/src/lib.rs @@ -30,7 +30,7 @@ pub mod env; -#[cfg(windows)] +#[cfg(target_os(windows))] mod windows; use std::io; diff --git a/crates/home/src/windows.rs b/crates/home/src/windows.rs index 4e0cd8ec5..65b5ec725 100644 --- a/crates/home/src/windows.rs +++ b/crates/home/src/windows.rs @@ -4,9 +4,8 @@ use std::os::windows::ffi::OsStringExt; use std::path::PathBuf; use std::ptr; -use winapi::shared::minwindef::MAX_PATH; -use winapi::shared::winerror::S_OK; -use winapi::um::shlobj::{SHGetFolderPathW, CSIDL_PROFILE}; +use windows_sys::Win32::Foundation::{MAX_PATH, S_OK}; +use windows_sys::Win32::UI::Shell::{SHGetFolderPathW, CSIDL_PROFILE}; pub fn home_dir_inner() -> Option { env::var_os("USERPROFILE") diff --git a/src/cargo/core/resolver/features.rs b/src/cargo/core/resolver/features.rs index e2f2bd5c5..564be0587 100644 --- a/src/cargo/core/resolver/features.rs +++ b/src/cargo/core/resolver/features.rs @@ -812,7 +812,7 @@ impl<'a, 'cfg> FeatureResolver<'a, 'cfg> { true }) .flat_map(|dep| { - // Each `dep`endency can be built for multiple targets. For one, it + // Each dependency can be built for multiple targets. For one, it // may be a library target which is built as initially configured // by `fk`. If it appears as build dependency, it must be built // for the host. diff --git a/src/cargo/core/shell.rs b/src/cargo/core/shell.rs index d1f413adb..84a16f755 100644 --- a/src/cargo/core/shell.rs +++ b/src/cargo/core/shell.rs @@ -557,12 +557,17 @@ mod imp { #[cfg(windows)] mod imp { use std::{cmp, mem, ptr}; - use winapi::um::fileapi::*; - use winapi::um::handleapi::*; - use winapi::um::processenv::*; - use winapi::um::winbase::*; - use winapi::um::wincon::*; - use winapi::um::winnt::*; + + use windows_sys::core::PCSTR; + use windows_sys::Win32::Foundation::CloseHandle; + use windows_sys::Win32::Foundation::INVALID_HANDLE_VALUE; + use windows_sys::Win32::Storage::FileSystem::{ + CreateFileA, FILE_SHARE_READ, FILE_SHARE_WRITE, OPEN_EXISTING, + }; + use windows_sys::Win32::System::Console::{ + GetConsoleScreenBufferInfo, GetStdHandle, CONSOLE_SCREEN_BUFFER_INFO, STD_ERROR_HANDLE, + }; + use windows_sys::Win32::System::SystemServices::{GENERIC_READ, GENERIC_WRITE}; pub(super) use super::{default_err_erase_line as err_erase_line, TtyWidth}; @@ -578,7 +583,7 @@ mod imp { // INVALID_HANDLE_VALUE. Use an alternate method which works // in that case as well. let h = CreateFileA( - "CONOUT$\0".as_ptr() as *const CHAR, + "CONOUT$\0".as_ptr() as PCSTR, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, ptr::null_mut(), diff --git a/src/cargo/util/cpu.rs b/src/cargo/util/cpu.rs index 3fe50d372..6ebb01b8e 100644 --- a/src/cargo/util/cpu.rs +++ b/src/cargo/util/cpu.rs @@ -190,8 +190,9 @@ mod imp { mod imp { use std::io; use std::mem; - use winapi::shared::minwindef::*; - use winapi::um::processthreadsapi::*; + + use windows_sys::Win32::Foundation::FILETIME; + use windows_sys::Win32::System::Threading::GetSystemTimes; pub struct State { idle: FILETIME, diff --git a/src/cargo/util/flock.rs b/src/cargo/util/flock.rs index 0cdd94344..295eb1e14 100644 --- a/src/cargo/util/flock.rs +++ b/src/cargo/util/flock.rs @@ -437,10 +437,11 @@ mod sys { use std::mem; use std::os::windows::io::AsRawHandle; - use winapi::shared::minwindef::DWORD; - use winapi::shared::winerror::{ERROR_INVALID_FUNCTION, ERROR_LOCK_VIOLATION}; - use winapi::um::fileapi::{LockFileEx, UnlockFile}; - use winapi::um::minwinbase::{LOCKFILE_EXCLUSIVE_LOCK, LOCKFILE_FAIL_IMMEDIATELY}; + use windows_sys::Win32::Foundation::HANDLE; + use windows_sys::Win32::Foundation::{ERROR_INVALID_FUNCTION, ERROR_LOCK_VIOLATION}; + use windows_sys::Win32::Storage::FileSystem::{ + LockFileEx, UnlockFile, LOCKFILE_EXCLUSIVE_LOCK, LOCKFILE_FAIL_IMMEDIATELY, + }; pub(super) fn lock_shared(file: &File) -> Result<()> { lock_file(file, 0) @@ -470,7 +471,7 @@ mod sys { pub(super) fn unlock(file: &File) -> Result<()> { unsafe { - let ret = UnlockFile(file.as_raw_handle(), 0, 0, !0, !0); + let ret = UnlockFile(file.as_raw_handle() as HANDLE, 0, 0, !0, !0); if ret == 0 { Err(Error::last_os_error()) } else { @@ -479,10 +480,17 @@ mod sys { } } - fn lock_file(file: &File, flags: DWORD) -> Result<()> { + fn lock_file(file: &File, flags: u32) -> Result<()> { unsafe { let mut overlapped = mem::zeroed(); - let ret = LockFileEx(file.as_raw_handle(), flags, 0, !0, !0, &mut overlapped); + let ret = LockFileEx( + file.as_raw_handle() as HANDLE, + flags, + 0, + !0, + !0, + &mut overlapped, + ); if ret == 0 { Err(Error::last_os_error()) } else { diff --git a/src/cargo/util/job.rs b/src/cargo/util/job.rs index 7a9cd1bca..1f2d11281 100644 --- a/src/cargo/util/job.rs +++ b/src/cargo/util/job.rs @@ -47,12 +47,15 @@ mod imp { use log::info; - use winapi::shared::minwindef::*; - use winapi::um::handleapi::*; - use winapi::um::jobapi2::*; - use winapi::um::processthreadsapi::*; - use winapi::um::winnt::HANDLE; - use winapi::um::winnt::*; + use windows_sys::Win32::Foundation::CloseHandle; + use windows_sys::Win32::Foundation::HANDLE; + use windows_sys::Win32::Foundation::INVALID_HANDLE_VALUE; + use windows_sys::Win32::System::JobObjects::AssignProcessToJobObject; + use windows_sys::Win32::System::JobObjects::CreateJobObjectW; + use windows_sys::Win32::System::JobObjects::JobObjectExtendedLimitInformation; + use windows_sys::Win32::System::JobObjects::SetInformationJobObject; + use windows_sys::Win32::System::JobObjects::JOBOBJECT_EXTENDED_LIMIT_INFORMATION; + use windows_sys::Win32::System::Threading::GetCurrentProcess; pub struct Setup { job: Handle, @@ -77,7 +80,7 @@ mod imp { // we're otherwise part of someone else's job object in this case. let job = CreateJobObjectW(ptr::null_mut(), ptr::null()); - if job.is_null() { + if job == INVALID_HANDLE_VALUE { return None; } let job = Handle { inner: job };