diff options
Diffstat (limited to 'melib/src/backends')
-rw-r--r-- | melib/src/backends/maildir.rs | 2 | ||||
-rw-r--r-- | melib/src/backends/maildir/backend.rs | 5 | ||||
-rw-r--r-- | melib/src/backends/mbox.rs | 9 |
3 files changed, 10 insertions, 6 deletions
diff --git a/melib/src/backends/maildir.rs b/melib/src/backends/maildir.rs index e346bd90..6fbb8d10 100644 --- a/melib/src/backends/maildir.rs +++ b/melib/src/backends/maildir.rs @@ -27,6 +27,7 @@ use crate::backends::*; use crate::email::parser; use crate::email::{Envelope, Flag}; use crate::error::{MeliError, Result}; +use crate::shellexpand::ShellExpandTrait; use memmap::{Mmap, Protection}; use std::collections::hash_map::DefaultHasher; @@ -208,6 +209,7 @@ impl MaildirFolder { * mailboxes in user configuration */ let fname = if let Ok(fname) = pathbuf.strip_prefix( PathBuf::from(&settings.root_folder) + .expand() .parent() .unwrap_or_else(|| &Path::new("/")), ) { diff --git a/melib/src/backends/maildir/backend.rs b/melib/src/backends/maildir/backend.rs index e51eec32..ae6984f9 100644 --- a/melib/src/backends/maildir/backend.rs +++ b/melib/src/backends/maildir/backend.rs @@ -28,6 +28,7 @@ use crate::async_workers::*; use crate::conf::AccountSettings; use crate::email::{Envelope, EnvelopeHash, Flag}; use crate::error::{MeliError, Result}; +use crate::shellexpand::ShellExpandTrait; extern crate notify; use self::notify::{watcher, DebouncedEvent, RecursiveMode, Watcher}; @@ -583,7 +584,7 @@ impl MaildirType { } children }; - let root_path = PathBuf::from(settings.root_folder()); + let root_path = PathBuf::from(settings.root_folder()).expand(); if !root_path.exists() { eprintln!( "Configuration error ({}): root_path `{}` is not a valid directory.", @@ -651,7 +652,7 @@ impl MaildirType { name: settings.name().to_string(), folders, hash_indexes, - path: PathBuf::from(settings.root_folder()), + path: root_path, } } fn owned_folder_idx(&self, folder: &Folder) -> FolderHash { diff --git a/melib/src/backends/mbox.rs b/melib/src/backends/mbox.rs index 16368f5d..132db42a 100644 --- a/melib/src/backends/mbox.rs +++ b/melib/src/backends/mbox.rs @@ -33,6 +33,7 @@ use crate::conf::AccountSettings; use crate::email::parser::BytesExt; use crate::email::*; use crate::error::{MeliError, Result}; +use crate::shellexpand::ShellExpandTrait; use fnv::FnvHashMap; use libc; use memmap::{Mmap, Protection}; @@ -548,7 +549,7 @@ impl MailBackend for MboxType { impl MboxType { pub fn new(s: &AccountSettings, _is_subscribed: Box<dyn Fn(&str) -> bool>) -> Self { - let path = Path::new(s.root_folder.as_str()); + let path = Path::new(s.root_folder.as_str()).expand(); if !path.exists() { panic!( "\"root_folder\" {} for account {} is not a valid path.", @@ -557,7 +558,7 @@ impl MboxType { ); } let ret = MboxType { - path: PathBuf::from(path), + path, ..Default::default() }; let name: String = ret @@ -565,12 +566,12 @@ impl MboxType { .file_name() .map(|f| f.to_string_lossy().into()) .unwrap_or(String::new()); - let hash = get_path_hash!(path); + let hash = get_path_hash!(&ret.path); ret.folders.lock().unwrap().insert( hash, MboxFolder { hash, - path: PathBuf::from(path), + path: ret.path.clone(), name, content: Vec::new(), children: Vec::new(), |