| # 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_cpickle.py,v 1.9.2.2 2005/04/23 07:26:04 jstubbs Exp $ |
| |
| |
| import anydbm,cPickle,types |
| from os import chown,access,R_OK,unlink |
| import os |
| |
| import portage_db_template |
| |
| class database(portage_db_template.database): |
| def module_init(self): |
| self.modified = False |
| |
| prevmask=os.umask(0) |
| if not os.path.exists(self.path): |
| os.makedirs(self.path, 02775) |
| |
| self.filename = self.path + "/" + self.category + ".cpickle" |
| |
| if access(self.filename, R_OK): |
| try: |
| mypickle=cPickle.Unpickler(open(self.filename,"r")) |
| mypickle.find_global=None |
| self.db = mypickle.load() |
| except SystemExit, e: |
| raise |
| except: |
| self.db = {} |
| else: |
| self.db = {} |
| |
| 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): |
| return self.db[key] |
| return None |
| |
| def set_values(self,key,val): |
| self.modified = True |
| self.check_key(key) |
| self.db[key] = val |
| |
| def del_key(self,key): |
| if self.has_key(key): |
| del self.db[key] |
| self.modified = True |
| return True |
| return False |
| |
| def sync(self): |
| if self.modified: |
| try: |
| if os.path.exists(self.filename): |
| unlink(self.filename) |
| cPickle.dump(self.db, open(self.filename,"w"), -1) |
| os.chown(self.filename,self.uid,self.gid) |
| os.chmod(self.filename, 0664) |
| except SystemExit, e: |
| raise |
| except: |
| pass |
| |
| def close(self): |
| self.sync() |
| self.db = None; |
| |