summaryrefslogtreecommitdiffhomepage
path: root/mullvad-paths/src
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-06-12 15:05:57 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-06-13 16:34:56 +0200
commit4d264ddcb069cb9efcf4f4f63e85f56277fa513a (patch)
tree7acce42444d84506a68a565b02820f2adeba9565 /mullvad-paths/src
parenta87ef879f22606a6f18ff80222d8035f0ca797d2 (diff)
downloadmullvadvpn-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.rs4
-rw-r--r--mullvad-paths/src/logs.rs33
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))
+}