Nothing to see here, move along
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}