mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 19:43:32 +00:00
27 lines
664 B
Python
27 lines
664 B
Python
|
from builtins import open as _orig_open
|
||
|
|
||
|
def open(file, mode='r', bufsize=-1):
|
||
|
if 'w' not in mode:
|
||
|
return _orig_open(file, mode, bufsize)
|
||
|
import os
|
||
|
backup = file + '~'
|
||
|
try:
|
||
|
os.unlink(backup)
|
||
|
except OSError:
|
||
|
pass
|
||
|
try:
|
||
|
os.rename(file, backup)
|
||
|
except OSError:
|
||
|
return _orig_open(file, mode, bufsize)
|
||
|
f = _orig_open(file, mode, bufsize)
|
||
|
_orig_close = f.close
|
||
|
def close():
|
||
|
_orig_close()
|
||
|
import filecmp
|
||
|
if filecmp.cmp(backup, file, shallow=False):
|
||
|
import os
|
||
|
os.unlink(file)
|
||
|
os.rename(backup, file)
|
||
|
f.close = close
|
||
|
return f
|