summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-06-13 16:32:46 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-06-13 16:34:57 +0200
commit7645358ddf5a78f777a7a419ba1b43b737d70588 (patch)
treedad72ea08ad59394e325018fc411f32ac620fb96
parent0f2236daa09c30cb2f30e9b1ee2033cba7e686a9 (diff)
downloadmullvadvpn-7645358ddf5a78f777a7a419ba1b43b737d70588.tar.xz
mullvadvpn-7645358ddf5a78f777a7a419ba1b43b737d70588.zip
More correct errors from path functions
-rw-r--r--mullvad-paths/src/cache.rs14
-rw-r--r--mullvad-paths/src/lib.rs9
-rw-r--r--mullvad-paths/src/logs.rs2
-rw-r--r--mullvad-paths/src/settings.rs8
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,
+ )?)
}