Skip to main content

luaur_vm/functions/
append.rs

1#[allow(non_snake_case)]
2pub fn append(
3    buf: *mut core::ffi::c_char,
4    bufsize: usize,
5    offset: usize,
6    data: *const core::ffi::c_char,
7) -> usize {
8    let size = unsafe {
9        core::ffi::CStr::from_ptr(data as *mut core::ffi::c_char)
10            .to_bytes()
11            .len()
12    };
13    let copy = if offset + size >= bufsize {
14        bufsize - offset - 1
15    } else {
16        size
17    };
18
19    let dst = unsafe { core::slice::from_raw_parts_mut(buf.add(offset) as *mut u8, copy) };
20    let src = unsafe { core::slice::from_raw_parts(data as *const u8, copy) };
21    dst.copy_from_slice(src);
22
23    offset + copy
24}