From 976e602f6aa390eb7a8bb86a15a129eb96203dcf Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 29 May 2020 02:12:24 -0400 Subject: don't require setting XDG_RUNTIME_DIR --- src/dirs.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/dirs.rs b/src/dirs.rs index fa063b8..16ce29a 100644 --- a/src/dirs.rs +++ b/src/dirs.rs @@ -1,4 +1,5 @@ use crate::prelude::*; +use std::os::unix::fs::PermissionsExt as _; pub fn make_all() -> Result<()> { let cache_dir = cache_dir(); @@ -6,8 +7,16 @@ pub fn make_all() -> Result<()> { .context(crate::error::CreateDirectory { file: cache_dir })?; let runtime_dir = runtime_dir(); - std::fs::create_dir_all(&runtime_dir) - .context(crate::error::CreateDirectory { file: runtime_dir })?; + std::fs::create_dir_all(&runtime_dir).context( + crate::error::CreateDirectory { + file: runtime_dir.clone(), + }, + )?; + std::fs::set_permissions( + &runtime_dir, + std::fs::Permissions::from_mode(0o700), + ) + .context(crate::error::CreateDirectory { file: runtime_dir })?; let data_dir = data_dir(); std::fs::create_dir_all(&data_dir) @@ -62,5 +71,8 @@ fn data_dir() -> std::path::PathBuf { fn runtime_dir() -> std::path::PathBuf { let project_dirs = directories::ProjectDirs::from("", "", "rbw").unwrap(); - project_dirs.runtime_dir().unwrap().to_path_buf() + match project_dirs.runtime_dir() { + Some(dir) => dir.to_path_buf(), + None => format!("/tmp/rbw-{}", nix::unistd::getuid().as_raw()).into(), + } } -- cgit v1.2.3-54-g00ecf