From f0800f38a8f582dddb651623fa61a66ead1e90e1 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Mon, 9 Nov 2020 03:36:40 +0200 Subject: [PATCH] melib/maildir: make MaildirOp return Result --- melib/src/backends/maildir.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/melib/src/backends/maildir.rs b/melib/src/backends/maildir.rs index 86b4cd4f..839b40f9 100644 --- a/melib/src/backends/maildir.rs +++ b/melib/src/backends/maildir.rs @@ -67,7 +67,7 @@ impl MaildirOp { slice: None, } } - fn path(&self) -> PathBuf { + fn path(&self) -> Result { let map = self.hash_index.lock().unwrap(); let map = &map[&self.mailbox_hash]; debug!("looking for {} in {} map", self.hash, self.mailbox_hash); @@ -76,15 +76,17 @@ impl MaildirOp { for e in map.iter() { debug!("{:#?}", e); } + return Err(MeliError::new("File not found")); } - if let Some(modif) = &map[&self.hash].modified { + + Ok(if let Some(modif) = &map[&self.hash].modified { match modif { PathMod::Path(ref path) => path.clone(), PathMod::Hash(hash) => map[&hash].to_path_buf(), } } else { map.get(&self.hash).unwrap().to_path_buf() - } + }) } } @@ -94,7 +96,7 @@ impl<'a> BackendOp for MaildirOp { let file = std::fs::OpenOptions::new() .read(true) .write(false) - .open(&self.path())?; + .open(&self.path()?)?; let mut buf_reader = BufReader::new(file); let mut contents = Vec::new(); buf_reader.read_to_end(&mut contents)?; @@ -105,7 +107,7 @@ impl<'a> BackendOp for MaildirOp { } fn fetch_flags(&self) -> ResultFuture { - let path = self.path(); + let path = self.path()?; let ret = Ok(path.flags()); Ok(Box::pin(async move { ret })) }