diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-06-13 16:00:03 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-06-13 16:34:57 +0200 |
| commit | 5309b07ba21a4b3241e304a06f78c8a836bfff37 (patch) | |
| tree | 27d0d97bf6e597833511bc1e2ab40c73043f1660 | |
| parent | 7645358ddf5a78f777a7a419ba1b43b737d70588 (diff) | |
| download | mullvadvpn-5309b07ba21a4b3241e304a06f78c8a836bfff37.tar.xz mullvadvpn-5309b07ba21a4b3241e304a06f78c8a836bfff37.zip | |
Refactor out get_program_data_dir
| -rw-r--r-- | mullvad-paths/src/lib.rs | 32 | ||||
| -rw-r--r-- | mullvad-paths/src/logs.rs | 4 | ||||
| -rw-r--r-- | mullvad-paths/src/rpc_address.rs | 4 |
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() } |
