summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-06-13 16:00:03 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-06-13 16:34:57 +0200
commit5309b07ba21a4b3241e304a06f78c8a836bfff37 (patch)
tree27d0d97bf6e597833511bc1e2ab40c73043f1660
parent7645358ddf5a78f777a7a419ba1b43b737d70588 (diff)
downloadmullvadvpn-5309b07ba21a4b3241e304a06f78c8a836bfff37.tar.xz
mullvadvpn-5309b07ba21a4b3241e304a06f78c8a836bfff37.zip
Refactor out get_program_data_dir
-rw-r--r--mullvad-paths/src/lib.rs32
-rw-r--r--mullvad-paths/src/logs.rs4
-rw-r--r--mullvad-paths/src/rpc_address.rs4
3 files changed, 22 insertions, 18 deletions
diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs
index 24e1e2e047..12c209c718 100644
--- a/mullvad-paths/src/lib.rs
+++ b/mullvad-paths/src/lib.rs
@@ -7,6 +7,20 @@ extern crate log;
use std::path::PathBuf;
+error_chain! {
+ errors {
+ 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"))];
+ }
+}
+
#[cfg(any(windows, target_os = "macos"))]
mod metadata {
use app_dirs::AppInfo;
@@ -19,18 +33,12 @@ mod metadata {
};
}
-
-error_chain! {
- errors {
- 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"))];
+#[cfg(windows)]
+fn get_program_data_dir() -> Result<PathBuf> {
+ use std::{env, path::Path};
+ match env::var_os("ALLUSERSPROFILE") {
+ Some(dir) => Ok(Path::new(&dir).join(::metadata::PRODUCT_NAME)),
+ None => bail!(ErrorKind::NoProgramDataDir),
}
}
diff --git a/mullvad-paths/src/logs.rs b/mullvad-paths/src/logs.rs
index a7e1e17689..2a6f1a22d6 100644
--- a/mullvad-paths/src/logs.rs
+++ b/mullvad-paths/src/logs.rs
@@ -27,7 +27,5 @@ fn get_default_log_dir() -> Result<PathBuf> {
#[cfg(windows)]
fn get_default_log_dir() -> Result<PathBuf> {
- let program_data_dir =
- Path::new(env::var_os("ALLUSERSPROFILE").ok_or_else(|| ErrorKind::NoProgramDataDir)?);
- Ok(program_data_dir.join(::metadata::PRODUCT_NAME))
+ ::get_program_data_dir()
}
diff --git a/mullvad-paths/src/rpc_address.rs b/mullvad-paths/src/rpc_address.rs
index 781d1ab555..68ed349edf 100644
--- a/mullvad-paths/src/rpc_address.rs
+++ b/mullvad-paths/src/rpc_address.rs
@@ -19,7 +19,5 @@ fn get_default_rpc_address_dir() -> Result<PathBuf> {
#[cfg(windows)]
fn get_default_rpc_address_dir() -> Result<PathBuf> {
- let program_data_dir =
- env::var_os("ALLUSERSPROFILE").ok_or_else(|| ::ErrorKind::NoProgramDataDir)?;
- Ok(Path::new(program_data_dir).join(::metadata::PRODUCT_NAME))
+ ::get_program_data_dir()
}