diff options
author | Jason Stubbs <jstubbs@gentoo.org> | 2005-08-28 08:37:44 +0000 |
---|---|---|
committer | Jason Stubbs <jstubbs@gentoo.org> | 2005-08-28 08:37:44 +0000 |
commit | d9fc4acc572c6647a4f27b838d35d27d805d190e (patch) | |
tree | 262a8de35d8c7567312757da5f1f66efdc8cece5 /pym/portage_db_cpickle.py | |
download | portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.gz portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.bz2 portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.zip |
Migration (without history) of the current stable line to subversion.
svn path=/main/branches/2.0/; revision=1941
Diffstat (limited to 'pym/portage_db_cpickle.py')
-rw-r--r-- | pym/portage_db_cpickle.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/pym/portage_db_cpickle.py b/pym/portage_db_cpickle.py new file mode 100644 index 000000000..beaf4b615 --- /dev/null +++ b/pym/portage_db_cpickle.py @@ -0,0 +1,79 @@ +# 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_cpickle.py,v 1.9.2.2 2005/04/23 07:26:04 jstubbs Exp $ +cvs_id_string="$Id: portage_db_cpickle.py,v 1.9.2.2 2005/04/23 07:26:04 jstubbs Exp $"[5:-2] + +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; + |