32 lines
627 B
Rust
32 lines
627 B
Rust
#![no_std]
|
|
#![no_main]
|
|
|
|
#[macro_use]
|
|
extern crate user_lib;
|
|
extern crate alloc;
|
|
|
|
use user_lib::{
|
|
open,
|
|
OpenFlags,
|
|
close,
|
|
read,
|
|
};
|
|
use alloc::string::String;
|
|
|
|
#[no_mangle]
|
|
pub fn main(argc: usize, argv: &[&str]) -> i32 {
|
|
assert!(argc == 2);
|
|
let fd = open(argv[1], OpenFlags::RDONLY);
|
|
if fd == -1 {
|
|
panic!("Error occured when opening file");
|
|
}
|
|
let fd = fd as usize;
|
|
let mut buf = [0u8; 256];
|
|
loop {
|
|
let size = read(fd, &mut buf) as usize;
|
|
if size == 0 { break; }
|
|
println!("{}", core::str::from_utf8(&buf[..size]).unwrap());
|
|
}
|
|
close(fd);
|
|
0
|
|
}
|