#![no_std] #![no_main] use lancer_user::path::extract_filename; use lancer_user::{println, syscall}; const BOOT_MODULE_COUNT: u64 = 7; #[unsafe(no_mangle)] pub extern "C" fn lancer_main() -> ! { println!("Built-in commands:"); println!(" exit - close session"); println!(" whoami - show auth method"); println!("\nAvailable programs:"); let mut dummy = [0u8; 0]; let total = syscall::module_info(u64::MAX, &mut dummy); match total > 0 { true => { let mut path_buf = [0u8; 128]; let mut found = false; (BOOT_MODULE_COUNT..total as u64).for_each(|i| { path_buf = [0u8; 128]; let path_len = syscall::module_info(i, &mut path_buf); if path_len > 0 { let used = (path_len as usize).min(path_buf.len()); let filename = extract_filename(&path_buf[..used]); if let Ok(name) = core::str::from_utf8(filename) { println!(" {}", name); } found = true; } }); if !found { println!(" (none)"); } } false => { println!(" (none)"); } } syscall::exit() }