diff options
-rw-r--r-- | crates/yt/src/select/mod.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/crates/yt/src/select/mod.rs b/crates/yt/src/select/mod.rs index 76d5ae8..b39bea2 100644 --- a/crates/yt/src/select/mod.rs +++ b/crates/yt/src/select/mod.rs @@ -138,8 +138,9 @@ pub(crate) async fn select_split( paths.sort(); let mut persistent_file = OpenOptions::new() - .read(true) + .read(false) .write(true) + .create(true) .truncate(true) .open(&app.config.paths.last_selection_path) .context("Failed to open persistent selection file")?; @@ -152,7 +153,14 @@ pub(crate) async fn select_split( persistent_file.write_all(&buffer)?; } - persistent_file.rewind()?; + persistent_file.flush()?; + let persistent_file = OpenOptions::new() + .read(true) + .open(format!( + "/proc/self/fd/{}", + persistent_file.as_fd().as_raw_fd() + )) + .context("Failed to re-open persistent file")?; let processed = process_file(app, &persistent_file).await?; @@ -179,7 +187,7 @@ pub(crate) async fn select_file(app: &App, done: bool, use_last_selection: bool) open_editor_at(temp_file.path()).await?; - let read_file = temp_file.reopen()?; + let read_file = OpenOptions::new().read(true).open(temp_file.path())?; fs::copy(temp_file.path(), &app.config.paths.last_selection_path) .context("Failed to persist selection file")?; |