aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-05-29 02:12:24 -0400
committerJesse Luehrs <doy@tozt.net>2020-05-29 02:12:24 -0400
commit976e602f6aa390eb7a8bb86a15a129eb96203dcf (patch)
tree6599ef3bb5394919eb1914dc3a416fa103dd6431 /src
parent41a1f07330d3b6680f1ee84b38b83053f7053408 (diff)
downloadrbw-976e602f6aa390eb7a8bb86a15a129eb96203dcf.tar.gz
rbw-976e602f6aa390eb7a8bb86a15a129eb96203dcf.zip
don't require setting XDG_RUNTIME_DIR
Diffstat (limited to 'src')
-rw-r--r--src/dirs.rs18
1 files changed, 15 insertions, 3 deletions
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(),
+ }
}