aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2020-11-25 17:08:43 +0100
committerAram Drevekenin <aram@poor.dev>2020-11-25 17:08:43 +0100
commit489ade6eb8fc113368ec034efa340c157eb45629 (patch)
tree420028d6e36bcdc23a996f872be4ef0514479afd /src
parenthotfix(controls): clear buffer in normal mode (diff)
downloadsl0ppij-489ade6eb8fc113368ec034efa340c157eb45629.tar.gz
sl0ppij-489ade6eb8fc113368ec034efa340c157eb45629.tar.xz
sl0ppij-489ade6eb8fc113368ec034efa340c157eb45629.zip
hotfix(logging): atomically create tmp folders
Diffstat (limited to 'src')
-rw-r--r--src/main.rs7
-rw-r--r--src/utils/consts.rs3
-rw-r--r--src/utils/logging.rs14
3 files changed, 21 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 0126069b..04e5d8de 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -26,7 +26,10 @@ use crate::layout::Layout;
use crate::os_input_output::{get_os_input, OsApi};
use crate::pty_bus::{PtyBus, PtyInstruction, VteEvent};
use crate::screen::{Screen, ScreenInstruction};
-use crate::utils::{consts::MOSAIC_IPC_PIPE, logging::*};
+use crate::utils::{
+ consts::{MOSAIC_IPC_PIPE, MOSAIC_TMP_DIR, MOSAIC_TMP_LOG_DIR},
+ logging::*,
+};
#[derive(Serialize, Deserialize, Debug)]
enum ApiCommand {
@@ -84,6 +87,8 @@ pub fn main() {
stream.write_all(&api_command).unwrap();
} else {
let os_input = get_os_input();
+ atomic_create_dir(MOSAIC_TMP_DIR).unwrap();
+ atomic_create_dir(MOSAIC_TMP_LOG_DIR).unwrap();
start(Box::new(os_input), opts);
}
}
diff --git a/src/utils/consts.rs b/src/utils/consts.rs
index e0a6da9f..5aa6aab4 100644
--- a/src/utils/consts.rs
+++ b/src/utils/consts.rs
@@ -1,3 +1,4 @@
-pub const MOSAIC_TMP_LOG_FILE: &str = "/tmp/mosaic/mosaic-log/log.txt";
+pub const MOSAIC_TMP_DIR: &str = "/tmp/mosaic";
pub const MOSAIC_TMP_LOG_DIR: &str = "/tmp/mosaic/mosaic-log";
+pub const MOSAIC_TMP_LOG_FILE: &str = "/tmp/mosaic/mosaic-log/log.txt";
pub const MOSAIC_IPC_PIPE: &str = "/tmp/mosaic/ipc";
diff --git a/src/utils/logging.rs b/src/utils/logging.rs
index 031813ed..4bd53743 100644
--- a/src/utils/logging.rs
+++ b/src/utils/logging.rs
@@ -7,10 +7,22 @@ use std::{
use crate::utils::consts::{MOSAIC_TMP_LOG_DIR, MOSAIC_TMP_LOG_FILE};
-fn atomic_create_file(file_name: &str) {
+pub fn atomic_create_file(file_name: &str) {
let _ = fs::OpenOptions::new().create(true).open(file_name);
}
+pub fn atomic_create_dir(dir_name: &str) -> io::Result<()> {
+ if let Err(e) = fs::create_dir(dir_name) {
+ if e.kind() == std::io::ErrorKind::AlreadyExists {
+ Ok(())
+ } else {
+ Err(e)
+ }
+ } else {
+ Ok(())
+ }
+}
+
pub fn debug_log_to_file(message: String) -> io::Result<()> {
atomic_create_file(MOSAIC_TMP_LOG_FILE);
let mut file = fs::OpenOptions::new()