@@ -5,10 +5,11 @@ use super::err2io;
55use  crate :: io:: { self ,  IoSlice ,  IoSliceMut ,  SeekFrom } ; 
66use  crate :: mem; 
77use  crate :: net:: Shutdown ; 
8+ use  crate :: os:: raw:: c_int; 
89
910#[ derive( Debug ) ]  
1011pub  struct  WasiFd  { 
11-     fd :  wasi :: Fd , 
12+     fd :  c_int , 
1213} 
1314
1415fn  iovec < ' a > ( a :  & ' a  mut  [ IoSliceMut < ' _ > ] )  -> & ' a  [ wasi:: Iovec ]  { 
@@ -26,38 +27,38 @@ fn ciovec<'a>(a: &'a [IoSlice<'_>]) -> &'a [wasi::Ciovec] {
2627} 
2728
2829impl  WasiFd  { 
29-     pub  unsafe  fn  from_raw ( fd :  wasi :: Fd )  -> WasiFd  { 
30+     pub  unsafe  fn  from_raw ( fd :  c_int )  -> WasiFd  { 
3031        WasiFd  {  fd } 
3132    } 
3233
33-     pub  fn  into_raw ( self )  -> wasi :: Fd  { 
34+     pub  fn  into_raw ( self )  -> c_int  { 
3435        let  ret = self . fd ; 
3536        mem:: forget ( self ) ; 
3637        ret
3738    } 
3839
39-     pub  fn  as_raw ( & self )  -> wasi :: Fd  { 
40+     pub  fn  as_raw ( & self )  -> c_int  { 
4041        self . fd 
4142    } 
4243
4344    pub  fn  datasync ( & self )  -> io:: Result < ( ) >  { 
44-         unsafe  {  wasi:: fd_datasync ( self . fd ) . map_err ( err2io)  } 
45+         unsafe  {  wasi:: fd_datasync ( self . fd   as  wasi :: Fd ) . map_err ( err2io)  } 
4546    } 
4647
4748    pub  fn  pread ( & self ,  bufs :  & mut  [ IoSliceMut < ' _ > ] ,  offset :  u64 )  -> io:: Result < usize >  { 
48-         unsafe  {  wasi:: fd_pread ( self . fd ,  iovec ( bufs) ,  offset) . map_err ( err2io)  } 
49+         unsafe  {  wasi:: fd_pread ( self . fd   as  wasi :: Fd ,  iovec ( bufs) ,  offset) . map_err ( err2io)  } 
4950    } 
5051
5152    pub  fn  pwrite ( & self ,  bufs :  & [ IoSlice < ' _ > ] ,  offset :  u64 )  -> io:: Result < usize >  { 
52-         unsafe  {  wasi:: fd_pwrite ( self . fd ,  ciovec ( bufs) ,  offset) . map_err ( err2io)  } 
53+         unsafe  {  wasi:: fd_pwrite ( self . fd   as  wasi :: Fd ,  ciovec ( bufs) ,  offset) . map_err ( err2io)  } 
5354    } 
5455
5556    pub  fn  read ( & self ,  bufs :  & mut  [ IoSliceMut < ' _ > ] )  -> io:: Result < usize >  { 
56-         unsafe  {  wasi:: fd_read ( self . fd ,  iovec ( bufs) ) . map_err ( err2io)  } 
57+         unsafe  {  wasi:: fd_read ( self . fd   as  wasi :: Fd ,  iovec ( bufs) ) . map_err ( err2io)  } 
5758    } 
5859
5960    pub  fn  write ( & self ,  bufs :  & [ IoSlice < ' _ > ] )  -> io:: Result < usize >  { 
60-         unsafe  {  wasi:: fd_write ( self . fd ,  ciovec ( bufs) ) . map_err ( err2io)  } 
61+         unsafe  {  wasi:: fd_write ( self . fd   as  wasi :: Fd ,  ciovec ( bufs) ) . map_err ( err2io)  } 
6162    } 
6263
6364    pub  fn  seek ( & self ,  pos :  SeekFrom )  -> io:: Result < u64 >  { 
@@ -66,37 +67,37 @@ impl WasiFd {
6667            SeekFrom :: End ( pos)  => ( wasi:: WHENCE_END ,  pos) , 
6768            SeekFrom :: Current ( pos)  => ( wasi:: WHENCE_CUR ,  pos) , 
6869        } ; 
69-         unsafe  {  wasi:: fd_seek ( self . fd ,  offset,  whence) . map_err ( err2io)  } 
70+         unsafe  {  wasi:: fd_seek ( self . fd   as  wasi :: Fd ,  offset,  whence) . map_err ( err2io)  } 
7071    } 
7172
7273    pub  fn  tell ( & self )  -> io:: Result < u64 >  { 
73-         unsafe  {  wasi:: fd_tell ( self . fd ) . map_err ( err2io)  } 
74+         unsafe  {  wasi:: fd_tell ( self . fd   as  wasi :: Fd ) . map_err ( err2io)  } 
7475    } 
7576
7677    // FIXME: __wasi_fd_fdstat_get 
7778
7879    pub  fn  set_flags ( & self ,  flags :  wasi:: Fdflags )  -> io:: Result < ( ) >  { 
79-         unsafe  {  wasi:: fd_fdstat_set_flags ( self . fd ,  flags) . map_err ( err2io)  } 
80+         unsafe  {  wasi:: fd_fdstat_set_flags ( self . fd   as  wasi :: Fd ,  flags) . map_err ( err2io)  } 
8081    } 
8182
8283    pub  fn  set_rights ( & self ,  base :  wasi:: Rights ,  inheriting :  wasi:: Rights )  -> io:: Result < ( ) >  { 
83-         unsafe  {  wasi:: fd_fdstat_set_rights ( self . fd ,  base,  inheriting) . map_err ( err2io)  } 
84+         unsafe  {  wasi:: fd_fdstat_set_rights ( self . fd   as  wasi :: Fd ,  base,  inheriting) . map_err ( err2io)  } 
8485    } 
8586
8687    pub  fn  sync ( & self )  -> io:: Result < ( ) >  { 
87-         unsafe  {  wasi:: fd_sync ( self . fd ) . map_err ( err2io)  } 
88+         unsafe  {  wasi:: fd_sync ( self . fd   as  wasi :: Fd ) . map_err ( err2io)  } 
8889    } 
8990
9091    pub  fn  advise ( & self ,  offset :  u64 ,  len :  u64 ,  advice :  wasi:: Advice )  -> io:: Result < ( ) >  { 
91-         unsafe  {  wasi:: fd_advise ( self . fd ,  offset,  len,  advice) . map_err ( err2io)  } 
92+         unsafe  {  wasi:: fd_advise ( self . fd   as  wasi :: Fd ,  offset,  len,  advice) . map_err ( err2io)  } 
9293    } 
9394
9495    pub  fn  allocate ( & self ,  offset :  u64 ,  len :  u64 )  -> io:: Result < ( ) >  { 
95-         unsafe  {  wasi:: fd_allocate ( self . fd ,  offset,  len) . map_err ( err2io)  } 
96+         unsafe  {  wasi:: fd_allocate ( self . fd   as  wasi :: Fd ,  offset,  len) . map_err ( err2io)  } 
9697    } 
9798
9899    pub  fn  create_directory ( & self ,  path :  & str )  -> io:: Result < ( ) >  { 
99-         unsafe  {  wasi:: path_create_directory ( self . fd ,  path) . map_err ( err2io)  } 
100+         unsafe  {  wasi:: path_create_directory ( self . fd   as  wasi :: Fd ,  path) . map_err ( err2io)  } 
100101    } 
101102
102103    pub  fn  link ( 
@@ -107,7 +108,14 @@ impl WasiFd {
107108        new_path :  & str , 
108109    )  -> io:: Result < ( ) >  { 
109110        unsafe  { 
110-             wasi:: path_link ( self . fd ,  old_flags,  old_path,  new_fd. fd ,  new_path) . map_err ( err2io) 
111+             wasi:: path_link ( 
112+                 self . fd  as  wasi:: Fd , 
113+                 old_flags, 
114+                 old_path, 
115+                 new_fd. fd  as  wasi:: Fd , 
116+                 new_path, 
117+             ) 
118+             . map_err ( err2io) 
111119        } 
112120    } 
113121
@@ -122,33 +130,42 @@ impl WasiFd {
122130    )  -> io:: Result < WasiFd >  { 
123131        unsafe  { 
124132            wasi:: path_open ( 
125-                 self . fd , 
133+                 self . fd   as  wasi :: Fd , 
126134                dirflags, 
127135                path, 
128136                oflags, 
129137                fs_rights_base, 
130138                fs_rights_inheriting, 
131139                fs_flags, 
132140            ) 
133-             . map ( |fd| WasiFd :: from_raw ( fd) ) 
141+             . map ( |fd| WasiFd :: from_raw ( fd  as   c_int ) ) 
134142            . map_err ( err2io) 
135143        } 
136144    } 
137145
138146    pub  fn  readdir ( & self ,  buf :  & mut  [ u8 ] ,  cookie :  wasi:: Dircookie )  -> io:: Result < usize >  { 
139-         unsafe  {  wasi:: fd_readdir ( self . fd ,  buf. as_mut_ptr ( ) ,  buf. len ( ) ,  cookie) . map_err ( err2io)  } 
147+         unsafe  { 
148+             wasi:: fd_readdir ( self . fd  as  wasi:: Fd ,  buf. as_mut_ptr ( ) ,  buf. len ( ) ,  cookie) 
149+                 . map_err ( err2io) 
150+         } 
140151    } 
141152
142153    pub  fn  readlink ( & self ,  path :  & str ,  buf :  & mut  [ u8 ] )  -> io:: Result < usize >  { 
143-         unsafe  {  wasi:: path_readlink ( self . fd ,  path,  buf. as_mut_ptr ( ) ,  buf. len ( ) ) . map_err ( err2io)  } 
154+         unsafe  { 
155+             wasi:: path_readlink ( self . fd  as  wasi:: Fd ,  path,  buf. as_mut_ptr ( ) ,  buf. len ( ) ) 
156+                 . map_err ( err2io) 
157+         } 
144158    } 
145159
146160    pub  fn  rename ( & self ,  old_path :  & str ,  new_fd :  & WasiFd ,  new_path :  & str )  -> io:: Result < ( ) >  { 
147-         unsafe  {  wasi:: path_rename ( self . fd ,  old_path,  new_fd. fd ,  new_path) . map_err ( err2io)  } 
161+         unsafe  { 
162+             wasi:: path_rename ( self . fd  as  wasi:: Fd ,  old_path,  new_fd. fd  as  wasi:: Fd ,  new_path) 
163+                 . map_err ( err2io) 
164+         } 
148165    } 
149166
150167    pub  fn  filestat_get ( & self )  -> io:: Result < wasi:: Filestat >  { 
151-         unsafe  {  wasi:: fd_filestat_get ( self . fd ) . map_err ( err2io)  } 
168+         unsafe  {  wasi:: fd_filestat_get ( self . fd   as  wasi :: Fd ) . map_err ( err2io)  } 
152169    } 
153170
154171    pub  fn  filestat_set_times ( 
@@ -157,19 +174,21 @@ impl WasiFd {
157174        mtim :  wasi:: Timestamp , 
158175        fstflags :  wasi:: Fstflags , 
159176    )  -> io:: Result < ( ) >  { 
160-         unsafe  {  wasi:: fd_filestat_set_times ( self . fd ,  atim,  mtim,  fstflags) . map_err ( err2io)  } 
177+         unsafe  { 
178+             wasi:: fd_filestat_set_times ( self . fd  as  wasi:: Fd ,  atim,  mtim,  fstflags) . map_err ( err2io) 
179+         } 
161180    } 
162181
163182    pub  fn  filestat_set_size ( & self ,  size :  u64 )  -> io:: Result < ( ) >  { 
164-         unsafe  {  wasi:: fd_filestat_set_size ( self . fd ,  size) . map_err ( err2io)  } 
183+         unsafe  {  wasi:: fd_filestat_set_size ( self . fd   as  wasi :: Fd ,  size) . map_err ( err2io)  } 
165184    } 
166185
167186    pub  fn  path_filestat_get ( 
168187        & self , 
169188        flags :  wasi:: Lookupflags , 
170189        path :  & str , 
171190    )  -> io:: Result < wasi:: Filestat >  { 
172-         unsafe  {  wasi:: path_filestat_get ( self . fd ,  flags,  path) . map_err ( err2io)  } 
191+         unsafe  {  wasi:: path_filestat_get ( self . fd   as  wasi :: Fd ,  flags,  path) . map_err ( err2io)  } 
173192    } 
174193
175194    pub  fn  path_filestat_set_times ( 
@@ -181,33 +200,33 @@ impl WasiFd {
181200        fstflags :  wasi:: Fstflags , 
182201    )  -> io:: Result < ( ) >  { 
183202        unsafe  { 
184-             wasi:: path_filestat_set_times ( self . fd ,  flags,  path,  atim,  mtim,  fstflags) 
203+             wasi:: path_filestat_set_times ( self . fd   as  wasi :: Fd ,  flags,  path,  atim,  mtim,  fstflags) 
185204                . map_err ( err2io) 
186205        } 
187206    } 
188207
189208    pub  fn  symlink ( & self ,  old_path :  & str ,  new_path :  & str )  -> io:: Result < ( ) >  { 
190-         unsafe  {  wasi:: path_symlink ( old_path,  self . fd ,  new_path) . map_err ( err2io)  } 
209+         unsafe  {  wasi:: path_symlink ( old_path,  self . fd   as  wasi :: Fd ,  new_path) . map_err ( err2io)  } 
191210    } 
192211
193212    pub  fn  unlink_file ( & self ,  path :  & str )  -> io:: Result < ( ) >  { 
194-         unsafe  {  wasi:: path_unlink_file ( self . fd ,  path) . map_err ( err2io)  } 
213+         unsafe  {  wasi:: path_unlink_file ( self . fd   as  wasi :: Fd ,  path) . map_err ( err2io)  } 
195214    } 
196215
197216    pub  fn  remove_directory ( & self ,  path :  & str )  -> io:: Result < ( ) >  { 
198-         unsafe  {  wasi:: path_remove_directory ( self . fd ,  path) . map_err ( err2io)  } 
217+         unsafe  {  wasi:: path_remove_directory ( self . fd   as  wasi :: Fd ,  path) . map_err ( err2io)  } 
199218    } 
200219
201220    pub  fn  sock_recv ( 
202221        & self , 
203222        ri_data :  & mut  [ IoSliceMut < ' _ > ] , 
204223        ri_flags :  wasi:: Riflags , 
205224    )  -> io:: Result < ( usize ,  wasi:: Roflags ) >  { 
206-         unsafe  {  wasi:: sock_recv ( self . fd ,  iovec ( ri_data) ,  ri_flags) . map_err ( err2io)  } 
225+         unsafe  {  wasi:: sock_recv ( self . fd   as  wasi :: Fd ,  iovec ( ri_data) ,  ri_flags) . map_err ( err2io)  } 
207226    } 
208227
209228    pub  fn  sock_send ( & self ,  si_data :  & [ IoSlice < ' _ > ] ,  si_flags :  wasi:: Siflags )  -> io:: Result < usize >  { 
210-         unsafe  {  wasi:: sock_send ( self . fd ,  ciovec ( si_data) ,  si_flags) . map_err ( err2io)  } 
229+         unsafe  {  wasi:: sock_send ( self . fd   as  wasi :: Fd ,  ciovec ( si_data) ,  si_flags) . map_err ( err2io)  } 
211230    } 
212231
213232    pub  fn  sock_shutdown ( & self ,  how :  Shutdown )  -> io:: Result < ( ) >  { 
@@ -216,14 +235,14 @@ impl WasiFd {
216235            Shutdown :: Write  => wasi:: SDFLAGS_WR , 
217236            Shutdown :: Both  => wasi:: SDFLAGS_WR  | wasi:: SDFLAGS_RD , 
218237        } ; 
219-         unsafe  {  wasi:: sock_shutdown ( self . fd ,  how) . map_err ( err2io)  } 
238+         unsafe  {  wasi:: sock_shutdown ( self . fd   as  wasi :: Fd ,  how) . map_err ( err2io)  } 
220239    } 
221240} 
222241
223242impl  Drop  for  WasiFd  { 
224243    fn  drop ( & mut  self )  { 
225244        // FIXME: can we handle the return code here even though we can't on 
226245        // unix? 
227-         let  _ = unsafe  {  wasi:: fd_close ( self . fd )  } ; 
246+         let  _ = unsafe  {  wasi:: fd_close ( self . fd   as  wasi :: Fd )  } ; 
228247    } 
229248} 
0 commit comments