diff options
-rwxr-xr-x | debuginfofs-mirror | 17 |
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''' |