blockless_sdk/
memory.rs

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}