Skip to main content

luaur_vm/functions/
dumpstringdata.rs

1use crate::functions::safejson::safejson;
2
3#[allow(non_snake_case)]
4pub(crate) unsafe fn dumpstringdata(
5    f: *mut core::ffi::c_void,
6    data: *const core::ffi::c_char,
7    len: usize,
8) {
9    let slice = core::slice::from_raw_parts(data, len);
10    for &ch in slice {
11        let out = if safejson(ch) {
12            ch
13        } else {
14            '?' as core::ffi::c_char
15        };
16
17        // Note: fputc is provided by the system's C library.
18        // In this crate's context, we call it via the extern "C" linkage.
19        extern "C" {
20            fn fputc(c: core::ffi::c_int, stream: *mut core::ffi::c_void) -> core::ffi::c_int;
21        }
22
23        fputc(out as core::ffi::c_int, f);
24    }
25}