2 releases
0.1.1 | May 17, 2023 |
---|---|
0.1.0 | Apr 22, 2023 |
#1223 in Filesystem
22KB
375 lines
ApeMBR
simple crate to interface between a disk and it's partitions
This crate is especially designed to provide an interface between a disk and a file system library, where both are able to implement embedded_io.
Dead simple, as it should be.
Usage
This crate can be used by adding ape-mbr
to the dependencies in your
project's Cargo.toml
.
[dependencies]
ape-mbr = "0.1.0"
Examples
Here's ape-mbr
being coupled with ape-fatfs
use std::io::prelude::*;
use ape_fatfs::{
fs::{
FsOptions,
FileSystem,
},
io::{
StdIoWrapper
}
};
use ape_mbr::{
PartitionId,
MBR,
};
fn main() {
// Initialize the MBR
let img_file = std::fs::OpenOptions::new().read(true).write(true)
.open("test.img").unwrap();
let img_file = StdIoWrapper::new(img_file);
let mut mbr = MBR::new(img_file).unwrap();
let mut p1 = mbr.get_partition(PartitionId::One).unwrap();
let fs = FileSystem::new(p1, FsOptions::new()).unwrap();
let root_dir = fs.root_dir();
// Write a file
root_dir.create_dir("foo").unwrap();
let mut file = root_dir.create_file("foo/hello.txt").unwrap();
file.truncate().unwrap();
file.write_all(b"Hello World!").unwrap();
// Read a directory
let dir = root_dir.open_dir("foo").unwrap();
for r in dir.iter() {
let entry = r.unwrap();
println!("{}", entry.file_name());
}
}
Dependencies
~305–760KB
~18K SLoC