1#[link(wasm_import_module = "blockless_memory")]
2extern "C" {
3 #[link_name = "memory_read"]
4 pub(crate) fn memory_read(buf: *mut u8, len: u32, num: *mut u32) -> u32;
5 #[link_name = "env_var_read"]
6 pub(crate) fn env_var_read(buf: *mut u8, len: u32, num: *mut u32) -> u32;
7}
8
9pub fn read_stdin(buf: &mut [u8]) -> std::io::Result<u32> {
10 let mut len = 0;
11 let errno = unsafe { memory_read(buf.as_mut_ptr(), buf.len() as _, &mut len) };
12 if errno == 0 {
13 return Ok(len);
14 }
15 let err = std::io::Error::from_raw_os_error(errno as i32);
16 Err(err)
17}
18
19pub fn read_env_vars(buf: &mut [u8]) -> std::io::Result<u32> {
20 let mut len = 0;
21 let errno = unsafe { env_var_read(buf.as_mut_ptr(), buf.len() as _, &mut len) };
22 if errno == 0 {
23 return Ok(len);
24 }
25 let err = std::io::Error::from_raw_os_error(errno as i32);
26 Err(err)
27}