use std::{
borrow::Cow,
ffi::{c_char, CStr, CString},
};
use zsh_sys as zsys;
use crate::ToCString;
pub fn warn_named(cmd: impl ToCString, msg: impl ToCString) {
let cmd_c = cmd.into_cstr();
let msg_c = msg.into_cstr();
unsafe { zsys::zwarnnam(cmd_c.as_ptr(), msg_c.as_ptr()) }
}
pub fn warn(msg: impl ToCString) {
let msg_c = msg.into_cstr();
unsafe { zsys::zwarn(msg_c.as_ptr()) }
}
pub fn error(msg: impl ToCString) {
let msg_c = msg.into_cstr();
unsafe { zsys::zerr(msg_c.as_ptr()) }
}
pub fn error_named(cmd: impl ToCString, msg: impl ToCString) {
let cmd = cmd.into_cstr();
let msg = msg.into_cstr();
unsafe { zsys::zerrnam(cmd.as_ptr(), msg.as_ptr()) }
}
#[macro_export]
macro_rules! warn_named {
($cmd:expr, $msg:expr $(,$val:expr)*) => {
$crate::log::warn_named($cmd, format!($msg, $($val),*))
};
}
#[macro_export]
macro_rules! error_named {
($cmd:expr, $msg:expr $(,$val:expr)*) => {
$crate::log::error_named($cmd, format!($msg, $($val),*))
};
}
#[macro_export]
macro_rules! warn {
($msg:expr $(,$val:expr)*) => {
$crate::log::warn(format!($msg, $($val),*))
};
}
#[macro_export]
macro_rules! error {
($msg:expr $(,$val:expr)*) => {
$crate::log::error(format!($msg, $($val),*))
};
}