1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# Copyright 2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: /var/cvsroot/gentoo-src/portage/pym/Attic/portage_db_anydbm.py,v 1.11.2.1 2005/01/16 02:35:33 carpaski Exp $
import anydbm,cPickle,types,os
import portage_db_template
class database(portage_db_template.database):
def module_init(self):
prevmask=os.umask(0)
if not os.path.exists(self.path):
current_path="/"
for mydir in self.path.split("/"):
current_path += "/"+mydir
if not os.path.exists(current_path):
os.mkdir(current_path)
self.filename = self.path + "/" + self.category + ".anydbm"
try:
# open it read/write
self.db = anydbm.open(self.filename, "c", 0664)
except SystemExit, e:
raise
except:
# Create a new db... DB type not supported anymore?
self.db = anydbm.open(self.filename, "n", 0664)
os.umask(prevmask)
def has_key(self,key):
self.check_key(key)
if self.db.has_key(key):
return 1
return 0
def keys(self):
return self.db.keys()
def get_values(self,key):
self.check_key(key)
if self.db.has_key(key):
myval = cPickle.loads(self.db[key])
return myval
return None
def set_values(self,key,val):
self.check_key(key)
self.db[key] = cPickle.dumps(val,cPickle.HIGHEST_PROTOCOL)
def del_key(self,key):
if self.has_key(key):
del self.db[key]
return True
return False
def sync(self):
self.db.sync()
def close(self):
self.db.close()
|