diff options
author | Andreas Hasenack <andreas@mandriva.com> | 2008-01-11 13:34:37 +0000 |
---|---|---|
committer | Andreas Hasenack <andreas@mandriva.com> | 2008-01-11 13:34:37 +0000 |
commit | b1379f78e1d5b9b24ced3f69036bd35553ab2980 (patch) | |
tree | 4e8ea0a6476f7f65e51169de3ed04d0ad06f42e4 | |
parent | 949ca6076e8b90695f7dba5d0f0e860ec731e138 (diff) | |
download | msec-b1379f78e1d5b9b24ced3f69036bd35553ab2980.tar msec-b1379f78e1d5b9b24ced3f69036bd35553ab2980.tar.gz msec-b1379f78e1d5b9b24ced3f69036bd35553ab2980.tar.bz2 msec-b1379f78e1d5b9b24ced3f69036bd35553ab2980.tar.xz msec-b1379f78e1d5b9b24ced3f69036bd35553ab2980.zip |
- properly dereference symlinks when checking for remote filesystem (#14387)
-rwxr-xr-x | share/Perms.py | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/share/Perms.py b/share/Perms.py index 59dab97..ff4af73 100755 --- a/share/Perms.py +++ b/share/Perms.py @@ -117,20 +117,6 @@ def build_non_localfs_regexp(): else: return re.compile(regexp + REGEXP_END) -# resolv symlink -def get_sylink_name(path): - try: - p = os.readlink(path) - except OSError: - return path - if p and p[0] != '/': - p = os.path.dirname(path) + '/' + p - p = os.path.abspath(p) - if p == path: - return path - else: - return get_sylink_name(p) - # put the new perm/group/owner in the assoc variable according to the # content of the path file. assoc = {} @@ -192,20 +178,15 @@ def fix_perms(path, _interactive, force): if fieldcount == 4: for f in glob.glob(fields[0]): newperm = perm - if fs_regexp and fs_regexp.search(f): - _interactive and log(_('Non local file: "%s". Nothing changed.') % fields[0]) - continue + f = os.path.realpath(f) try: full = os.lstat(f) except OSError: continue - if stat.S_ISLNK(full[stat.ST_MODE]): - f = get_sylink_name(f) - try: - full = os.stat(f) - except OSError: - continue + if fs_regexp and fs_regexp.search(f): + _interactive and log(_('Non local file: "%s". Nothing changed.') % fields[0]) + continue mode = stat.S_IMODE(full[stat.ST_MODE]) |