summaryrefslogtreecommitdiffstats
path: root/pym/portage_util.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-03-14 04:26:56 +0000
committerZac Medico <zmedico@gentoo.org>2006-03-14 04:26:56 +0000
commitc0e4dcc4bf8ec3012eeda3a5449c3500e0a0bc3a (patch)
tree87805f60d0ec6e7b974a5b14c391359110c89210 /pym/portage_util.py
parent7dfb4497f8c73be01bd3b81be50d90cdf0f3c1e8 (diff)
downloadportage-c0e4dcc4bf8ec3012eeda3a5449c3500e0a0bc3a.tar.gz
portage-c0e4dcc4bf8ec3012eeda3a5449c3500e0a0bc3a.tar.bz2
portage-c0e4dcc4bf8ec3012eeda3a5449c3500e0a0bc3a.zip
Make mode=-1 the default parameter for apply_permissions in order to distinguish the behavior from mode=0.
svn path=/main/trunk/; revision=2876
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r--pym/portage_util.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py
index e67a9afda..7a9cfb850 100644
--- a/pym/portage_util.py
+++ b/pym/portage_util.py
@@ -455,7 +455,7 @@ def unique_array(s):
u.append(x)
return u
-def apply_permissions(filename, uid=-1, gid=-1, mode=0, mask=-1,
+def apply_permissions(filename, uid=-1, gid=-1, mode=-1, mask=-1,
stat_cached=None):
"""Apply user, group, and mode bits to a file if the existing bits do not
already match. The default behavior is to force an exact match of mode
@@ -472,12 +472,14 @@ def apply_permissions(filename, uid=-1, gid=-1, mode=0, mask=-1,
os.chown(filename, uid, gid)
if mask >= 0:
+ if mode == -1:
+ mode = 0 # Don't add any mode bits when mode is unspecified.
if (mode & stat_cached.st_mode != mode) or \
(mask ^ stat_cached.st_mode != stat_cached.st_mode):
new_mode = mode | stat_cached.st_mode
new_mode = mask ^ new_mode
os.chmod(filename, new_mode)
- elif mode != stat_cached.st_mode:
+ elif mode != -1 and mode != stat_cached.st_mode:
os.chmod(filename, mode)
except OSError, oe:
if oe.errno == errno.EPERM:
@@ -493,7 +495,7 @@ def apply_stat_permissions(filename, newstat, **kwargs):
return apply_secpass_permissions(filename, uid=newstat.st_uid, gid=newstat.st_gid,
mode=newstat.st_mode, **kwargs)
-def apply_secpass_permissions(filename, uid=-1, gid=-1, mode=0, mask=-1,
+def apply_secpass_permissions(filename, uid=-1, gid=-1, mode=-1, mask=-1,
stat_cached=None):
"""A wrapper around apply_permissions that uses secpass and simple
logic to apply as much of the permissions as possible without