From 347cdd9cf38e249dc3c845eb78349571f5c08b67 Mon Sep 17 00:00:00 2001 From: AmauryBrodu <60550980+AmauryBrodu@users.noreply.github.com> Date: Thu, 13 Apr 2023 13:23:05 +0200 Subject: [PATCH] corrected filesys --- src/filesys/filesys.rs | 50 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/filesys/filesys.rs b/src/filesys/filesys.rs index e4e4973..2f47453 100644 --- a/src/filesys/filesys.rs +++ b/src/filesys/filesys.rs @@ -56,8 +56,8 @@ pub fn decomp_name(origin_path: String, head: &mut String, tail: &mut String) -> /// - **name** is the complete name (relatively to the root directory). /// its content will be modified! pub fn find_dir(name: &mut String, file_sys : Filesys, drv_disk : DrvDisk) -> i32 { - let directory = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - directory.fetch_from(file_sys.get_dir_file()); + let directory = Directory::init_directory(NUM_DIR_ENTRIES); + directory.fetch_from(file_sys.get_dir_file(), drv_disk); let mut sector = DIRECTORY_SECTOR; let mut dirname = String::from(""); @@ -74,7 +74,7 @@ pub fn find_dir(name: &mut String, file_sys : Filesys, drv_disk : DrvDisk) -> i3 let file = OpenFile::open_file(sector); if file.hdr.is_dir() { - directory.fetch_from(file); + directory.fetch_from(file, drv_disk); } else { return -1; } @@ -104,7 +104,7 @@ impl Filesys { pub fn init_filesys(format: bool, mut drv_disk : DrvDisk) -> Filesys { if format { let mut free_map = BitMap::init_bitmap(disk::NUM_SECTORS as usize); - let mut directory = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); + let mut directory = Directory::init_directory(NUM_DIR_ENTRIES); free_map.mark(FREE_MAP_SECTOR as usize); free_map.mark(DIRECTORY_SECTOR as usize); @@ -124,7 +124,7 @@ impl Filesys { let directory_file = OpenFile::open_file(DIRECTORY_SECTOR); free_map.write_back(&mut free_map_file, &mut drv_disk); - directory.write_back(directory_file); + directory.write_back(directory_file, drv_disk); Filesys { free_map_file, @@ -163,20 +163,20 @@ impl Filesys { /// /// - **name** is the name of file to be created (NOT MODIFIED) /// - **initialSize** is the size of file to be created - pub fn create(&mut self, name: String, initial_size: i32, file_sys : Filesys, mut drv_disk : DrvDisk) -> Result<(), ErrorCode> { + pub fn create(&mut self, name: String, initial_size: i32, mut drv_disk : DrvDisk) -> Result<(), ErrorCode> { //lock.acquire(); let mut dir_name = name.clone(); - let dir_sector = find_dir(&mut dir_name, file_sys, drv_disk); + let dir_sector = find_dir(&mut dir_name, *self, drv_disk); if dir_sector == ERROR { //lock.release(); return Err(ErrorCode::InexistFileError); } let dir_file = OpenFile::open_file(dir_sector); - let directory = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - directory.fetch_from(dir_file); + let mut directory = Directory::init_directory(NUM_DIR_ENTRIES); + directory.fetch_from(dir_file, drv_disk); if directory.find(dir_name) != ERROR { //lock.release(); @@ -215,7 +215,7 @@ impl Filesys { // everthing worked, flush all changes back to disk hdr.write_back(sector, &mut drv_disk); - directory.write_back(dir_file); + directory.write_back(dir_file, drv_disk); free_map.write_back(&mut self.free_map_file, &mut drv_disk); //lock.release(); @@ -243,8 +243,8 @@ impl Filesys { // Read the directory from disk let dir_file = OpenFile::open_file(dir_sector); - let directory = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - directory.fetch_from(dir_file); + let directory = Directory::init_directory(NUM_DIR_ENTRIES); + directory.fetch_from(dir_file, drv_disk); // Find the file in the directory let sector = directory.find(dir_name); @@ -282,8 +282,8 @@ impl Filesys { // Fetch the directory from the disk let dir_file = OpenFile::open_file(dir_sector); - let directory = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - directory.fetch_from(dir_file); + let mut directory = Directory::init_directory(NUM_DIR_ENTRIES); + directory.fetch_from(dir_file, drv_disk); // Look for the file in the directory let sector = directory.find(dir_name); @@ -315,7 +315,7 @@ impl Filesys { // Flush everything to disk free_map.write_back(&mut self.free_map_file, &mut drv_disk); - directory.write_back(dir_file); + directory.write_back(dir_file, drv_disk); Ok(()) } @@ -375,8 +375,8 @@ impl Filesys { // Fetch it from disk let parent_dir_file = OpenFile::open_file(parent_sector); - let parent_dir = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - parent_dir.fetch_from(parent_dir_file); + let mut parent_dir = Directory::init_directory(NUM_DIR_ENTRIES); + parent_dir.fetch_from(parent_dir_file, drv_disk); // Check that the directory does not exit yet if parent_dir.find(dir_name) >= 0 { @@ -414,11 +414,11 @@ impl Filesys { // New directory (initially empty) let new_dir_file = OpenFile::open_file(hdr_sector); - let new_dir = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - new_dir.write_back(new_dir_file); + let new_dir = Directory::init_directory(NUM_DIR_ENTRIES); + new_dir.write_back(new_dir_file, drv_disk); // Parent directory - parent_dir.write_back(parent_dir_file); + parent_dir.write_back(parent_dir_file, drv_disk); free_map.write_back(&mut self.free_map_file, &mut drv_disk); Ok(()) @@ -447,8 +447,8 @@ impl Filesys { // Fetch it from disk let parent_dir_file = OpenFile::open_file(parent_sector); - let parent_dir = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - parent_dir.fetch_from(parent_dir_file); + let mut parent_dir = Directory::init_directory(NUM_DIR_ENTRIES); + parent_dir.fetch_from(parent_dir_file, drv_disk); // Check that the directory to be removed exist let the_dir_sector = parent_dir.find(dir_name); @@ -467,8 +467,8 @@ impl Filesys { // Fetch its contents from the disk let the_dir_file = OpenFile::open_file(the_dir_sector); - let the_dir = Directory::init_directory(NUM_DIR_ENTRIES, drv_disk); - the_dir.fetch_from(the_dir_file); + let mut the_dir = Directory::init_directory(NUM_DIR_ENTRIES); + the_dir.fetch_from(the_dir_file, drv_disk); // Check that is is empty if !the_dir.is_empty() { @@ -490,7 +490,7 @@ impl Filesys { // Flush everything to disk free_map.write_back(&mut self.free_map_file, &mut drv_disk); - parent_dir.write_back(parent_dir_file); + parent_dir.write_back(parent_dir_file, drv_disk); Ok(()) }