#![no_std] #![no_main] use lancer_user::fs::{self, FsRights}; use lancer_user::net; use lancer_user::println; use lancer_user::syscall; #[unsafe(no_mangle)] pub extern "C" fn lancer_main() -> ! { let (rx, _tx) = match net::init() { Some(pair) => pair, None => { lancer_user::show!(net, error, "netsock init failed"); syscall::exit(); } }; let mut args_buf = [0u8; 256]; let args_len = net::recv_args(&rx, &mut args_buf); let args = &args_buf[..args_len]; let (_cmd, rest) = net::next_token(args); let (path_tok, _) = net::next_token(rest); if path_tok.is_empty() { println!("usage: touch "); syscall::exit(); } let mut client = unsafe { fs::init() }; let (parent, basename) = match fs::open_parent(&mut client, 0, path_tok) { Ok(pair) => pair, Err(e) => { println!("touch: {}", e.name()); syscall::exit(); } }; match client.open(parent, basename, FsRights::CREATE) { Ok(h) => { let _ = client.close(h); } Err(e) => { println!("touch: {}", e.name()); } } let _ = client.close(parent); syscall::exit() }