Something went wrong. Try again.
Nothing to see here, move along meow
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#![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; 4096]; 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, text_rest) = net::next_token(rest);
if path_tok.is_empty() { println!("usage: write <path> <text>"); syscall::exit(); }
let text = net::skip_spaces(text_rest);
let mut client = unsafe { fs::init() };
let (parent, basename) = match fs::open_parent(&mut client, 0, path_tok) { Ok(pair) => pair, Err(e) => { println!("write: {}", e.name()); syscall::exit(); } };
let mode = FsRights::from_raw(FsRights::WRITE.raw() | FsRights::CREATE.raw()); let handle = match client.open(parent, basename, mode) { Ok(h) => h, Err(e) => { println!("write: open: {}", e.name()); let _ = client.close(parent); syscall::exit(); } };
match client.truncate(handle, 0) { Ok(()) => {} Err(e) => { println!("write: truncate: {}", e.name()); let _ = client.close(handle); let _ = client.close(parent); syscall::exit(); } }
match text.is_empty() { true => {} false => match client.write(handle, 0, text) { Ok(n) if n < text.len() => { println!("write: partial write ({}/{} bytes)", n, text.len()); } Ok(_) => {} Err(e) => { println!("write: {}", e.name()); } }, }
let _ = client.close(handle); let _ = client.close(parent); syscall::exit()}