pub use doom_fish_utils::ffi_string::{
ffi_string_from_buffer, ffi_string_from_buffer_or_empty, DEFAULT_BUFFER_SIZE, SMALL_BUFFER_SIZE,
};
pub(crate) fn cstring_until_nul(value: &str) -> std::ffi::CString {
let prefix = value.split('\0').next().unwrap_or_default();
std::ffi::CString::new(prefix).unwrap_or_default()
}
pub unsafe fn ffi_string_owned<F>(ffi_call: F) -> Option<String>
where
F: FnOnce() -> *mut i8,
{
unsafe {
doom_fish_utils::ffi_string::ffi_string_owned(ffi_call, |ptr| {
crate::ffi::acf_free_string(ptr);
})
}
}
pub unsafe fn ffi_string_owned_or_empty<F>(ffi_call: F) -> String
where
F: FnOnce() -> *mut i8,
{
unsafe { ffi_string_owned(ffi_call) }.unwrap_or_default()
}