From: Zac Medico Date: Mon, 5 May 2008 04:50:23 +0000 (-0000) Subject: Bug #220171 - Filter out 'lost+found' directories in vardbapi.cpv_all() X-Git-Tag: v2.1.5~58 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=524bc877010dc4c7cc2d29617bd1edf57ade35f2;p=portage.git Bug #220171 - Filter out 'lost+found' directories in vardbapi.cpv_all() in order to avoid fatal 'Permission denied' errors. Currently, CVS and names beginning with '.' are also filtered. (trunk r10192) svn path=/main/branches/2.1.2/; revision=10193 --- diff --git a/pym/portage.py b/pym/portage.py index d7f4bbbd5..462363c91 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -6512,6 +6512,12 @@ class bindbapi(fakedbapi): return fakedbapi.cpv_all(self) class vardbapi(dbapi): + + _excluded_dirs = ["CVS", "lost+found"] + _excluded_dirs = [re.escape(x) for x in _excluded_dirs] + _excluded_dirs = re.compile(r'^(\..*|' + \ + "|".join(_excluded_dirs) + r')$') + """ The categories parameter is unused since the dbapi class now has a categories property that is generated from the @@ -6711,10 +6717,12 @@ class vardbapi(dbapi): returnme = [] basepath = os.path.join(self.root, VDB_PATH) + os.path.sep for x in listdir(basepath, EmptyOnError=1, ignorecvs=1, dirsonly=1): + if self._excluded_dirs.match(x) is not None: + continue if not self._category_re.match(x): continue for y in listdir(basepath+x,EmptyOnError=1): - if y.startswith("."): + if self._excluded_dirs.match(y) is not None: continue subpath = x+"/"+y # -MERGING- should never be a cpv, nor should files.