forked from AbleOS/ableos
rootfs changes
This commit is contained in:
parent
f61d4fe9e7
commit
a78570b85f
|
@ -1,24 +1,23 @@
|
|||
use alloc::{string::String, vec::Vec};
|
||||
use alloc::{
|
||||
format,
|
||||
string::{String, ToString},
|
||||
vec::Vec,
|
||||
};
|
||||
use ext2::{
|
||||
fs::{sync::Synced, Ext2},
|
||||
sector::Size1024,
|
||||
fs::{
|
||||
sync::{Inode, Synced},
|
||||
Ext2,
|
||||
},
|
||||
sector::{SectorSize, Size1024},
|
||||
volume::Volume,
|
||||
};
|
||||
|
||||
/// Experimental scratchpad for testing.
|
||||
pub fn scratchpad() {
|
||||
let mut fs = load_fs();
|
||||
{
|
||||
let found = fs.open(b"/home/able/kernel.md", &OpenOptions::new());
|
||||
|
||||
assert!(found.is_ok());
|
||||
let inode = found.unwrap();
|
||||
let mut vec = Vec::new();
|
||||
assert!(inode.read_to_end(&mut vec).is_ok());
|
||||
|
||||
println!("{}", String::from_utf8_lossy(&vec));
|
||||
}
|
||||
|
||||
// let x = fs.create_dir(b"/config/", &DirOptions::new());
|
||||
let root = fs.root_inode();
|
||||
walk(&fs, fs.root_inode(), String::new());
|
||||
}
|
||||
|
||||
fn load_fs() -> Synced<Ext2<Size1024, Vec<u8>>> {
|
||||
|
@ -27,23 +26,6 @@ fn load_fs() -> Synced<Ext2<Size1024, Vec<u8>>> {
|
|||
let mut volume = Vec::new();
|
||||
volume.extend_from_slice(file);
|
||||
|
||||
/*
|
||||
let fs = Ext2::<Size512, _>::new(volume);
|
||||
|
||||
match fs {
|
||||
Ok(filesystem) => {
|
||||
info!("{}", filesystem.total_inodes_count());
|
||||
|
||||
let vers = filesystem.version();
|
||||
info!("version: {}.{}", vers.0, vers.1);
|
||||
}
|
||||
|
||||
Err(_) => todo!(),
|
||||
}
|
||||
|
||||
*/
|
||||
// let abc: Result<, _> = Synced::new(volume);
|
||||
|
||||
let fs = Synced::<Ext2<Size1024, _>>::new(volume);
|
||||
assert!(
|
||||
fs.is_ok(),
|
||||
|
@ -57,3 +39,29 @@ fn load_fs() -> Synced<Ext2<Size1024, Vec<u8>>> {
|
|||
}
|
||||
|
||||
use genfs::{DirOptions, Fs, OpenOptions};
|
||||
use serde::__private::from_utf8_lossy;
|
||||
|
||||
use crate::{arch::drivers::serial, serial_println};
|
||||
|
||||
fn walk<'vol, S: SectorSize, V: Volume<u8, S>>(
|
||||
fs: &'vol Synced<Ext2<S, V>>,
|
||||
inode: Inode<S, V>,
|
||||
name: String,
|
||||
) {
|
||||
inode.directory().map(|dir| {
|
||||
for entry in dir {
|
||||
assert!(entry.is_ok());
|
||||
let entry = entry.unwrap();
|
||||
let entry_name = from_utf8_lossy(&entry.name);
|
||||
|
||||
println!("{}/{} => {}", name, entry_name, entry.inode,);
|
||||
if entry_name != "." && entry_name != ".." {
|
||||
walk(
|
||||
fs,
|
||||
fs.inode_nth(entry.inode).unwrap(),
|
||||
format!("{}/{}", name, entry_name),
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
Hi there :>$RED$
|
Loading…
Reference in a new issue