Fix error logging on the C++ side

This commit is contained in:
topjohnwu
2023-10-13 16:59:54 -07:00
parent 51e37880c6
commit 36de62873a
7 changed files with 48 additions and 26 deletions
+13 -3
View File
@@ -4,6 +4,7 @@
#![feature(utf8_chunks)]
pub use libc;
use num_traits::FromPrimitive;
pub use cstr::*;
use cxx_extern::*;
@@ -21,7 +22,9 @@ mod xwrap;
#[cxx::bridge]
pub mod ffi {
#[derive(Copy, Clone)]
pub enum LogLevel {
#[repr(i32)]
#[cxx_name = "LogLevel"]
pub(crate) enum LogLevelCxx {
ErrorCxx,
Error,
Warn,
@@ -36,9 +39,10 @@ pub mod ffi {
extern "Rust" {
#[cxx_name = "log_with_rs"]
fn log_from_cxx(level: LogLevel, msg: &[u8]);
fn log_from_cxx(level: LogLevelCxx, msg: &[u8]);
#[cxx_name = "set_log_level_state"]
fn set_log_level_state_cxx(level: LogLevelCxx, enabled: bool);
fn exit_on_error(b: bool);
fn set_log_level_state(level: LogLevel, enabled: bool);
fn cmdline_logging();
}
@@ -54,3 +58,9 @@ pub mod ffi {
fn enable_selinux();
}
}
fn set_log_level_state_cxx(level: ffi::LogLevelCxx, enabled: bool) {
if let Some(level) = LogLevel::from_i32(level.repr) {
set_log_level_state(level, enabled)
}
}