From 395046ee3f9a3aa4ac0e50012473c4a9fee2af5b Mon Sep 17 00:00:00 2001 From: Red Bear OS Date: Tue, 7 Jul 2026 00:43:12 +0300 Subject: [PATCH] getty/login: diagnostic logging for login prompt tracing --- src/bin/getty.rs | 1 + src/bin/login.rs | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/bin/getty.rs b/src/bin/getty.rs index 75681022d3..6bef7618cd 100644 --- a/src/bin/getty.rs +++ b/src/bin/getty.rs @@ -8,6 +8,7 @@ use std::io::{self, ErrorKind, Read, Stderr, Write}; fn dlog(msg: &str) { let _ = OpenOptions::new() .write(true) + .append(true) .open("/scheme/debug/no-preserve") .and_then(|mut f| writeln!(f, "GETTY {}", msg)); } diff --git a/src/bin/login.rs b/src/bin/login.rs index e620409c62..bc32bc6460 100644 --- a/src/bin/login.rs +++ b/src/bin/login.rs @@ -9,6 +9,7 @@ use std::str; fn dlog(msg: &str) { let _ = OpenOptions::new() .write(true) + .append(true) .open("/scheme/debug/no-preserve") .and_then(|mut f| writeln!(f, "LOGIN {}", msg)); } @@ -16,6 +17,7 @@ fn dlog(msg: &str) { use extra::option::OptionalExt; use redox_users::{All, AllUsers, Config, User}; use termion::input::TermRead; +use termion::raw::IntoRawMode; use userutils::spawn_shell; const _MAN_PAGE: &'static str = /* @MANSTART{login} */ @@ -144,6 +146,15 @@ pub fn main() { dlog("no issue file"); } + match termion::terminal_size() { + Ok((w, h)) => dlog(&format!("terminal_size {}x{}", w, h)), + Err(e) => dlog(&format!("terminal_size error: {}", e)), + } + match io::stdout().into_raw_mode() { + Ok(_rt) => dlog("raw mode ok"), + Err(e) => dlog(&format!("raw mode error: {}", e)), + } + loop { dlog("before liner read_line"); let _ = stdout.write_all(b"DIRECT_PROMPT_TEST"); @@ -159,6 +170,7 @@ pub fn main() { dlog("after liner read_line"); if !user.is_empty() { + dlog(&format!("read user: {}", user)); let stdin = io::stdin(); let mut stdin = stdin.lock(); let sys_users = AllUsers::authenticator(Config::default()).unwrap_or_exit(1); @@ -172,6 +184,7 @@ pub fn main() { } Some(user) => { if user.is_passwd_blank() { + dlog("user blank password, spawning shell"); if let Ok(mut motd) = File::open(MOTD_FILE) { io::copy(&mut motd, &mut stdout).r#try(&mut stderr); stdout.flush().r#try(&mut stderr);