extern crate fatfs;
extern crate fscommon;

use std::{fs, io};

use fatfs::{FileSystem, FsOptions};
use fscommon::{BufStream, StreamSlice};

fn main() -> io::Result<()> {
    // Open disk image
    let file = fs::File::open("resources/fat32.img")?;
    // Provide sample partition localization. In real application it should be read from MBR/GPT.
    let first_lba = 0;
    let last_lba = 10000;
    // Create partition using provided start address and size in bytes
    let partition = StreamSlice::new(file, first_lba, last_lba + 1)?;
    // Create buffered stream to optimize file access
    let buf_rdr = BufStream::new(partition);
    // Finally initialize filesystem struct using provided partition
    let fs = FileSystem::new(buf_rdr, FsOptions::new())?;
    // Read and display volume label
    println!("Volume Label: {}", fs.volume_label());
    // other operations...
    Ok(())
}
