From 015da2c7ed129def291bc41838daa001fa9c6746 Mon Sep 17 00:00:00 2001 From: Shivani Bhardwaj Date: Thu, 9 Jan 2025 12:17:13 +0530 Subject: [PATCH] rust: add C callback for FatalErrorOnInit --- rust/src/debug.rs | 23 +++++++++++++++++++++-- src/util-debug.c | 5 +++++ src/util-debug.h | 2 ++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/rust/src/debug.rs b/rust/src/debug.rs index 16b128390f..72f7b737c3 100644 --- a/rust/src/debug.rs +++ b/rust/src/debug.rs @@ -20,12 +20,19 @@ use std::{ffi::CString, path::Path}; use crate::core::SC; +use std::os::raw::c_char; /// cbindgen:ignore -extern { +extern "C" { pub fn SCLogGetLogLevel() -> i32; } +// Defined in util-debug.c +/// cbindgen:ignore +extern "C" { + pub fn SCFatalErrorOnInitStatic(arg: *const c_char); +} + #[derive(Debug)] #[repr(C)] pub enum Level { @@ -62,6 +69,12 @@ fn basename(filename: &str) -> &str { return filename; } +pub fn fatalerror(message: &str) { + unsafe { + SCFatalErrorOnInitStatic(to_safe_cstring(message).as_ptr()); + } +} + pub fn sclog(level: Level, file: &str, line: u32, function: &str, message: &str) { let filename = basename(file); let noext = &filename[0..filename.len() - 3]; @@ -203,13 +216,19 @@ macro_rules! SCLogDebug { ($($arg:tt)*) => {}; } +#[macro_export] +macro_rules!SCFatalErrorOnInit { + ($($arg:tt)*) => { + $crate::debug::fatalerror(&format!($($arg)*)); + } +} + #[cfg(not(feature = "debug-validate"))] #[macro_export] macro_rules! debug_validate_bug_on ( ($item:expr) => {}; ); - #[cfg(feature = "debug-validate")] #[macro_export] macro_rules! debug_validate_bug_on ( diff --git a/src/util-debug.c b/src/util-debug.c index 56258a034f..f315d12890 100644 --- a/src/util-debug.c +++ b/src/util-debug.c @@ -1614,6 +1614,11 @@ void SCLogDeInitLogModule(void) #endif /* OS_WIN32 */ } +void SCFatalErrorOnInitStatic(const char *arg) +{ + FatalErrorOnInit("%s", arg); +} + //------------------------------------Unit_Tests-------------------------------- /* The logging engine should be tested to the maximum extent possible, since diff --git a/src/util-debug.h b/src/util-debug.h index 29beb912c9..6ed0eccf5b 100644 --- a/src/util-debug.h +++ b/src/util-debug.h @@ -530,6 +530,8 @@ SCLogInitData *SCLogAllocLogInitData(void); void SCLogAppendOPIfaceCtx(SCLogOPIfaceCtx *, SCLogInitData *); +void SCFatalErrorOnInitStatic(const char *); + void SCLogInitLogModule(SCLogInitData *); void SCLogDeInitLogModule(void);