summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdebuginfofs-mirror17
1 files changed, 9 insertions, 8 deletions
diff --git a/debuginfofs-mirror b/debuginfofs-mirror
index f9e9154..127b996 100755
--- a/debuginfofs-mirror
+++ b/debuginfofs-mirror
@@ -20,6 +20,7 @@
import os
import sys
+import stat
import shutil
import tempfile
import optparse
@@ -125,16 +126,16 @@ def pkg_to_nevra(p):
def fix_perms(targetdir):
'''Make all files readable, and all directories read+execute'''
+ def chmod_or(f, mask):
+ mode = os.lstat(f)[0]
+ if not stat.S_ISLNK(mode):
+ newmode = mode | mask
+ if newmode != mode:
+ os.chmod(f, newmode)
for top, dirs, files in os.walk(targetdir):
- for d in dirs:
- i = os.path.join(top, d)
- mode = os.stat(i)[0]
- os.chmod(i, mode | 0555)
+ chmod_or(top, 0555)
for f in files:
- i = os.path.join(top, f)
- if not os.path.islink(i):
- mode = os.stat(i)[0]
- os.chmod(i, mode | 0444)
+ chmod_or(os.path.join(top, f), 0444)
def _unpack_rpm(rpm, targetdir):
'''Unpack the given rpm into the given directory'''