#![no_std]
#![no_main]
#[macro_use]
extern crate user_lib;
extern crate alloc;
use user_lib::{close, open, read, OpenFlags};
// 教学目标:
// 实现最小版 cat,验证按块循环 read 直到 EOF 的文件读取模式。
#[unsafe(no_mangle)]
pub extern "C" fn main() -> i32 {
let fd = open("filea\0", 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
}