X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcommon%2Flogger.rs;h=d83d2391bfe1a6261dc2bb312e2a6a288d26ba16;hb=9c56bca3b719a7e44074225a99d9f97fd05466d3;hp=be0632792af1177fab3c40993f1228486cd5ce61;hpb=9bc6fc2996255514e0d49e3da0655e2f93f14d8c;p=gps-watch.git diff --git a/src/common/logger.rs b/src/common/logger.rs index be06327..d83d239 100644 --- a/src/common/logger.rs +++ b/src/common/logger.rs @@ -323,19 +323,23 @@ impl<'a> Logger<'a> { // Reading the directory entries one by one means // we won't need an as large buffer on the stack. for i in 0..NUM_SECTORS { - let address = i * SECTOR_SIZE; - let mut chunk = [0u8; 4]; + self.read_sector_header(i); + } + } - self.storage.read(address, &mut chunk); + fn read_sector_header(&mut self, sector_index: usize) { + let address = sector_index * SECTOR_SIZE; + let mut chunk = [0u8; 4]; - let sector_header_ptr: *mut SectorHeader = - &mut self.sector_header[i]; + self.storage.read(address, &mut chunk); - unsafe { - core::ptr::copy(chunk.as_ptr(), - sector_header_ptr as *mut u8, - chunk.len()); - } + let sector_header_ptr: *mut SectorHeader = + &mut self.sector_header[sector_index]; + + unsafe { + core::ptr::copy(chunk.as_ptr(), + sector_header_ptr as *mut u8, + chunk.len()); } } @@ -417,7 +421,13 @@ impl<'a> Logger<'a> { self.storage.write(this_sector as usize * SECTOR_SIZE, &self.write_buffer); - self.sectors_written + 1 + self.sectors_written += 1; + + for i in 0..self.sectors_written { + self.read_sector_header((self.first_sector + i) as usize); + } + + self.sectors_written } fn sector_header_iter(&self) -> SectorHeaderIter {