style: cargo fmt kernel crates
This commit is contained in:
@@ -19,7 +19,9 @@ impl BootFat16 {
|
||||
}
|
||||
|
||||
let bytes_per_sector = u16::from_le_bytes([boot_sector[11], boot_sector[12]]);
|
||||
if bytes_per_sector != SECTOR_SIZE as u16 { return None; }
|
||||
if bytes_per_sector != SECTOR_SIZE as u16 {
|
||||
return None;
|
||||
}
|
||||
|
||||
let sectors_per_cluster = boot_sector[13];
|
||||
let reserved_sectors = u16::from_le_bytes([boot_sector[14], boot_sector[15]]);
|
||||
@@ -50,7 +52,9 @@ impl BootFat16 {
|
||||
fn to_fat_name(name: &[u8]) -> [u8; 11] {
|
||||
let mut fat = [b' '; 11];
|
||||
let dot_pos = name.iter().position(|&b| b == b'.').unwrap_or(name.len());
|
||||
for i in 0..dot_pos.min(8) { fat[i] = name[i].to_ascii_uppercase(); }
|
||||
for i in 0..dot_pos.min(8) {
|
||||
fat[i] = name[i].to_ascii_uppercase();
|
||||
}
|
||||
if dot_pos < name.len() {
|
||||
for i in 0..(name.len() - dot_pos - 1).min(3) {
|
||||
fat[8 + i] = name[dot_pos + 1 + i].to_ascii_uppercase();
|
||||
@@ -67,7 +71,9 @@ pub fn read_file_from_disk(
|
||||
let mut sector_buf = [0u8; SECTOR_SIZE];
|
||||
|
||||
// Read boot sector
|
||||
if !blk.read_sector(0, &mut sector_buf) { return None; }
|
||||
if !blk.read_sector(0, &mut sector_buf) {
|
||||
return None;
|
||||
}
|
||||
let fs = BootFat16::parse(§or_buf)?;
|
||||
|
||||
let fat_name = to_fat_name(filename);
|
||||
@@ -78,25 +84,37 @@ pub fn read_file_from_disk(
|
||||
let mut found = false;
|
||||
|
||||
for s in 0..fs.root_dir_sectors {
|
||||
if !blk.read_sector((fs.root_dir_start + s) as u32, &mut sector_buf) { continue; }
|
||||
if !blk.read_sector((fs.root_dir_start + s) as u32, &mut sector_buf) {
|
||||
continue;
|
||||
}
|
||||
for i in 0..(SECTOR_SIZE / 32) {
|
||||
let off = i * 32;
|
||||
if sector_buf[off] == 0x00 { break; }
|
||||
if sector_buf[off] == 0xE5 { continue; }
|
||||
if sector_buf[off] == 0x00 {
|
||||
break;
|
||||
}
|
||||
if sector_buf[off] == 0xE5 {
|
||||
continue;
|
||||
}
|
||||
if sector_buf[off..off + 11] == fat_name {
|
||||
first_cluster = u16::from_le_bytes([sector_buf[off + 26], sector_buf[off + 27]]);
|
||||
file_size = u32::from_le_bytes([
|
||||
sector_buf[off + 28], sector_buf[off + 29],
|
||||
sector_buf[off + 30], sector_buf[off + 31],
|
||||
sector_buf[off + 28],
|
||||
sector_buf[off + 29],
|
||||
sector_buf[off + 30],
|
||||
sector_buf[off + 31],
|
||||
]);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if found { break; }
|
||||
if found {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if !found { return None; }
|
||||
if !found {
|
||||
return None;
|
||||
}
|
||||
|
||||
let size = (file_size as usize).min(out_buf.len());
|
||||
let mut read = 0;
|
||||
@@ -105,9 +123,13 @@ pub fn read_file_from_disk(
|
||||
|
||||
while read < size && cluster >= 2 && cluster < 0xFFF8 {
|
||||
for s in 0..sectors_per_cluster {
|
||||
if read >= size { break; }
|
||||
if read >= size {
|
||||
break;
|
||||
}
|
||||
let sector = fs.cluster_to_sector(cluster) + s;
|
||||
if !blk.read_sector(sector, &mut sector_buf) { return Some(read); }
|
||||
if !blk.read_sector(sector, &mut sector_buf) {
|
||||
return Some(read);
|
||||
}
|
||||
let chunk = (size - read).min(SECTOR_SIZE);
|
||||
out_buf[read..read + chunk].copy_from_slice(§or_buf[..chunk]);
|
||||
read += chunk;
|
||||
@@ -117,7 +139,9 @@ pub fn read_file_from_disk(
|
||||
let fat_offset = (cluster as u32) * 2;
|
||||
let fat_sector = fs.reserved_sectors as u32 + fat_offset / SECTOR_SIZE as u32;
|
||||
let fat_byte = (fat_offset % SECTOR_SIZE as u32) as usize;
|
||||
if !blk.read_sector(fat_sector, &mut sector_buf) { break; }
|
||||
if !blk.read_sector(fat_sector, &mut sector_buf) {
|
||||
break;
|
||||
}
|
||||
cluster = u16::from_le_bytes([sector_buf[fat_byte], sector_buf[fat_byte + 1]]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user