Always return a dict from dblink.getcontents() since callers never expect to get...
authorZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 03:50:38 +0000 (03:50 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 03:50:38 +0000 (03:50 -0000)
svn path=/main/branches/2.1.2.9/; revision=7461

pym/portage.py

index ebe2c96a66efa2ac6daf6c83906b11493e26398a..d75ebecc4e7760bde834bc86cc61e29a5f142f5d 100644 (file)
@@ -6909,12 +6909,18 @@ class dblink:
                """
                Get the installed files of a given package (aka what that package installed)
                """
-               if not os.path.exists(self.dbdir+"/CONTENTS"):
-                       return None
-               if self.contentscache != []:
+               contents_file = os.path.join(self.dbdir, "CONTENTS")
+               if self.contentscache is not None:
                        return self.contentscache
-               pkgfiles={}
-               myc=open(self.dbdir+"/CONTENTS","r")
+               pkgfiles = {}
+               try:
+                       myc = open(contents_file,"r")
+               except EnvironmentError, e:
+                       if e.errno != errno.ENOENT:
+                               raise
+                       del e
+                       self.contentscache = pkgfiles
+                       return pkgfiles
                mylines=myc.readlines()
                myc.close()
                null_byte = "\0"
@@ -6963,10 +6969,12 @@ class dblink:
                                        #format: type
                                        pkgfiles[" ".join(mydat[1:])]=[mydat[0]]
                                else:
-                                       return None
-                       except (KeyError,IndexError):
-                               print "portage: CONTENTS line",pos,"corrupt!"
-               self.contentscache=pkgfiles
+                                       writemsg("!!! Unrecognized CONTENTS entry on " + \
+                                               "line %d: '%s'\n" % (pos, line), noiselevel=-1)
+                       except (KeyError, IndexError):
+                               writemsg("!!! Unrecognized CONTENTS entry on " + \
+                                       "line %d: '%s'\n" % (pos, line), noiselevel=-1)
+               self.contentscache = pkgfiles
                return pkgfiles
 
        def unmerge(self, pkgfiles=None, trimworld=1, cleanup=1,