From 045385c4f079c6f0f4a30076ae1e366f6d7f5ef4 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 9 Jan 2007 18:54:09 +0000 Subject: For bug #161103, don't skip collision-protect checks in cases where the beginning of the file path matches a symlink but is not acually inside a symlinked directory (check the path against symlink + os.path.sep). svn path=/main/trunk/; revision=5499 --- pym/portage.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'pym') diff --git a/pym/portage.py b/pym/portage.py index b16d3c711..52d49396d 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -7017,6 +7017,9 @@ class dblink: os.chdir(srcroot) mysymlinks = filter(os.path.islink, listdir(srcroot, recursive=1, filesonly=0, followSymlinks=False)) myfilelist.extend(mysymlinks) + mysymlinked_directories = [s + os.path.sep for s in mysymlinks] + del mysymlinks + stopmerge=False starttime=time.time() @@ -7043,10 +7046,10 @@ class dblink: nocheck = False # listdir isn't intelligent enough to exclude symlinked dirs, # so we have to do it ourself - for s in mysymlinks: - # the length comparison makes sure that the symlink itself is checked - if f[:len(s)] == s and len(f) > len(s): + for s in mysymlinked_directories: + if f.startswith(s): nocheck = True + break if nocheck: continue i=i+1 -- cgit v1.2.3-1-g7c22