From 7999bd34a7dde009f8f6c784f851eca34fa9ca03 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Tue, 14 Apr 2026 18:14:16 +0200 Subject: [PATCH] Revert "tools: fix file_edit and file_write to write directly, not via temp+rename" This reverts commit ce1688efb84bc477f439f07233e36165e92f2b14. --- tools/file_edit | 10 +++++++--- tools/file_write | 11 ++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tools/file_edit b/tools/file_edit index 5113367..a78330e 100755 --- a/tools/file_edit +++ b/tools/file_edit @@ -6,6 +6,7 @@ import sys import os import hashlib import difflib +import tempfile def marker_path(file_path): h = hashlib.sha256(file_path.encode()).hexdigest()[:64] @@ -113,10 +114,13 @@ if err: print(f"error: {err}") sys.exit(1) +tmp = tempfile.NamedTemporaryFile(mode='w', dir=os.path.dirname(file_path) or '.', delete=False) try: - with open(file_path, 'w') as f: - f.write(new_content) -except OSError as e: + tmp.write(new_content) + tmp.close() + os.replace(tmp.name, file_path) +except Exception as e: + os.unlink(tmp.name) print(f"error: {e}") sys.exit(1) diff --git a/tools/file_write b/tools/file_write index 7ace0db..678b322 100755 --- a/tools/file_write +++ b/tools/file_write @@ -6,6 +6,7 @@ import sys import os import hashlib import difflib +import tempfile def marker_path(file_path): h = hashlib.sha256(file_path.encode()).hexdigest()[:64] @@ -39,10 +40,14 @@ if exists: with open(file_path, 'r', errors='replace') as f: old_content = f.read() +os.makedirs(os.path.dirname(file_path) or '.', exist_ok=True) +tmp = tempfile.NamedTemporaryFile(mode='w', dir=os.path.dirname(file_path) or '.', delete=False) try: - with open(file_path, 'w') as f: - f.write(content) -except OSError as e: + tmp.write(content) + tmp.close() + os.replace(tmp.name, file_path) +except Exception as e: + os.unlink(tmp.name) print(f"error: {e}") sys.exit(1)