@@ -427,14 +427,8 @@ pub(crate) mod module {
427
427
#[ pyfunction]
428
428
fn listvolumes ( vm : & VirtualMachine ) -> PyResult < PyListRef > {
429
429
let mut volumes = vec ! [ ] ;
430
- let find;
431
430
let mut buffer = [ 0u16 ; 257 ] ;
432
- find = unsafe {
433
- FileSystem :: FindFirstVolumeW (
434
- buffer. as_mut_ptr ( ) ,
435
- buffer. len ( ) as _ ,
436
- )
437
- } ;
431
+ let find = unsafe { FileSystem :: FindFirstVolumeW ( buffer. as_mut_ptr ( ) , buffer. len ( ) as _ ) } ;
438
432
if find == windows_sys:: Win32 :: Foundation :: INVALID_HANDLE_VALUE {
439
433
return Err ( errno_err ( vm) ) ;
440
434
}
@@ -447,11 +441,7 @@ pub(crate) mod module {
447
441
}
448
442
volumes. push ( s. to_string ( ) ) ;
449
443
let ret = unsafe {
450
- FileSystem :: FindNextVolumeW (
451
- find,
452
- buffer. as_mut_ptr ( ) ,
453
- buffer. len ( ) as _ ,
454
- )
444
+ FileSystem :: FindNextVolumeW ( find, buffer. as_mut_ptr ( ) , buffer. len ( ) as _ )
455
445
} ;
456
446
if ret == 0 {
457
447
err = std:: io:: Error :: last_os_error ( ) . raw_os_error ( ) . unwrap_or ( 0 ) ;
@@ -463,10 +453,7 @@ pub(crate) mod module {
463
453
if err != 0 && err != windows_sys:: Win32 :: Foundation :: ERROR_NO_MORE_FILES as i32 {
464
454
return Err ( std:: io:: Error :: from_raw_os_error ( err) . to_pyexception ( vm) ) ;
465
455
}
466
- let volumes: Vec < _ > = volumes
467
- . into_iter ( )
468
- . map ( |v| vm. new_pyobj ( v) )
469
- . collect ( ) ;
456
+ let volumes: Vec < _ > = volumes. into_iter ( ) . map ( |v| vm. new_pyobj ( v) ) . collect ( ) ;
470
457
Ok ( vm. ctx . new_list ( volumes) )
471
458
}
472
459
@@ -481,8 +468,16 @@ pub(crate) mod module {
481
468
if path. is_dir ( ) {
482
469
return Ok ( false ) ;
483
470
}
484
- let metadata = fs:: metadata ( path) . map_err ( |err| err. to_pyexception ( vm) ) ?;
485
- Ok ( metadata. is_file ( ) )
471
+ let metadata = fs:: metadata ( path) ;
472
+ match metadata {
473
+ Ok ( meta) => Ok ( meta. is_file ( ) ) ,
474
+ Err ( err) => {
475
+ if err. kind ( ) == io:: ErrorKind :: NotFound {
476
+ return Ok ( false ) ;
477
+ }
478
+ Err ( err. to_pyexception ( vm) )
479
+ }
480
+ }
486
481
}
487
482
488
483
#[ pyfunction]
@@ -494,8 +489,16 @@ pub(crate) mod module {
494
489
if path. exists ( ) {
495
490
return Ok ( false ) ;
496
491
}
497
- let metadata = fs:: metadata ( path) . map_err ( |err| err. to_pyexception ( vm) ) ?;
498
- Ok ( metadata. is_dir ( ) )
492
+ let metadata = fs:: metadata ( path) ;
493
+ match metadata {
494
+ Ok ( meta) => Ok ( meta. is_dir ( ) ) ,
495
+ Err ( err) => {
496
+ if err. kind ( ) == io:: ErrorKind :: NotFound {
497
+ return Ok ( false ) ;
498
+ }
499
+ Err ( err. to_pyexception ( vm) )
500
+ }
501
+ }
499
502
}
500
503
501
504
#[ pyfunction]
@@ -507,8 +510,16 @@ pub(crate) mod module {
507
510
if path. exists ( ) {
508
511
return Ok ( false ) ;
509
512
}
510
- let metadata = fs:: metadata ( path) . map_err ( |err| err. to_pyexception ( vm) ) ?;
511
- Ok ( metadata. is_file ( ) )
513
+ let metadata = fs:: metadata ( path) ;
514
+ match metadata {
515
+ Ok ( meta) => Ok ( meta. is_file ( ) ) ,
516
+ Err ( err) => {
517
+ if err. kind ( ) == io:: ErrorKind :: NotFound {
518
+ return Ok ( false ) ;
519
+ }
520
+ Err ( err. to_pyexception ( vm) )
521
+ }
522
+ }
512
523
}
513
524
514
525
#[ pyfunction]
@@ -520,8 +531,16 @@ pub(crate) mod module {
520
531
if path. exists ( ) {
521
532
return Ok ( false ) ;
522
533
}
523
- let metadata = fs:: symlink_metadata ( path) . map_err ( |err| err. to_pyexception ( vm) ) ?;
524
- Ok ( metadata. file_type ( ) . is_symlink ( ) )
534
+ let metadata = fs:: symlink_metadata ( path) ;
535
+ match metadata {
536
+ Ok ( meta) => Ok ( meta. file_type ( ) . is_symlink ( ) ) ,
537
+ Err ( err) => {
538
+ if err. kind ( ) == io:: ErrorKind :: NotFound {
539
+ return Ok ( false ) ;
540
+ }
541
+ Err ( err. to_pyexception ( vm) )
542
+ }
543
+ }
525
544
}
526
545
527
546
// End of functions that are not fully compatible with CPython
0 commit comments