log: properly print strings

This commit is contained in:
chayleaf 2024-08-14 09:25:55 +07:00
parent 6a2b2b4c33
commit 81dd179302
Signed by: chayleaf
GPG key ID: 78171AD46227E68E

View file

@ -335,8 +335,15 @@ unsafe extern "C" fn sway_terminate(exit_code: libc::c_int) {
swayidle_finish(); swayidle_finish();
exit(exit_code); exit(exit_code);
} }
unsafe fn read_str(ptr: *const libc::c_char) -> Cow<'static, str> {
if ptr.is_null() {
"".into()
} else {
CStr::from_ptr(ptr).to_string_lossy()
}
}
unsafe extern "C" fn cmd_exec(param: *mut libc::c_char) { unsafe extern "C" fn cmd_exec(param: *mut libc::c_char) {
log::debug!("Cmd exec {param:?}",); log::debug!("Cmd exec {}", read_str(param));
let mut pid: pid_t = fork(); let mut pid: pid_t = fork();
match pid { match pid {
0 => { 0 => {
@ -359,11 +366,11 @@ unsafe extern "C" fn cmd_exec(param: *mut libc::c_char) {
ptr::null_mut(), ptr::null_mut(),
]; ];
execvp(cmd[0 as libc::c_int as usize], cmd.as_ptr()); execvp(cmd[0 as libc::c_int as usize], cmd.as_ptr());
log::error!("execve failed!: {:?}", strerror(*__errno_location()),); log::error!("execve failed!: {}", strerror(*__errno_location()),);
exit(1 as libc::c_int); exit(1 as libc::c_int);
} }
pid if pid < 0 => { pid if pid < 0 => {
log::error!("fork failed: {:?}", strerror(*__errno_location()),); log::error!("fork failed: {}", strerror(*__errno_location()),);
exit(1 as libc::c_int); exit(1 as libc::c_int);
} }
_ => {} _ => {}
@ -371,12 +378,12 @@ unsafe extern "C" fn cmd_exec(param: *mut libc::c_char) {
exit(0 as libc::c_int); exit(0 as libc::c_int);
} }
pid if pid < 0 => { pid if pid < 0 => {
log::error!("fork failed: {:?}", strerror(*__errno_location()),); log::error!("fork failed: {}", strerror(*__errno_location()),);
} }
_ => { _ => {
log::debug!("Spawned process {param:?}"); log::debug!("Spawned process {}", read_str(param));
if state.wait { if state.wait {
log::debug!("Blocking until process exits",); log::debug!("Blocking until process exits");
} }
let mut status: libc::c_int = 0 as libc::c_int; let mut status: libc::c_int = 0 as libc::c_int;
waitpid(pid, &mut status, 0 as libc::c_int); waitpid(pid, &mut status, 0 as libc::c_int);
@ -425,27 +432,27 @@ unsafe extern "C" fn acquire_inhibitor_lock(
); );
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
log::error!( log::error!(
"Failed to send {:?} inhibit signal: {:?}", "Failed to send {} inhibit signal: {}",
type_0, read_str(type_0),
error.message, read_str(error.message),
); );
} else { } else {
ret = sd_bus_message_read(msg, (b"h\0" as *const u8).cast::<libc::c_char>(), fd); ret = sd_bus_message_read(msg, (b"h\0" as *const u8).cast::<libc::c_char>(), fd);
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to parse D-Bus response for {:?} inhibit: {:?}", "Failed to parse D-Bus response for {} inhibit: {}",
type_0, read_str(type_0),
strerror(*__errno_location()), strerror(*__errno_location()),
); );
} else { } else {
*fd = libc::fcntl(*fd, 1030 as libc::c_int, 3 as libc::c_int); *fd = libc::fcntl(*fd, 1030 as libc::c_int, 3 as libc::c_int);
if *fd >= 0 as libc::c_int { if *fd >= 0 as libc::c_int {
log::debug!("Got {:?} lock: {}", type_0, *fd,); log::debug!("Got {} lock: {}", read_str(type_0), *fd,);
} else { } else {
log::error!( log::error!(
"Failed to copy {:?} lock fd: {:?}", "Failed to copy {} lock fd: {}",
type_0, read_str(type_0),
strerror(*__errno_location()), strerror(*__errno_location()),
); );
} }
@ -456,12 +463,12 @@ unsafe extern "C" fn acquire_inhibitor_lock(
} }
unsafe extern "C" fn release_inhibitor_lock(fd: libc::c_int) { unsafe extern "C" fn release_inhibitor_lock(fd: libc::c_int) {
if fd >= 0 as libc::c_int { if fd >= 0 as libc::c_int {
log::debug!("Releasing inhibitor lock {}", fd,); log::debug!("Releasing inhibitor lock {}", fd);
close(fd); close(fd);
} }
} }
unsafe extern "C" fn set_idle_hint(hint: bool) { unsafe extern "C" fn set_idle_hint(hint: bool) {
log::debug!("SetIdleHint {}", i32::from(hint),); log::debug!("SetIdleHint {}", i32::from(hint));
let mut msg: *mut sd_bus_message = ptr::null_mut(); let mut msg: *mut sd_bus_message = ptr::null_mut();
let mut error: sd_bus_error = sd_bus_error { let mut error: sd_bus_error = sd_bus_error {
name: ptr::null(), name: ptr::null(),
@ -480,7 +487,10 @@ unsafe extern "C" fn set_idle_hint(hint: bool) {
i32::from(hint), i32::from(hint),
); );
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
log::error!("Failed to send SetIdleHint signal: {:?}", error.message,); log::error!(
"Failed to send SetIdleHint signal: {}",
read_str(error.message)
);
} }
sd_bus_error_free(&mut error); sd_bus_error_free(&mut error);
sd_bus_message_unref(msg); sd_bus_message_unref(msg);
@ -514,7 +524,7 @@ unsafe extern "C" fn get_logind_idle_inhibit() -> bool {
sd_bus_message_unref(reply); sd_bus_message_unref(reply);
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to parse get BlockInhibited property: {:?}", "Failed to parse get BlockInhibited property: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
0 as libc::c_int != 0 0 as libc::c_int != 0
@ -533,11 +543,11 @@ unsafe extern "C" fn prepare_for_sleep(
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to parse D-Bus response for Inhibit: {:?}", "Failed to parse D-Bus response for Inhibit: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
} }
log::debug!("PrepareForSleep signal received {}", going_down,); log::debug!("PrepareForSleep signal received {}", going_down);
if going_down == 0 { if going_down == 0 {
acquire_inhibitor_lock( acquire_inhibitor_lock(
(b"sleep\0" as *const u8).cast::<libc::c_char>(), (b"sleep\0" as *const u8).cast::<libc::c_char>(),
@ -613,7 +623,7 @@ unsafe extern "C" fn handle_property_changed(
(b"org.freedesktop.login1.Manager\0" as *const u8).cast::<libc::c_char>(), (b"org.freedesktop.login1.Manager\0" as *const u8).cast::<libc::c_char>(),
) == 0 ) == 0
{ {
log::debug!("Got PropertyChanged: {:?}", name); log::debug!("Got PropertyChanged: {}", read_str(name));
ret = sd_bus_message_enter_container( ret = sd_bus_message_enter_container(
msg, msg,
'a' as i32 as libc::c_char, 'a' as i32 as libc::c_char,
@ -651,7 +661,7 @@ unsafe extern "C" fn handle_property_changed(
log::debug!("Logind idle inhibitor found"); log::debug!("Logind idle inhibitor found");
disable_timeouts(); disable_timeouts();
} else { } else {
log::debug!("Logind idle inhibitor not found",); log::debug!("Logind idle inhibitor not found");
enable_timeouts(); enable_timeouts();
} }
return 0 as libc::c_int; return 0 as libc::c_int;
@ -682,7 +692,7 @@ unsafe extern "C" fn handle_property_changed(
} }
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to parse D-Bus response for PropertyChanged: {:?}", "Failed to parse D-Bus response for PropertyChanged: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
0 as libc::c_int 0 as libc::c_int
@ -711,7 +721,7 @@ unsafe extern "C" fn dbus_event(
} }
if count < 0 as libc::c_int { if count < 0 as libc::c_int {
log::error!( log::error!(
"sd_bus_process failed, exiting: {:?}", "sd_bus_process failed, exiting: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
sway_terminate(0 as libc::c_int); sway_terminate(0 as libc::c_int);
@ -739,7 +749,7 @@ unsafe extern "C" fn set_session() {
(b"auto\0" as *const u8).cast::<libc::c_char>(), (b"auto\0" as *const u8).cast::<libc::c_char>(),
); );
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
log::debug!("GetSession failed: {:?}", error.message); log::debug!("GetSession failed: {}", read_str(error.message));
sd_bus_error_free(&mut error); sd_bus_error_free(&mut error);
sd_bus_message_unref(msg); sd_bus_message_unref(msg);
ret = sd_bus_call_method( ret = sd_bus_call_method(
@ -754,7 +764,7 @@ unsafe extern "C" fn set_session() {
getpid(), getpid(),
); );
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
log::debug!("GetSessionByPID failed: {:?}", error.message); log::debug!("GetSessionByPID failed: {}", read_str(error.message));
log::error!("Failed to find session"); log::error!("Failed to find session");
current_block = 5197767760103794011; current_block = 5197767760103794011;
} else { } else {
@ -773,7 +783,7 @@ unsafe extern "C" fn set_session() {
log::error!("Failed to read session name"); log::error!("Failed to read session name");
} else { } else {
session_name = strdup(session_name_tmp); session_name = strdup(session_name_tmp);
log::debug!("Using session: {session_name:?}"); log::debug!("Using session: {}", read_str(session_name));
} }
} }
sd_bus_error_free(&mut error); sd_bus_error_free(&mut error);
@ -784,7 +794,7 @@ unsafe extern "C" fn connect_to_bus() {
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to open D-Bus connection: {:?}", "Failed to open D-Bus connection: {}",
strerror(*__errno_location()), strerror(*__errno_location()),
); );
return; return;
@ -820,7 +830,7 @@ unsafe extern "C" fn setup_sleep_listener() {
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to add D-Bus signal match : sleep: {:?}", "Failed to add D-Bus signal match : sleep: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
return; return;
@ -852,7 +862,7 @@ unsafe extern "C" fn setup_lock_listener() {
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to add D-Bus signal match : lock: {:?}", "Failed to add D-Bus signal match : lock: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
} }
@ -878,7 +888,7 @@ unsafe extern "C" fn setup_unlock_listener() {
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to add D-Bus signal match : unlock: {:?}", "Failed to add D-Bus signal match : unlock: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
} }
@ -904,7 +914,7 @@ unsafe extern "C" fn setup_property_changed_listener() {
if ret < 0 as libc::c_int { if ret < 0 as libc::c_int {
*__errno_location() = -ret; *__errno_location() = -ret;
log::error!( log::error!(
"Failed to add D-Bus signal match : property changed: {:?}", "Failed to add D-Bus signal match : property changed: {}",
strerror(*__errno_location()) strerror(*__errno_location())
); );
} }
@ -992,7 +1002,7 @@ unsafe extern "C" fn register_timeout(cmd: *mut swayidle_timeout_cmd, timeout: l
log::debug!("Not registering idle timeout"); log::debug!("Not registering idle timeout");
return; return;
} }
log::debug!("Register with timeout: {timeout:?}"); log::debug!("Register with timeout: {timeout}");
(*cmd).idle_notification = (*cmd).idle_notification =
ext_idle_notifier_v1_get_idle_notification(idle_notifier, timeout as u32, seat); ext_idle_notifier_v1_get_idle_notification(idle_notifier, timeout as u32, seat);
ext_idle_notification_v1_add_listener( ext_idle_notification_v1_add_listener(
@ -1100,7 +1110,10 @@ unsafe extern "C" fn parse_command(
log::error!("Missing command"); log::error!("Missing command");
return ptr::null_mut(); return ptr::null_mut();
} }
log::debug!("Command: {:?}", *argv.offset(0 as libc::c_int as isize)); log::debug!(
"Command: {}",
read_str(*argv.offset(0 as libc::c_int as isize))
);
strdup(*argv.offset(0 as libc::c_int as isize)) strdup(*argv.offset(0 as libc::c_int as isize))
} }
unsafe extern "C" fn build_timeout_cmd( unsafe extern "C" fn build_timeout_cmd(
@ -1116,9 +1129,9 @@ unsafe extern "C" fn build_timeout_cmd(
) as libc::c_int; ) as libc::c_int;
if *__errno_location() != 0 as libc::c_int || i32::from(*endptr) != '\0' as i32 { if *__errno_location() != 0 as libc::c_int || i32::from(*endptr) != '\0' as i32 {
log::error!( log::error!(
"Invalid {:?} parameter '{:?}', it should be a numeric value representing seconds", "Invalid {} parameter '{}', it should be a numeric value representing seconds",
*argv.offset(0 as libc::c_int as isize), read_str(*argv.offset(0 as libc::c_int as isize)),
*argv.offset(1 as libc::c_int as isize), read_str(*argv.offset(1 as libc::c_int as isize)),
); );
exit(-(1 as libc::c_int)); exit(-(1 as libc::c_int));
} }
@ -1173,7 +1186,7 @@ unsafe extern "C" fn parse_sleep(argc: libc::c_int, argv: *mut *mut libc::c_char
&mut *argv.offset(1 as libc::c_int as isize), &mut *argv.offset(1 as libc::c_int as isize),
); );
if !(state.before_sleep_cmd).is_null() { if !(state.before_sleep_cmd).is_null() {
log::debug!("Setup sleep lock: {:?}", state.before_sleep_cmd); log::debug!("Setup sleep lock: {}", read_str(state.before_sleep_cmd));
} }
2 as libc::c_int 2 as libc::c_int
} }
@ -1187,7 +1200,7 @@ unsafe extern "C" fn parse_resume(argc: libc::c_int, argv: *mut *mut libc::c_cha
&mut *argv.offset(1 as libc::c_int as isize), &mut *argv.offset(1 as libc::c_int as isize),
); );
if !(state.after_resume_cmd).is_null() { if !(state.after_resume_cmd).is_null() {
log::debug!("Setup resume hook: {:?}", state.after_resume_cmd,); log::debug!("Setup resume hook: {}", read_str(state.after_resume_cmd));
} }
2 as libc::c_int 2 as libc::c_int
} }
@ -1201,7 +1214,7 @@ unsafe extern "C" fn parse_lock(argc: libc::c_int, argv: *mut *mut libc::c_char)
&mut *argv.offset(1 as libc::c_int as isize), &mut *argv.offset(1 as libc::c_int as isize),
); );
if !(state.logind_lock_cmd).is_null() { if !(state.logind_lock_cmd).is_null() {
log::debug!("Setup lock hook: {:?}", state.logind_lock_cmd,); log::debug!("Setup lock hook: {}", read_str(state.logind_lock_cmd));
} }
2 as libc::c_int 2 as libc::c_int
} }
@ -1215,7 +1228,7 @@ unsafe extern "C" fn parse_unlock(argc: libc::c_int, argv: *mut *mut libc::c_cha
&mut *argv.offset(1 as libc::c_int as isize), &mut *argv.offset(1 as libc::c_int as isize),
); );
if !(state.logind_unlock_cmd).is_null() { if !(state.logind_unlock_cmd).is_null() {
log::debug!("Setup unlock hook: {:?}", state.logind_unlock_cmd,); log::debug!("Setup unlock hook: {}", read_str(state.logind_unlock_cmd));
} }
2 as libc::c_int 2 as libc::c_int
} }
@ -1331,7 +1344,10 @@ unsafe extern "C" fn parse_args(
log::debug!("Got idlehint"); log::debug!("Got idlehint");
i += parse_idlehint(argc - i, &mut *argv.offset(i as isize)); i += parse_idlehint(argc - i, &mut *argv.offset(i as isize));
} else { } else {
log::error!("Unsupported command '{:?}'", *argv.offset(i as isize),); log::error!(
"Unsupported command '{}'",
read_str(*argv.offset(i as isize))
);
return 1 as libc::c_int; return 1 as libc::c_int;
} }
} }
@ -1409,7 +1425,7 @@ unsafe extern "C" fn display_event(
} }
if count < 0 as libc::c_int { if count < 0 as libc::c_int {
log::error!( log::error!(
"wl_display_dispatch failed, exiting: {:?}", "wl_display_dispatch failed, exiting: {}",
strerror(*__errno_location()), strerror(*__errno_location()),
); );
sway_terminate(0 as libc::c_int); sway_terminate(0 as libc::c_int);
@ -1522,7 +1538,7 @@ unsafe extern "C" fn load_config(config_path: *const libc::c_char) -> libc::c_in
parse_idlehint(p.we_wordc as libc::c_int, p.we_wordv); parse_idlehint(p.we_wordc as libc::c_int, p.we_wordv);
} else { } else {
*line.add(i) = 0 as libc::c_int as libc::c_char; *line.add(i) = 0 as libc::c_int as libc::c_char;
log::error!("Unexpected keyword {line:?} in line {lineno}"); log::error!("Unexpected keyword {} in line {lineno}", read_str(line));
free(line.cast::<libc::c_void>()); free(line.cast::<libc::c_void>());
return -(22 as libc::c_int); return -(22 as libc::c_int);
} }
@ -1551,10 +1567,10 @@ unsafe fn main_0(argc: libc::c_int, argv: *mut *mut libc::c_char) -> libc::c_int
if config_load == -(2 as libc::c_int) { if config_load == -(2 as libc::c_int) {
log::debug!("No config file found."); log::debug!("No config file found.");
} else if config_load == -(22 as libc::c_int) { } else if config_load == -(22 as libc::c_int) {
log::error!("Config file {config_path:?} has errors, exiting."); log::error!("Config file {} has errors, exiting.", read_str(config_path));
exit(-(1 as libc::c_int)); exit(-(1 as libc::c_int));
} else { } else {
log::debug!("Loaded config at {config_path:?}",); log::debug!("Loaded config at {}", read_str(config_path));
} }
free(config_path.cast::<libc::c_void>()); free(config_path.cast::<libc::c_void>());
state.event_loop = wl_event_loop_create(); state.event_loop = wl_event_loop_create();
@ -1619,7 +1635,7 @@ unsafe fn main_0(argc: libc::c_int, argv: *mut *mut libc::c_char) -> libc::c_int
if state.seat_name.is_null() { if state.seat_name.is_null() {
log::error!("No seat found"); log::error!("No seat found");
} else { } else {
log::error!("Seat {:?} not found", state.seat_name,); log::error!("Seat {} not found", read_str(state.seat_name));
} }
swayidle_finish(); swayidle_finish();
return -(5 as libc::c_int); return -(5 as libc::c_int);