summaryrefslogtreecommitdiffstats
path: root/pym/portage_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r--pym/portage_util.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py
index d07fe63c9..0e6d53956 100644
--- a/pym/portage_util.py
+++ b/pym/portage_util.py
@@ -848,9 +848,14 @@ class ConfigProtect(object):
os.path.join(self.myroot, x.lstrip(os.path.sep)))
mystat = None
try:
+ """Use lstat so that anything, even a broken symlink can be
+ protected."""
if stat.S_ISDIR(os.lstat(ppath).st_mode):
self._dirs.add(ppath)
self.protect.append(ppath)
+ """Now use stat in case this is a symlink to a directory."""
+ if stat.S_ISDIR(os.stat(ppath).st_mode):
+ self._dirs.add(ppath)
except OSError:
# If it doesn't exist, there's no need to protect it.
pass
@@ -861,9 +866,14 @@ class ConfigProtect(object):
os.path.join(self.myroot, x.lstrip(os.path.sep)))
mystat = None
try:
+ """Use lstat so that anything, even a broken symlink can be
+ protected."""
if stat.S_ISDIR(os.lstat(ppath).st_mode):
self._dirs.add(ppath)
self.protectmask.append(ppath)
+ """Now use stat in case this is a symlink to a directory."""
+ if stat.S_ISDIR(os.stat(ppath).st_mode):
+ self._dirs.add(ppath)
except OSError:
# If it doesn't exist, there's no need to mask it.
pass