///|
fn ascii(text : String) -> Bytes {
Bytes::makei(text.length(), i => text[i].to_int().to_byte())
}
///|
fn main {
let vol = @fat.format_volume({
kind: @fat.Fat12,
bytes_per_sector: 512,
total_sectors: 160,
volume_label: "FWIMG",
volume_id: 0x46574D47,
}).unwrap()
vol.mkdir_p("/payload").unwrap()
let blob = ascii("firmware-payload-v1")
vol.write_file("/payload/app.bin", blob).unwrap()
let got = vol.read_file("/payload/app.bin").unwrap()
println("packed \{got.length()} bytes into \{vol.kind().name()}")
println(@fat.hex_encode(got))
let image = vol.to_bytes()
println(
"image \{image.length()} bytes free_clusters=\{vol.free_clusters().unwrap()}",
)
let mounted = @fat.mount_bytes(image).unwrap()
let again = mounted.read_file("/payload/app.bin").unwrap()
println("remount \{again.length()} bytes")
}