Always return a dict from dblink.getcontents() since callers never expect to get...
authorZac Medico <zmedico@gentoo.org>
Tue, 12 Jun 2007 21:14:34 +0000 (21:14 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 12 Jun 2007 21:14:34 +0000 (21:14 -0000)
svn path=/main/branches/2.1.2/; revision=6817

pym/portage.py

index 3d202d07ead59f2ac83d2ac46dbb5cb2d379d18d..8d972c7a9a4ad419725a2e8c888c710b7cd5c1f8 100644 (file)
@@ -6942,12 +6942,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
+               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"
@@ -6996,10 +7002,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,