From 6431cbc2d079c27abd230ab546043d75e4fe15d6 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Thu, 11 Aug 2016 22:55:25 +0200 Subject: [PATCH] Write the FAT32 BS and FAT32 IS --- programs/mkfs/src/main.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/programs/mkfs/src/main.cpp b/programs/mkfs/src/main.cpp index 48b22f90..b3c59d3a 100644 --- a/programs/mkfs/src/main.cpp +++ b/programs/mkfs/src/main.cpp @@ -29,14 +29,26 @@ int main(int argc, char* argv[]){ std::string fs(fs_str); if(fs == "fat32"){ + // Open the device file + auto fd = open(device_str); + + if(!fd.valid()){ + printf("mkfs: open error: %s\n", std::error_message(fd.error())); + exit(1); + } + + // Get the size of the device + uint64_t size = 0; auto code = ioctl(device_str, ioctl_request::GET_BLK_SIZE, &size); if(code){ - printf("mkfs: error: %s\n", std::error_message(code)); + printf("mkfs: ioctl error: %s\n", std::error_message(code)); exit(1); } + // Start computing and writing the FAT32 values + printf("mkfs: Creating Fat32 filesystem on %s\n", device_str); printf("mkfs: Device size: %m\n", size); @@ -79,6 +91,14 @@ int main(int argc, char* argv[]){ std::copy_n(&fat_bs->file_system_type[0], "FAT32", 5); fat_bs->signature = 0xAA55; + // Write the FAT BS + auto status = write(*fd, reinterpret_cast(fat_bs), sector_size, 0); + + if(!status.valid()){ + printf("mkfs: write error: %s\n", std::error_message(status.error())); + exit(1); + } + // TODO Write fat_bs to write auto* fat_is = new fat32::fat_is_t(); @@ -89,7 +109,13 @@ int main(int argc, char* argv[]){ fat_is->signature_middle = 0x72724161; fat_is->signature_end = 0x000055AA; - // TODO Write fat_bs + // Write the FAT IS + status = write(*fd, reinterpret_cast(fat_is), sector_size, sector_size); + + if(!status.valid()){ + printf("mkfs: write error: %s\n", std::error_message(status.error())); + exit(1); + } //TODO Write FAT