luaur_vm/functions/
append.rs1#[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}