aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-23 05:16:47 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-23 05:16:47 -0400
commitc5a080d2a03b68949642f1446504a981661a0e54 (patch)
tree72acf1014e12c28fe05b905574e8ac52ff90407b
parent98acea689606fde19152c1709ebf8c4ac85e2714 (diff)
downloadteleterm-c5a080d2a03b68949642f1446504a981661a0e54.tar.gz
teleterm-c5a080d2a03b68949642f1446504a981661a0e54.zip
if the home directory is set to /, treat it as nonexistent
this is how system users typically indicate not having a home directory
-rw-r--r--src/dirs.rs26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/dirs.rs b/src/dirs.rs
index 937cfcb..bd4741d 100644
--- a/src/dirs.rs
+++ b/src/dirs.rs
@@ -22,14 +22,24 @@ impl Dirs {
Ok(())
}
+ fn has_home(&self) -> bool {
+ directories::BaseDirs::new().map_or(false, |dirs| {
+ dirs.home_dir() != std::path::Path::new("/")
+ })
+ }
+
fn global_config_dir(&self) -> &std::path::Path {
std::path::Path::new("/etc/teleterm")
}
fn config_dir(&self) -> Option<&std::path::Path> {
- self.project_dirs
- .as_ref()
- .map(directories::ProjectDirs::config_dir)
+ if self.has_home() {
+ self.project_dirs
+ .as_ref()
+ .map(directories::ProjectDirs::config_dir)
+ } else {
+ None
+ }
}
pub fn config_file(
@@ -57,9 +67,13 @@ impl Dirs {
}
fn data_dir(&self) -> Option<&std::path::Path> {
- self.project_dirs
- .as_ref()
- .map(directories::ProjectDirs::data_dir)
+ if self.has_home() {
+ self.project_dirs
+ .as_ref()
+ .map(directories::ProjectDirs::data_dir)
+ } else {
+ None
+ }
}
pub fn data_file(