Browse Source

Migration code for the new database format

pull/72/merge
Joël Schaerer 13 years ago
parent
commit
0298ef5484
1 changed files with 23 additions and 5 deletions
  1. +23
    -5
      autojump

+ 23
- 5
autojump View File

@ -76,9 +76,8 @@ def open_dic(dic_file, error_recovery=False):
"""Try hard to open the database file, recovering
from backup if needed. """
try:
aj_file = open(dic_file, 'r')
path_dict = {}
with aj_file:
with open(dic_file, 'r') as aj_file:
for l in aj_file.readlines():
weight,path = l[:-1].split("\t",1)
path_dict[path] = float(weight)
@ -90,7 +89,27 @@ def open_dic(dic_file, error_recovery=False):
import shutil
shutil.copy(dic_file+".bak", dic_file)
return open_dic(dic_file, True)
else: return {} #if everything fails, return an empty file
else:
# Temporary migration code
old_dic_file = get_dic_file("autojump_py")
if os.path.exists(old_dic_file):
try: # fix to get optimised pickle in python < 3
import cPickle as pickle
except ImportError:
import pickle
try:
with open(old_dic_file, 'rb') as aj_file:
if version_info[0] > 2:
#encoding is only specified for python2.x compatibility
path_dict = pickle.load(aj_file, encoding="utf-8")
else:
path_dict = pickle.load(aj_file)
aj_file.close()
return path_dict
except (IOError, EOFError, pickle.UnpicklingError):
pass
return {} #if everything fails, return an empty file
def forget(path_dict, dic_file):
"""Gradually forget about directories. Only call
@ -156,8 +175,7 @@ def find_matches(dirs, patterns, result_list, ignore_case, max_matches):
if len(result_list) >= max_matches :
break
def get_dic_file():
filename = "autojump.txt"
def get_dic_file(filename="autojump.txt"):
if CONFIG_DIR == os.path.expanduser("~"):
dic_file = CONFIG_DIR+"/." + filename
else:

Loading…
Cancel
Save