pub(crate) use fat_entry::*;
pub(crate) use fat_reader::*;
pub(crate) use fat_writer::*;
use crate::VfatRsError::CheckedMulFailed;
use crate::cache::CachedPartition;
use crate::formats::cluster_id::ClusterId;
use crate::{SectorId, error};
mod fat_entry;
mod fat_reader;
mod fat_writer;
fn get_params(device: &CachedPartition, cluster_id: ClusterId) -> error::Result<(SectorId, usize)> {
let fat_entries_per_sector = device.sector_size / FAT_ENTRY_SIZE;
let cluster_id_val = u32::from(cluster_id);
let containing_sector = cluster_id_val / fat_entries_per_sector as u32;
let offset_in_sector = ((cluster_id_val % fat_entries_per_sector as u32) as usize)
.checked_mul(FAT_ENTRY_SIZE)
.ok_or(CheckedMulFailed)?;
let sector = device.fat_start_sector + containing_sector;
Ok((sector, offset_in_sector))
}