use std::{ ffi::OsString, path::{Path, PathBuf}, }; #[derive(Default)] pub struct File { pub(crate) vector: u16, pub(crate) success: u16, pub(crate) stat_addr: u16, pub(crate) name_addr: u16, pub(crate) length: u16, state: State, } #[derive(Default)] enum State { #[default] Idle, FileRead(std::fs::File), FileWrite(std::fs::File), DirRead, } impl File { pub(crate) fn init_name(&mut self, ram: &[u8; 65536]) { self.success = 0; } pub(crate) fn stat(&mut self, ram: &[u8; 65536]) { // if let Some(path) = &self.path { // PathBuf::from(path) // } } pub(crate) fn delete(&mut self, ram: &[u8; 65536]) { let path = self.path(ram); } } impl File { fn path(&self, ram: &[u8; 65536]) -> Option { let name = ram[self.name_addr as usize..] .iter() .copied() .take_while(|b| *b != b'\0') .collect::>(); let string = String::from_utf8(name).ok()?; let path = PathBuf::from(string); Some(path) } } //luczku kochu chali