File tree 11 files changed +249
-376
lines changed
11 files changed +249
-376
lines changed Original file line number Diff line number Diff line change @@ -27,14 +27,24 @@ pub fn args() -> Args {
27
27
} )
28
28
}
29
29
30
+ fn cvt_wasi ( r : u16 ) -> crate :: io:: Result < ( ) > {
31
+ if r != 0 {
32
+ Err ( Error :: from_raw_os_error ( r as i32 ) )
33
+ } else {
34
+ Ok ( ( ) )
35
+ }
36
+ }
37
+
30
38
fn maybe_args ( ) -> io:: Result < Args > {
39
+ // FIXME: replace with safe functions
40
+ use wasi:: wasi_unstable:: raw:: { __wasi_args_sizes_get, __wasi_args_get} ;
31
41
unsafe {
32
42
let ( mut argc, mut argv_buf_size) = ( 0 , 0 ) ;
33
- cvt_wasi ( libc :: __wasi_args_sizes_get ( & mut argc, & mut argv_buf_size) ) ?;
43
+ cvt_wasi ( __wasi_args_sizes_get ( & mut argc, & mut argv_buf_size) ) ?;
34
44
35
- let mut argc = vec ! [ core:: ptr:: null_mut:: <libc :: c_char >( ) ; argc] ;
45
+ let mut argc = vec ! [ core:: ptr:: null_mut:: <u8 >( ) ; argc] ;
36
46
let mut argv_buf = vec ! [ 0 ; argv_buf_size] ;
37
- cvt_wasi ( libc :: __wasi_args_get ( argc. as_mut_ptr ( ) , argv_buf. as_mut_ptr ( ) ) ) ?;
47
+ cvt_wasi ( __wasi_args_get ( argc. as_mut_ptr ( ) , argv_buf. as_mut_ptr ( ) ) ) ?;
38
48
39
49
let args = argc. into_iter ( )
40
50
. map ( |ptr| CStr :: from_ptr ( ptr) . to_bytes ( ) . to_vec ( ) )
Original file line number Diff line number Diff line change @@ -336,16 +336,16 @@ pub trait FileTypeExt {
336
336
337
337
impl FileTypeExt for fs:: FileType {
338
338
fn is_block_device ( & self ) -> bool {
339
- self . as_inner ( ) . bits ( ) == libc :: __WASI_FILETYPE_BLOCK_DEVICE
339
+ self . as_inner ( ) . bits ( ) == wasi :: FILETYPE_BLOCK_DEVICE
340
340
}
341
341
fn is_character_device ( & self ) -> bool {
342
- self . as_inner ( ) . bits ( ) == libc :: __WASI_FILETYPE_CHARACTER_DEVICE
342
+ self . as_inner ( ) . bits ( ) == wasi :: FILETYPE_CHARACTER_DEVICE
343
343
}
344
344
fn is_socket_dgram ( & self ) -> bool {
345
- self . as_inner ( ) . bits ( ) == libc :: __WASI_FILETYPE_SOCKET_DGRAM
345
+ self . as_inner ( ) . bits ( ) == wasi :: FILETYPE_SOCKET_DGRAM
346
346
}
347
347
fn is_socket_stream ( & self ) -> bool {
348
- self . as_inner ( ) . bits ( ) == libc :: __WASI_FILETYPE_SOCKET_STREAM
348
+ self . as_inner ( ) . bits ( ) == wasi :: FILETYPE_SOCKET_STREAM
349
349
}
350
350
}
351
351
Original file line number Diff line number Diff line change @@ -8,6 +8,8 @@ use crate::sys;
8
8
use crate :: net;
9
9
use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
10
10
11
+ use wasi:: wasi_unstable as wasi;
12
+
11
13
/// Raw file descriptors.
12
14
pub type RawFd = u32 ;
13
15
@@ -125,18 +127,18 @@ impl IntoRawFd for fs::File {
125
127
126
128
impl AsRawFd for io:: Stdin {
127
129
fn as_raw_fd ( & self ) -> RawFd {
128
- libc :: STDIN_FILENO as u32
130
+ wasi :: STDIN_FD
129
131
}
130
132
}
131
133
132
134
impl AsRawFd for io:: Stdout {
133
135
fn as_raw_fd ( & self ) -> RawFd {
134
- libc :: STDOUT_FILENO as u32
136
+ wasi :: STDOUT_FD
135
137
}
136
138
}
137
139
138
140
impl AsRawFd for io:: Stderr {
139
141
fn as_raw_fd ( & self ) -> RawFd {
140
- libc :: STDERR_FILENO as u32
142
+ wasi :: STDERR_FD
141
143
}
142
144
}
You can’t perform that action at this time.
0 commit comments