# Written by Ross Cohen
# See LICENSE.txt for license information.
from os import path
try:
from bsddb3 import db
version_info = db.__version__.split('.')
if version_info < [4,1]:
raise ImportError
if db.version() < (4,1):
raise ImportError
except ImportError:
from bsddb import db
version_info = db.__version__.split('.')
if version_info < [4,1]:
raise ImportError, 'bsddb 4.1 or higher is required'
if db.version() < (4,1):
raise ImportError, 'berkeleydb 4.1 or higher is required'
history_format_version = 1
rebuild_format_version = 4
class VersionMismatchException(Exception): pass
def check_format_version(dir):
try:
fd = open(path.join(dir, 'format'), 'r')
ver = int(fd.read())
fd.close()
except IOError:
ver = 0
if ver != history_format_version:
raise VersionMismatchException, (history_format_version, ver)
return
def check_rebuild_version(dir):
try:
fd = open(path.join(dir, 'rebuild_format'), 'r')
ver = int(fd.read())
fd.close()
except IOError:
ver = 0
if ver != rebuild_format_version:
raise VersionMismatchException, (rebuild_format_version, ver)
return
def write_format_version(dir):
fd = open(path.join(dir, 'format'), 'w')
fd.write(str(history_format_version))
fd.close()
return
def write_rebuild_version(dir):
fd = open(path.join(dir, 'rebuild_format'), 'w')
fd.write(str(rebuild_format_version))
fd.close()
return
class ChangeDBs:
def __init__(self, dbenv, name, flags, txn):
self.indexdb = db.DB(dbEnv=dbenv)
self.indexdb.open(name[0] + 'index.db', dbtype=db.DB_BTREE, flags=flags, txn=txn)
self.dagdb = db.DB(dbEnv=dbenv)
self.dagdb.open(name + '-dag.db', dbtype=db.DB_BTREE, flags=flags, txn=txn)
self.mergedb = db.DB(dbEnv=dbenv)
self.mergedb.open(name + '-merges.db', dbtype=db.DB_BTREE, flags=flags, txn=txn)
return
def close(self):
self.indexdb.close()
self.dagdb.close()
self.mergedb.close()
return
syntax highlighted by Code2HTML, v. 0.9.1