| # 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() |
| |