use voxel_engine_types::*;
macro_rules! impl_trap_for_funcs {
(
$(
$( #[$docs:meta] )*
fn $fname:ident ($( $arg:ident : $typ:ty ),* $(,)? ) -> $ret:tt
);+ $(;)?
) => {
$(
$( #[$docs] )*
#[allow(warnings)]
#[no_mangle]
pub extern "C" fn $fname ($( $arg : $typ ),* ) -> $ret {
unimplemented!()
}
)+
}
}
#[repr(C)]
#[derive(Copy, Clone, Debug)]
pub struct Ciovec {
pub buf: *const u8,
pub buf_len: usize,
}
#[export_name = "__imported_wasi_snapshot_preview1_environ_get"]
pub unsafe extern "C" fn environ_get(_: *mut *mut u8, _: *mut u8) -> i32 {
0
}
#[export_name = "__imported_wasi_snapshot_preview1_environ_sizes_get"]
pub unsafe extern "C" fn environ_sizes_get(offset0: *mut usize, offset1: *mut usize) -> i32 {
*offset0 = 0;
*offset1 = 0;
0
}
#[export_name = "_ZN4wasi13lib_generated22wasi_snapshot_preview18fd_write17h594e175a549b8f2dE"]
pub unsafe extern "C" fn fd_write(
fd: i32,
mut ciov_buf: *const Ciovec,
mut ciov_buf_len: usize,
nwritten: *mut usize,
) -> i32 {
static mut BUFFER: String = String::new();
if fd == 1 || fd == 2 {
while ciov_buf_len != 0 && (*ciov_buf).buf_len == 0 {
ciov_buf = ciov_buf.add(1);
ciov_buf_len -= 1;
}
*nwritten = 0;
let current_string = &mut *core::ptr::addr_of_mut!(BUFFER);
let log_level = if fd == 1 {
LogLevel::Info
} else {
LogLevel::Error
};
while ciov_buf_len > 0 {
let mut to_write = core::str::from_utf8_unchecked(core::slice::from_raw_parts(
(*ciov_buf).buf,
(*ciov_buf).buf_len,
));
while let Some(last) = to_write.find('\n') {
let sequence = &to_write[..last];
to_write = &to_write[(last + 1)..];
if current_string.is_empty() {
global_log(log_level, sequence);
} else {
*current_string += sequence;
global_log(log_level, current_string);
current_string.clear();
}
*nwritten += sequence.len() + 1;
}
*nwritten += to_write.len();
*current_string += to_write;
ciov_buf_len -= 1;
}
0
} else {
unreachable!()
}
}
#[export_name = "__imported_wasi_snapshot_preview1_proc_exit"]
fn proc_exit(_: i32) {
unreachable!()
}
#[export_name = "_ZN4wasi13lib_generated22wasi_snapshot_preview111sched_yield17hd8d25f53c5eb182fE"]
fn sched_yield() -> i32 {
0
}
#[export_name = "_ZN4wasi13lib_generated22wasi_snapshot_preview110random_get17hb1719c7a33a320e4E"]
unsafe fn random_get(buf: *mut u8, buf_len: usize) -> i32 {
std::slice::from_raw_parts_mut(buf, buf_len).fill(0);
0
}
impl_trap_for_funcs!(
fn args_get(argv: i32, argv_buf: i32) -> i32;
fn args_sizes_get(offset0: i32, offset1: i32) -> i32;
fn clock_res_get(id: i32, offset0: i32) -> i32;
#[export_name = "_ZN4wasi13lib_generated22wasi_snapshot_preview114clock_time_get17h35e4b5c443113208E"]
fn clock_time_get(id: i32, precision: i64, offset0: i32) -> i32;
fn fd_advise(fd: i32, offset: i64, len: i64, advice: i32) -> i32;
fn fd_allocate(fd: i32, offset: i64, len: i64) -> i32;
fn fd_close(fd: i32) -> i32;
fn fd_datasync(fd: i32) -> i32;
fn fd_fdstat_get(fd: i32, offset0: i32) -> i32;
fn fd_fdstat_set_flags(fd: i32, flags: i32) -> i32;
fn fd_fdstat_set_rights(fd: i32, fs_rights_base: i64, fs_rights_inheriting: i64) -> i32;
fn fd_filestat_get(fd: i32, offset0: i32) -> i32;
fn fd_filestat_set_size(fd: i32, size: i64) -> i32;
fn fd_filestat_set_times(fd: i32, atim: i64, mtim: i64, fst_flags: i32) -> i32;
fn fd_pread(fd: i32, iov_buf: i32, iov_buf_len: i32, offset: i64, offset0: i32) -> i32;
fn fd_prestat_get(fd: i32, offset0: i32) -> i32;
fn fd_prestat_dir_name(fd: i32, path: i32, path_len: i32) -> i32;
fn fd_pwrite(fd: i32, ciov_buf: i32, ciov_buf_len: i32, offset: i64, offset0: i32) -> i32;
fn fd_read(fd: i32, iov_buf: i32, iov_buf_len: i32, offset1: i32) -> i32;
fn fd_readdir(fd: i32, buf: i32, buf_len: i32, cookie: i64, offset0: i32) -> i32;
fn fd_renumber(fd: i32, to: i32) -> i32;
fn fd_seek(fd: i32, offset: i64, whence: i32, offset0: i32) -> i32;
fn fd_sync(fd: i32) -> i32;
fn fd_tell(fd: i32, offset0: i32) -> i32;
fn path_create_directory(fd: i32, offset: i32, length: i32) -> i32;
fn path_filestat_get(fd: i32, flags: i32, offset: i32, length: i32, offset0: i32) -> i32;
fn path_filestat_set_times(
fd: i32,
flags: i32,
offset: i32,
length: i32,
atim: i64,
mtim: i64,
fst_flags: i32,
) -> i32;
fn path_link(
old_fd: i32,
old_flags: i32,
old_offset: i32,
old_length: i32,
new_fd: i32,
new_offset: i32,
new_length: i32,
) -> i32;
fn path_open(
fd: i32,
dirflags: i32,
offset: i32,
length: i32,
oflags: i32,
fs_rights_base: i64,
fdflags: i64,
fs_rights_inheriting: i32,
offfset0: i32,
) -> i32;
fn path_readlink(
fd: i32,
offset: i32,
length: i32,
buf: i32,
buf_len: i32,
offset0: i32,
) -> i32;
fn path_remove_directory(fd: i32, offset: i32, length: i32) -> i32;
fn path_rename(
fd: i32,
old_offset: i32,
old_length: i32,
new_fd: i32,
new_offset: i32,
new_length: i32,
) -> i32;
fn path_symlink(
old_offset: i32,
old_length: i32,
fd: i32,
new_offset: i32,
new_length: i32,
) -> i32;
fn path_unlink_file(fd: i32, offset: i32, length: i32) -> i32;
fn poll_oneoff(in_: i32, out: i32, nsubscriptions: i32, offset0: i32) -> i32;
fn proc_raise(sig: i32) -> i32;
fn sock_accept(fd: i32, flags: i32, offset0: i32) -> i32;
fn sock_recv(
fd: i32,
iov_buf: i32,
iov_buf_len: i32,
ri_flags: i32,
offset0: i32,
offset1: i32,
) -> i32;
fn sock_send(fd: i32, ciov_buf: i32, ciov_buf_len: i32, si_flags: i32, offset0: i32) -> i32;
fn sock_shutdown(fd: i32, how: i32) -> i32;
);