Fallback to tempdir if runtime is inaccessible

Fixes: https://github.com/sayanarijit/xplr/issues/319
pull/323/head
Arijit Basu 3 years ago committed by Arijit Basu
parent 1b1032d0bd
commit 1756332e5b

@ -1562,9 +1562,9 @@ impl App {
}
};
let config_files = std::iter::once(config_file)
.chain(extra_config_files.into_iter().map(Some))
.filter_map(|x| x);
let config_files = config_file
.into_iter()
.chain(extra_config_files.into_iter());
let mut load_errs = vec![];
for config_file in config_files {
@ -1605,7 +1605,7 @@ impl App {
};
let pid = std::process::id();
let session_path = dirs::runtime_dir()
let mut session_path = dirs::runtime_dir()
.unwrap_or_else(env::temp_dir)
.join("xplr")
.join("session")
@ -1613,6 +1613,16 @@ impl App {
.to_string_lossy()
.to_string();
if fs::create_dir_all(&session_path).is_err() {
session_path = env::temp_dir()
.join("xplr")
.join("session")
.join(&pid.to_string())
.to_string_lossy()
.to_string();
fs::create_dir_all(&session_path)?;
}
let mut explorer_config = ExplorerConfig::default();
if !config.general().show_hidden() {
explorer_config.filters.replace(NodeFilterApplicable::new(
@ -1649,8 +1659,6 @@ impl App {
last_modes: Default::default(),
};
fs::create_dir_all(app.session_path())?;
for err in load_errs {
app = app.log_error(err)?
}

Loading…
Cancel
Save