@@ -18,7 +18,8 @@ use crate::sys::{c, cvt, Align8};
1818use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
1919use crate :: thread;
2020
21- use super :: { api, to_u16s, IoResult } ;
21+ use super :: api:: { self , WinError } ;
22+ use super :: { to_u16s, IoResult } ;
2223use crate :: sys:: path:: maybe_verbatim;
2324
2425pub struct File {
@@ -130,10 +131,11 @@ impl Iterator for ReadDir {
130131let mut wfd = mem:: zeroed ( ) ;
131132loop {
132133if c:: FindNextFileW ( self . handle . 0 , & mut wfd) ==0 {
133- if api:: get_last_error ( ) . code == c:: ERROR_NO_MORE_FILES {
134- return None ;
135- } else {
136- return Some ( Err ( Error :: last_os_error ( ) ) ) ;
134+ match api:: get_last_error ( ) {
135+ WinError :: NO_MORE_FILES =>return None ,
136+ WinError { code} =>{
137+ return Some ( Err ( Error :: from_raw_os_error ( codeas i32 ) ) ) ;
138+ }
137139}
138140}
139141if let Some ( e) =DirEntry :: new ( & self . root , & wfd) {
@@ -244,8 +246,6 @@ impl OpenOptions {
244246}
245247
246248fn get_access_mode ( & self ) -> io:: Result < c:: DWORD > {
247- const ERROR_INVALID_PARAMETER : i32 =87 ;
248-
249249match ( self . read , self . write , self . append , self . access_mode ) {
250250( .., Some ( mode) ) =>Ok ( mode) ,
251251( true , false , false , None ) =>Ok ( c:: GENERIC_READ ) ,
@@ -255,23 +255,23 @@ impl OpenOptions {
255255( true , _, true , None ) =>{
256256Ok ( c:: GENERIC_READ |( c:: FILE_GENERIC_WRITE & !c:: FILE_WRITE_DATA ) )
257257}
258- ( false , false , false , None ) =>Err ( Error :: from_raw_os_error ( ERROR_INVALID_PARAMETER ) ) ,
258+ ( false , false , false , None ) =>{
259+ Err ( Error :: from_raw_os_error ( c:: ERROR_INVALID_PARAMETER as i32 ) )
260+ }
259261}
260262}
261263
262264fn get_creation_mode ( & self ) -> io:: Result < c:: DWORD > {
263- const ERROR_INVALID_PARAMETER : i32 =87 ;
264-
265265match ( self . write , self . append ) {
266266( true , false ) =>{ }
267267( false , false ) =>{
268268if self . truncate ||self . create ||self . create_new {
269- return Err ( Error :: from_raw_os_error ( ERROR_INVALID_PARAMETER ) ) ;
269+ return Err ( Error :: from_raw_os_error ( c :: ERROR_INVALID_PARAMETER as i32 ) ) ;
270270}
271271}
272272( _, true ) =>{
273273if self . truncate && !self . create_new {
274- return Err ( Error :: from_raw_os_error ( ERROR_INVALID_PARAMETER ) ) ;
274+ return Err ( Error :: from_raw_os_error ( c :: ERROR_INVALID_PARAMETER as i32 ) ) ;
275275}
276276}
277277}
@@ -315,7 +315,7 @@ impl File {
315315// Manual truncation. See #115745.
316316if opts. truncate
317317 && creation == c:: OPEN_ALWAYS
318- &&unsafe { c :: GetLastError ( ) } ==c :: ERROR_ALREADY_EXISTS
318+ &&api :: get_last_error ( ) ==WinError :: ALREADY_EXISTS
319319{
320320unsafe {
321321// This originally used `FileAllocationInfo` instead of
@@ -845,7 +845,7 @@ fn open_link_no_reparse(parent: &File, name: &[u16], access: u32) -> io::Result<
845845// We make a special exception for `STATUS_DELETE_PENDING` because
846846// otherwise this will be mapped to `ERROR_ACCESS_DENIED` which is
847847// very unhelpful.
848- Err ( io:: Error :: from_raw_os_error ( c:: ERROR_DELETE_PENDING as _ ) )
848+ Err ( io:: Error :: from_raw_os_error ( c:: ERROR_DELETE_PENDING as i32 ) )
849849} else if status == c:: STATUS_INVALID_PARAMETER
850850 &&ATTRIBUTES . load ( Ordering :: Relaxed ) == c:: OBJ_DONT_REPARSE
851851{
@@ -1097,7 +1097,7 @@ pub fn readdir(p: &Path) -> io::Result<ReadDir> {
10971097//
10981098// See issue #120040: https://github.com/rust-lang/rust/issues/120040.
10991099let last_error = api:: get_last_error ( ) ;
1100- if last_error. code ==c :: ERROR_FILE_NOT_FOUND {
1100+ if last_error ==WinError :: FILE_NOT_FOUND {
11011101return Ok ( ReadDir {
11021102handle : FindNextFileHandle ( find_handle) ,
11031103root : Arc :: new ( root) ,