@@ -60,22 +60,29 @@ impl Error {
6060    } 
6161} 
6262
63- #[ cfg( any( unix,  target_os = "redox" ) ) ]  
64- fn  os_err_desc ( errno :  i32 ,  buf :  & mut  [ u8 ] )  -> Option < & str >  { 
65-     let  buf_ptr = buf. as_mut_ptr ( )  as  * mut  libc:: c_char ; 
66-     if  unsafe  {  libc:: strerror_r ( errno,  buf_ptr,  buf. len ( ) )  }  != 0  { 
67-         return  None ; 
68-     } 
69- 
70-     // Take up to trailing null byte 
71-     let  n = buf. len ( ) ; 
72-     let  idx = buf. iter ( ) . position ( |& b| b == 0 ) . unwrap_or ( n) ; 
73-     core:: str:: from_utf8 ( & buf[ ..idx] ) . ok ( ) 
74- } 
63+ cfg_if !  { 
64+     if  #[ cfg( unix) ]  { 
65+         fn  os_err_desc( errno:  i32 ,  buf:  & mut  [ u8 ] )  -> Option <& str > { 
66+             let  buf_ptr = buf. as_mut_ptr( )  as  * mut  libc:: c_char; 
67+             if  unsafe  {  libc:: strerror_r( errno,  buf_ptr,  buf. len( ) )  }  != 0  { 
68+                 return  None ; 
69+             } 
7570
76- #[ cfg( not( any( unix,  target_os = "redox" ) ) ) ]  
77- fn  os_err_desc ( _errno :  i32 ,  _buf :  & mut  [ u8 ] )  -> Option < & str >  { 
78-     None 
71+             // Take up to trailing null byte 
72+             let  n = buf. len( ) ; 
73+             let  idx = buf. iter( ) . position( |& b| b == 0 ) . unwrap_or( n) ; 
74+             core:: str :: from_utf8( & buf[ ..idx] ) . ok( ) 
75+         } 
76+     }  else if  #[ cfg( target_os = "wasi" ) ]  { 
77+         fn  os_err_desc( errno:  i32 ,  _buf:  & mut  [ u8 ] )  -> Option <& str > { 
78+             core:: num:: NonZeroU16 :: new( errno as  u16 ) 
79+                 . and_then( wasi:: wasi_unstable:: error_str) 
80+         } 
81+     }  else { 
82+         fn  os_err_desc( _errno:  i32 ,  _buf:  & mut  [ u8 ] )  -> Option <& str > { 
83+             None 
84+         } 
85+     } 
7986} 
8087
8188impl  fmt:: Debug  for  Error  { 
0 commit comments