mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Replace use of pickle when repairing db on windows
This commit is contained in:
parent
52c371e8b5
commit
046f43446e
@ -174,9 +174,10 @@ def repair_library(library_path):
|
|||||||
|
|
||||||
def windows_repair(library_path=None):
|
def windows_repair(library_path=None):
|
||||||
from binascii import hexlify, unhexlify
|
from binascii import hexlify, unhexlify
|
||||||
import cPickle, subprocess
|
import subprocess
|
||||||
|
from calibre.utils.serialize import json_dumps, json_loads
|
||||||
if library_path:
|
if library_path:
|
||||||
library_path = hexlify(cPickle.dumps(library_path, -1))
|
library_path = hexlify(json_dumps(library_path))
|
||||||
winutil.prepare_for_restart()
|
winutil.prepare_for_restart()
|
||||||
os.environ['CALIBRE_REPAIR_CORRUPTED_DB'] = library_path
|
os.environ['CALIBRE_REPAIR_CORRUPTED_DB'] = library_path
|
||||||
subprocess.Popen([sys.executable])
|
subprocess.Popen([sys.executable])
|
||||||
@ -184,7 +185,7 @@ def windows_repair(library_path=None):
|
|||||||
try:
|
try:
|
||||||
app = Application([])
|
app = Application([])
|
||||||
from calibre.gui2.dialogs.restore_library import repair_library_at
|
from calibre.gui2.dialogs.restore_library import repair_library_at
|
||||||
library_path = cPickle.loads(unhexlify(os.environ.pop('CALIBRE_REPAIR_CORRUPTED_DB')))
|
library_path = json_loads(unhexlify(os.environ.pop('CALIBRE_REPAIR_CORRUPTED_DB')))
|
||||||
done = repair_library_at(library_path, wait_time=4)
|
done = repair_library_at(library_path, wait_time=4)
|
||||||
except Exception:
|
except Exception:
|
||||||
done = False
|
done = False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user