Skip to content

Commit 6896ed3

Browse files
committed
use wasi crate
1 parent bd1da18 commit 6896ed3

File tree

11 files changed

+249
-376
lines changed

11 files changed

+249
-376
lines changed

src/libstd/sys/wasi/args.rs

+13-3
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,24 @@ pub fn args() -> Args {
2727
})
2828
}
2929

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+
3038
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};
3141
unsafe {
3242
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))?;
3444

35-
let mut argc = vec![core::ptr::null_mut::<libc::c_char>(); argc];
45+
let mut argc = vec![core::ptr::null_mut::<u8>(); argc];
3646
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()))?;
3848

3949
let args = argc.into_iter()
4050
.map(|ptr| CStr::from_ptr(ptr).to_bytes().to_vec())

src/libstd/sys/wasi/ext/fs.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -336,16 +336,16 @@ pub trait FileTypeExt {
336336

337337
impl FileTypeExt for fs::FileType {
338338
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
340340
}
341341
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
343343
}
344344
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
346346
}
347347
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
349349
}
350350
}
351351

src/libstd/sys/wasi/ext/io.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ use crate::sys;
88
use crate::net;
99
use crate::sys_common::{AsInner, FromInner, IntoInner};
1010

11+
use wasi::wasi_unstable as wasi;
12+
1113
/// Raw file descriptors.
1214
pub type RawFd = u32;
1315

@@ -125,18 +127,18 @@ impl IntoRawFd for fs::File {
125127

126128
impl AsRawFd for io::Stdin {
127129
fn as_raw_fd(&self) -> RawFd {
128-
libc::STDIN_FILENO as u32
130+
wasi::STDIN_FD
129131
}
130132
}
131133

132134
impl AsRawFd for io::Stdout {
133135
fn as_raw_fd(&self) -> RawFd {
134-
libc::STDOUT_FILENO as u32
136+
wasi::STDOUT_FD
135137
}
136138
}
137139

138140
impl AsRawFd for io::Stderr {
139141
fn as_raw_fd(&self) -> RawFd {
140-
libc::STDERR_FILENO as u32
142+
wasi::STDERR_FD
141143
}
142144
}

0 commit comments

Comments
 (0)