use crate::validate_regex as validate_regex_impl;
use std::ffi::{CStr, CString, c_char};
use super::handle_panic_ptr_return;
#[unsafe(no_mangle)]
pub unsafe extern "C" fn validate_regex(
regex: *const c_char,
error_out: *mut *const c_char,
) -> *const c_char {
handle_panic_ptr_return(Some(error_out), || {
let pattern = unsafe { CStr::from_ptr(regex).to_string_lossy().into_owned() };
match validate_regex_impl(&pattern) {
Ok(_) => 0i64, Err(err) => {
let error_msg = format!("{err}");
let c_string = CString::new(error_msg).unwrap_or_else(|_| {
CString::new("Invalid regex (error details unavailable)").unwrap()
});
let ptr = c_string.into_raw();
ptr as i64
}
}
}) as *const c_char
}