Nothing to see here, move along
at main 45 lines 1.3 kB view raw
1#![no_std] 2#![no_main] 3 4use lancer_user::path::extract_filename; 5use lancer_user::{println, syscall}; 6 7const BOOT_MODULE_COUNT: u64 = 7; 8 9#[unsafe(no_mangle)] 10pub extern "C" fn lancer_main() -> ! { 11 println!("Built-in commands:"); 12 println!(" exit - close session"); 13 println!(" whoami - show auth method"); 14 println!("\nAvailable programs:"); 15 16 let mut dummy = [0u8; 0]; 17 let total = syscall::module_info(u64::MAX, &mut dummy); 18 19 match total > 0 { 20 true => { 21 let mut path_buf = [0u8; 128]; 22 let mut found = false; 23 (BOOT_MODULE_COUNT..total as u64).for_each(|i| { 24 path_buf = [0u8; 128]; 25 let path_len = syscall::module_info(i, &mut path_buf); 26 if path_len > 0 { 27 let used = (path_len as usize).min(path_buf.len()); 28 let filename = extract_filename(&path_buf[..used]); 29 if let Ok(name) = core::str::from_utf8(filename) { 30 println!(" {}", name); 31 } 32 found = true; 33 } 34 }); 35 if !found { 36 println!(" (none)"); 37 } 38 } 39 false => { 40 println!(" (none)"); 41 } 42 } 43 44 syscall::exit() 45}