diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-06-13 16:32:46 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-06-13 16:34:57 +0200 |
| commit | 7645358ddf5a78f777a7a419ba1b43b737d70588 (patch) | |
| tree | dad72ea08ad59394e325018fc411f32ac620fb96 | |
| parent | 0f2236daa09c30cb2f30e9b1ee2033cba7e686a9 (diff) | |
| download | mullvadvpn-7645358ddf5a78f777a7a419ba1b43b737d70588.tar.xz mullvadvpn-7645358ddf5a78f777a7a419ba1b43b737d70588.zip | |
More correct errors from path functions
| -rw-r--r-- | mullvad-paths/src/cache.rs | 14 | ||||
| -rw-r--r-- | mullvad-paths/src/lib.rs | 9 | ||||
| -rw-r--r-- | mullvad-paths/src/logs.rs | 2 | ||||
| -rw-r--r-- | mullvad-paths/src/settings.rs | 8 |
4 files changed, 20 insertions, 13 deletions
diff --git a/mullvad-paths/src/cache.rs b/mullvad-paths/src/cache.rs index cb47d4eea7..3f0b7130f9 100644 --- a/mullvad-paths/src/cache.rs +++ b/mullvad-paths/src/cache.rs @@ -8,7 +8,7 @@ use std::path::PathBuf; /// one if that variable is unset. pub fn cache_dir() -> Result<PathBuf> { let dir = get_cache_dir()?; - fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; + fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?; Ok(dir) } @@ -21,15 +21,13 @@ fn get_cache_dir() -> Result<PathBuf> { #[cfg(target_os = "linux")] fn get_default_cache_dir() -> Result<PathBuf> { - use std::fs; - - let dir = PathBuf::from("/var/cache/mullvad-daemon"); - fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; - Ok(dir) + Ok(PathBuf::from("/var/cache/mullvad-daemon")) } #[cfg(any(target_os = "macos", windows))] fn get_default_cache_dir() -> Result<PathBuf> { - ::app_dirs::get_app_root(::app_dirs::AppDataType::UserCache, &::metadata::APP_INFO) - .chain_err(|| ErrorKind::CreateDirFailed) + Ok(::app_dirs::get_app_root( + ::app_dirs::AppDataType::UserCache, + &::metadata::APP_INFO, + )?) } diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs index 4235cb1824..24e1e2e047 100644 --- a/mullvad-paths/src/lib.rs +++ b/mullvad-paths/src/lib.rs @@ -5,6 +5,7 @@ extern crate error_chain; #[macro_use] extern crate log; +use std::path::PathBuf; #[cfg(any(windows, target_os = "macos"))] mod metadata { @@ -21,10 +22,16 @@ mod metadata { error_chain! { errors { - CreateDirFailed { description("Failed to create directory") } + CreateDirFailed(path: PathBuf) { + description("Failed to create directory") + display("Failed to create directory {}", path.display()) + } #[cfg(windows)] NoProgramDataDir { description("Missing %ALLUSERSPROFILE% environment variable") } } + foreign_links { + AppDirs(app_dirs::AppDirsError) #[cfg(any(windows, target_os = "macos"))]; + } } mod cache; diff --git a/mullvad-paths/src/logs.rs b/mullvad-paths/src/logs.rs index 4f67753e5b..a7e1e17689 100644 --- a/mullvad-paths/src/logs.rs +++ b/mullvad-paths/src/logs.rs @@ -8,7 +8,7 @@ use std::path::PathBuf; /// one if that variable is unset. pub fn log_dir() -> Result<PathBuf> { let dir = get_log_dir()?; - fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; + fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?; Ok(dir) } diff --git a/mullvad-paths/src/settings.rs b/mullvad-paths/src/settings.rs index f45b110f06..a7c879e32d 100644 --- a/mullvad-paths/src/settings.rs +++ b/mullvad-paths/src/settings.rs @@ -8,7 +8,7 @@ use std::path::PathBuf; /// one if that variable is unset. pub fn settings_dir() -> Result<PathBuf> { let dir = get_settings_dir()?; - fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; + fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed(dir.clone()))?; Ok(dir) } @@ -26,6 +26,8 @@ fn get_default_settings_dir() -> Result<PathBuf> { #[cfg(windows)] fn get_default_settings_dir() -> Result<PathBuf> { - ::app_dirs::get_app_root(::app_dirs::AppDataType::UserConfig, &::metadataAPP_INFO) - .chain_err(|| ErrorKind::CreateDirFailed) + Ok(::app_dirs::get_app_root( + ::app_dirs::AppDataType::UserConfig, + &::metadata::APP_INFO, + )?) } |
