mirror of
				https://github.com/wting/autojump
				synced 2025-06-13 12:54:07 +00:00 
			
		
		
		
	use the backup file in case of problems
This commit is contained in:
		
							parent
							
								
									99d82be473
								
							
						
					
					
						commit
						eb0f287eb9
					
				
							
								
								
									
										29
									
								
								autojump
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								autojump
									
									
									
									
									
								
							| @ -56,12 +56,12 @@ def save(path_dict,dic_file): | ||||
|     f.close() | ||||
|     try: | ||||
|         os.rename(dic_file+".tmp",dic_file) #cf. http://thunk.org/tytso/blog/2009/03/15/dont-fear-the-fsync/ | ||||
|         import time #backup file | ||||
|         if not os.path.exists(dic_file+".bak") or time.time()-os.path.getmtime(dic_file+".bak")>86400: | ||||
|             import shutil | ||||
|             shutil.copy(dic_file,dic_file+".bak") | ||||
|     except OSError: | ||||
|         pass #Fail quietly, this usually means a concurrent autojump process already did the job | ||||
|     import time #backup file | ||||
|     if not os.path.exists(dic_file+".bak") or time.time()-os.path.getmtime(dic_file+".bak")>86400: | ||||
|         import shutil | ||||
|         shutil.copy(dic_file,dic_file+".bak") | ||||
| 
 | ||||
| def forget(path_dict,dic_file): | ||||
|     """Gradually forget about directories. Only call from the actual jump since it can take time""" | ||||
| @ -78,6 +78,19 @@ def find_matches(dirs,pattern,path_dict,result_list,re_flags,max_matches): | ||||
|         if match(path,pattern,path_dict,re_flags): | ||||
|             uniqadd(result_list,path) | ||||
| 
 | ||||
| def open_dic(dic_file,error_recovery=False): | ||||
|     try: | ||||
|         aj_file=open(dic_file) | ||||
|         path_dict=cPickle.load(aj_file) | ||||
|         aj_file.close() | ||||
|         return path_dict | ||||
|     except (IOError,EOFError): | ||||
|         if not error_recovery and os.path.exists(dic_file+".bak"): | ||||
|             import shutil | ||||
|             shutil.copy(dic_file+".bak",dic_file) | ||||
|             return open_dic(dic_file,True) | ||||
|         else: return {} #if everything fails, return an empty file | ||||
| 
 | ||||
| #Main code | ||||
| try: | ||||
|     optlist, args = getopt.getopt(argv[1:], 'a',['stat','import','completion'])  | ||||
| @ -86,13 +99,7 @@ except getopt.GetoptError, e: | ||||
|     exit(1) | ||||
| 
 | ||||
| dic_file=os.path.expanduser("~/.autojump_py") | ||||
| try: | ||||
|     aj_file=open(dic_file) | ||||
|     path_dict=cPickle.load(aj_file) | ||||
|     aj_file.close() | ||||
| except IOError: | ||||
|     path_dict={} | ||||
| 
 | ||||
| path_dict=open_dic(dic_file) | ||||
| if ('-a','') in optlist: | ||||
|     if(args[-1] != os.path.expanduser("~")): # home dir can be reached quickly by "cd" and may interfere with other directory | ||||
|         dicadd(path_dict,args[-1]) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user