*перезапись тэгов сохраняет владельца и права исходного файла (файлы библиотеки на NAS)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
K1ndWha1eandClaude Opus 5.5 committed 2026-10-08 20:50:49 +03:00
1 parent d85b105d1c
commit 1e686ba304
2 files changed
+27

No files matched your search

+9
View File
@@ -564,6 +564,9 @@ fn write_book_tags_impl(path string, t BookTags, opts WriteOptions) ! {
parsed := parse_id3v2(path)!
tag := build_tag(parsed, t, opts)
// Владелец и права исходного файла: перезапись через временный файл иначе их потеряет
// (на NAS файлы библиотеки принадлежат пользователю приложения, а агент может работать от root)
orig := os.stat(path) or { os.Stat{} }
tmp_path := path + '.tagtmp'
mut src := os.open(path)!
mut dst := os.create(tmp_path)!
@@ -589,6 +592,12 @@ fn write_book_tags_impl(path string, t BookTags, opts WriteOptions) ! {
src.close()
dst.close()
ok = true
if orig.mode != 0 {
os.chmod(tmp_path, int(orig.mode & 0o7777)) or {}
$if !windows {
os.chown(tmp_path, int(orig.uid), int(orig.gid)) or {}
}
}
os.mv(tmp_path, path, overwrite: true)!
}