Nothing to see here, move along
at main 50 lines 1.2 kB view raw
1#![no_std] 2#![no_main] 3 4use lancer_user::fs; 5use lancer_user::net; 6use lancer_user::println; 7use lancer_user::syscall; 8 9#[unsafe(no_mangle)] 10pub extern "C" fn lancer_main() -> ! { 11 let (rx, _tx) = match net::init() { 12 Some(pair) => pair, 13 None => { 14 lancer_user::show!(net, error, "netsock init failed"); 15 syscall::exit(); 16 } 17 }; 18 19 let mut args_buf = [0u8; 256]; 20 let args_len = net::recv_args(&rx, &mut args_buf); 21 let args = &args_buf[..args_len]; 22 23 let (_cmd, rest) = net::next_token(args); 24 let (path_tok, _) = net::next_token(rest); 25 26 if path_tok.is_empty() { 27 println!("usage: rm <path>"); 28 syscall::exit(); 29 } 30 31 let mut client = unsafe { fs::init() }; 32 33 let (parent, basename) = match fs::open_parent(&mut client, 0, path_tok) { 34 Ok(pair) => pair, 35 Err(e) => { 36 println!("rm: {}", e.name()); 37 syscall::exit(); 38 } 39 }; 40 41 match client.unlink(parent, basename) { 42 Ok(()) => {} 43 Err(e) => { 44 println!("rm: {}", e.name()); 45 } 46 } 47 48 let _ = client.close(parent); 49 syscall::exit() 50}