diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-06-12 15:05:57 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-06-13 16:34:56 +0200 |
| commit | 4d264ddcb069cb9efcf4f4f63e85f56277fa513a (patch) | |
| tree | 7acce42444d84506a68a565b02820f2adeba9565 /mullvad-paths/src | |
| parent | a87ef879f22606a6f18ff80222d8035f0ca797d2 (diff) | |
| download | mullvadvpn-4d264ddcb069cb9efcf4f4f63e85f56277fa513a.tar.xz mullvadvpn-4d264ddcb069cb9efcf4f4f63e85f56277fa513a.zip | |
Move log dir stuff to mullvad-paths
Diffstat (limited to 'mullvad-paths/src')
| -rw-r--r-- | mullvad-paths/src/lib.rs | 4 | ||||
| -rw-r--r-- | mullvad-paths/src/logs.rs | 33 |
2 files changed, 37 insertions, 0 deletions
diff --git a/mullvad-paths/src/lib.rs b/mullvad-paths/src/lib.rs index 4629d8efb1..8447a77d69 100644 --- a/mullvad-paths/src/lib.rs +++ b/mullvad-paths/src/lib.rs @@ -18,12 +18,16 @@ const APP_INFO: AppInfo = app_dirs::AppInfo { error_chain! { errors { CreateDirFailed { description("Failed to create directory") } + #[cfg(windows)] NoProgramDataDir { description("Missing %ALLUSERSPROFILE% environment variable") } } } mod cache; pub use cache::get_cache_dir; +mod logs; +pub use logs::{get_log_dir, log_dir}; + mod resources; pub use resources::get_resource_dir; diff --git a/mullvad-paths/src/logs.rs b/mullvad-paths/src/logs.rs new file mode 100644 index 0000000000..822fc92c4c --- /dev/null +++ b/mullvad-paths/src/logs.rs @@ -0,0 +1,33 @@ +use {ErrorKind, Result, ResultExt}; + +use std::fs; +use std::env; +use std::path::PathBuf; + +/// Creates and returns the logging directory. +pub fn log_dir() -> Result<PathBuf> { + let dir = get_log_dir()?; + fs::create_dir_all(&dir).chain_err(|| ErrorKind::CreateDirFailed)?; + Ok(dir) +} + +/// Get the logging directory, but don't try to create it. +pub fn get_log_dir() -> Result<PathBuf> { + match env::var_os("MULLVAD_LOG_DIR") { + Some(path) => Ok(PathBuf::from(path)), + None => get_default_log_dir(), + } +} + +#[cfg(unix)] +fn get_default_log_dir() -> Result<PathBuf> { + Ok(PathBuf::from("/var/log/mullvad-daemon")) +} + +#[cfg(windows)] +fn get_default_log_dir() -> Result<PathBuf> { + let program_data_dir = Path::new( + ::std::env::var_os("ALLUSERSPROFILE").ok_or_else(|| ErrorKind::NoProgramDataDir)?, + ); + Ok(program_data_dir.join(::PRODUCT_NAME)) +} |
