1
0
Fork 0
mirror of https://github.com/morpheus65535/bazarr synced 2025-01-30 19:02:34 +00:00

Patched fcache to support real move with shutil instead of os.rename. This way can move from one drive to another.

This commit is contained in:
Louis Vézina 2019-11-28 06:52:06 -05:00
parent 8cd2224cb6
commit 0f04e8a473
2 changed files with 8 additions and 23 deletions

View file

@ -256,7 +256,7 @@ class FileCache(MutableMapping):
return self._loads(f.read())
except (IOError, OSError):
logger.warning('Error opening file: {}'.format(filename))
return None
raise
def __setitem__(self, key, value):
ekey = self._encode_key(key)

View file

@ -46,15 +46,7 @@ if os.name == 'nt': # pragma: no cover
dst = unicode(dst, sys.getfilesystemencoding())
if _rename_atomic(src, dst):
return True
retry = 0
rv = False
while not rv and retry < 100:
rv = _MoveFileEx(src, dst, _MOVEFILE_REPLACE_EXISTING |
_MOVEFILE_WRITE_THROUGH)
if not rv:
time.sleep(0.001)
retry += 1
return rv
return _MoveFileEx(src, dst, _MOVEFILE_REPLACE_EXISTING | _MOVEFILE_WRITE_THROUGH)
# new in Vista and Windows Server 2008
_CreateTransaction = ctypes.windll.ktmw32.CreateTransaction
@ -68,18 +60,11 @@ if os.name == 'nt': # pragma: no cover
if ta == -1:
return False
try:
retry = 0
rv = False
while not rv and retry < 100:
rv = _MoveFileTransacted(src, dst, None, None,
_MOVEFILE_REPLACE_EXISTING |
_MOVEFILE_WRITE_THROUGH, ta)
if rv:
rv = _CommitTransaction(ta)
break
else:
time.sleep(0.001)
retry += 1
rv = _MoveFileTransacted(src, dst, None, None,
_MOVEFILE_REPLACE_EXISTING |
_MOVEFILE_WRITE_THROUGH, ta)
if rv:
rv = _CommitTransaction(ta)
return rv
finally:
_CloseHandle(ta)
@ -92,7 +77,7 @@ if os.name == 'nt': # pragma: no cover
return
# Fall back to "move away and replace"
try:
os.rename(src, dst)
shutil.move(src, dst)
except OSError as e:
if e.errno != errno.EEXIST:
raise