# 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_flat.py,v 1.13.2.6 2005/04/19 07:14:17 ferringb Exp $ cvs_id_string="$Id: portage_db_flat.py,v 1.13.2.6 2005/04/19 07:14:17 ferringb Exp $"[5:-2] import os, portage_db_flat_hash, portage_db_flat class database(portage_db_flat_hash.database): def get_values(self, key): if not key: raise KeyError("key is not valid") try: myf = open(self.fullpath + key, "r") except OSError: raise KeyError("key is not valid") mtime = os.fstat(myf.fileno()).st_mtime data = myf.read().splitlines() # easy attempt first. if len(data) != portage_db_flat.magic_line_count: d = dict(map(lambda x: x.split("=",1), data)) d["_mtime_"] = mtime return portage_db_flat_hash.database.get_values(self, key, d) # this one's interesting. d = {} for line in data: # yes, meant to iterate over a string. hashed = False for idx, c in enumerate(line): if not c.isalpha(): if c == "=" and idx > 0: hashed = True d[line[:idx]] = line[idx + 1:] elif c == "_" or c.isdigit(): continue break elif not c.isupper(): break if not hashed: # non hashed. data.append(mtime) return portage_db_flat.database.get_values(self, key, data=data) d["_mtime_"] = mtime return portage_db_flat_hash.database.get_values(self, key, data=d)