summaryrefslogtreecommitdiffstats
path: root/melib
diff options
context:
space:
mode:
authorManos Pitsidianakis <el13635@mail.ntua.gr>2020-11-09 03:36:40 +0200
committerManos Pitsidianakis <el13635@mail.ntua.gr>2020-11-09 03:36:40 +0200
commitf0800f38a8f582dddb651623fa61a66ead1e90e1 (patch)
tree08fbc1cada203ec0aa260a43ffd1f0766277eff6 /melib
parenta34f0aac5ba1ece6d55acc28b7924e3025e60e02 (diff)
melib/maildir: make MaildirOp return Result<PathBuf>
Diffstat (limited to 'melib')
-rw-r--r--melib/src/backends/maildir.rs12
1 files 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<PathBuf> {
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<Flag> {
- let path = self.path();
+ let path = self.path()?;
let ret = Ok(path.flags());
Ok(Box::pin(async move { ret }))
}