* In vardbapi.cpv_all() use catpkgsplit() for validation since that's what
authorZac Medico <zmedico@gentoo.org>
Mon, 5 May 2008 18:42:13 +0000 (18:42 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 5 May 2008 18:42:13 +0000 (18:42 -0000)
  with cp_all() uses.
* Use the listdir() dirsonly=1 parameter to avoid unnecessary stat calls
  via os.path.isdir()
(trunk r10204)

svn path=/main/branches/2.1.2/; revision=10205

pym/portage.py

index 176a21dbe6ed081cfa4f13a888ce2202f377b67f..0f8a393cd2f2b5c54d4934496c361f9042716979 100644 (file)
@@ -6726,13 +6726,19 @@ class vardbapi(dbapi):
                                continue
                        if not self._category_re.match(x):
                                continue
-                       for y in listdir(basepath+x,EmptyOnError=1):
+                       for y in listdir(basepath + x, EmptyOnError=1, dirsonly=1):
                                if self._excluded_dirs.match(y) is not None:
                                        continue
-                               subpath = x+"/"+y
+                               subpath = x + "/" + y
                                # -MERGING- should never be a cpv, nor should files.
-                               if os.path.isdir(basepath+subpath) and (pkgsplit(y) is not None):
-                                       returnme += [subpath]
+                               try:
+                                       if catpkgsplit(subpath) is None:
+                                               self.invalidentry(os.path.join(self.root, subpath))
+                                               continue
+                               except portage_exception.InvalidData:
+                                       self.invalidentry(os.path.join(self.root, subpath))
+                                       continue
+                               returnme.append(subpath)
                return returnme
 
        def cp_all(self,use_cache=1):