try to write to file (os error 22)

This commit is contained in:
🪞👃🪞 2025-04-27 21:09:06 +03:00
parent 576725a949
commit 0d1d4b6e9a
4 changed files with 15 additions and 9 deletions

View file

@ -33,8 +33,8 @@ impl Handle<TuiIn> for Perch {
match &self.mode {
Some(Mode::Edit { .. }) => self.handle_edit(event),
Some(Mode::Help { page }) => self.handle_help(event, *page),
Some(Mode::Save { choice }) => self.handle_save(event, *choice),
Some(Mode::Quit { choice }) => self.handle_quit(input, *choice),
Some(Mode::Save { choice }) => self.handle_save(event, *choice)?,
Some(Mode::Quit { choice }) => self.handle_quit(input, *choice)?,
None => match event {
press!(F(1)) => { self.help_begin() },
press!(Char('q')) => { self.quit_begin(&input) },

View file

@ -1,7 +1,7 @@
use crate::*;
impl Perch {
pub fn handle_quit (&mut self, input: &TuiIn, choice: u8) {
pub fn handle_quit (&mut self, input: &TuiIn, choice: u8) -> Usually<()> {
match &*input.event() {
press!(Esc) => { self.mode = None },
press!(Left) => { self.mode = Some(Mode::Quit {
@ -18,13 +18,14 @@ impl Perch {
self.mode = None
},
2 => {
self.save_all();
self.save_all()?;
input.done()
},
_ => unreachable!(),
},
_ => {}
}
Ok(())
}
pub fn quit_begin (&mut self, input: &TuiIn) {
if self.changes == 0 {

View file

@ -1,7 +1,7 @@
use crate::*;
impl Perch {
pub fn handle_save (&mut self, event: &Event, choice: u8) {
pub fn handle_save (&mut self, event: &Event, choice: u8) -> Usually<()> {
match event {
press!(Esc) => { self.mode = None }
press!(Left) => { self.mode = Some(Mode::Save {
@ -19,13 +19,14 @@ impl Perch {
self.mode = None;
},
2 => {
self.save_all();
self.save_all()?;
self.mode = None
},
_ => unreachable!(),
},
_ => {}
}
Ok(())
}
pub fn save_begin (&mut self) {
if self.changes > 0 {

View file

@ -87,14 +87,18 @@ impl Perch {
self.changes = 0;
}
/// Write all modified tags
pub(crate) fn save_all (&mut self) {
pub(crate) fn save_all (&mut self) -> Usually<()> {
use lofty::{tag::TagExt, config::WriteOptions};
for entry in self.entries.iter_mut() {
if let Metadata::Music {
original_tag, modified_tag, ..
modified_tag: Some(modified_tag), ..
} = &mut *entry.info.write().unwrap() {
todo!("save {:?}", entry.path);
let tag = modified_tag.read().unwrap();
let mut file = std::fs::File::open(entry.path.as_path())?;
tag.save_to(&mut file, WriteOptions::default())?;
}
}
self.changes = 0;
Ok(())
}
}