summaryrefslogtreecommitdiffstats
path: root/pym/portage_db_anydbm.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage_db_anydbm.py')
-rw-r--r--pym/portage_db_anydbm.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/pym/portage_db_anydbm.py b/pym/portage_db_anydbm.py
new file mode 100644
index 000000000..2b0b298c5
--- /dev/null
+++ b/pym/portage_db_anydbm.py
@@ -0,0 +1,64 @@
+# Copyright 2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-src/portage/pym/Attic/portage_db_anydbm.py,v 1.11.2.1 2005/01/16 02:35:33 carpaski Exp $
+cvs_id_string="$Id: portage_db_anydbm.py,v 1.11.2.1 2005/01/16 02:35:33 carpaski Exp $"[5:-2]
+
+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()
+