use crate::ffi::error::Error;
use crate::ffi::status::Status;
use core::ffi::c_int;
use std::ffi::CString;
use std::io::Write as _;
pub(crate) fn write_to_c_buf(src: &str, mut dst: &mut [u8]) -> c_int {
let src = match CString::new(src.as_bytes()) {
Ok(s) => s,
Err(_) => return Status::UnexpectedError as c_int,
};
let src = src.as_bytes_with_nul();
if dst.len() < src.len() {
return Status::BufferTooSmall as c_int;
}
match dst.write_all(src) {
Ok(()) => 0,
Err(_) => Status::BufferWriteFailed as c_int,
}
}
pub(crate) fn check_null<T>(ptr: *const T, error: Error) -> Result<(), Error> {
if ptr.is_null() {
return Err(error);
}
Ok(())
}