Fix setting symlink attributes in linux
This commit is contained in:
parent
7daa8d74b3
commit
2dec011ca9
@ -112,12 +112,18 @@ def copy_direntry(entry: os.DirEntry, dst_path):
|
|||||||
copy_file(entry.path, dst_path)
|
copy_file(entry.path, dst_path)
|
||||||
|
|
||||||
src_stat = entry.stat(follow_symlinks=False)
|
src_stat = entry.stat(follow_symlinks=False)
|
||||||
if not entry.is_symlink() or os.chown in os.supports_follow_symlinks:
|
if entry.is_symlink():
|
||||||
os.chown(dst_path, src_stat.st_uid, src_stat.st_gid, follow_symlinks=False)
|
# change symlink attributes only if supported by OS
|
||||||
if not entry.is_symlink() or os.chmod in os.supports_follow_symlinks:
|
if os.chown in os.supports_follow_symlinks:
|
||||||
os.chmod(dst_path, src_stat.st_mode, follow_symlinks=False)
|
os.chown(dst_path, src_stat.st_uid, src_stat.st_gid, follow_symlinks=False)
|
||||||
if not entry.is_symlink() or os.utime in os.supports_follow_symlinks:
|
if os.chmod in os.supports_follow_symlinks:
|
||||||
os.utime(dst_path, (src_stat.st_atime, src_stat.st_mtime), follow_symlinks=False)
|
os.chmod(dst_path, src_stat.st_mode, follow_symlinks=False)
|
||||||
|
if os.utime in os.supports_follow_symlinks:
|
||||||
|
os.utime(dst_path, (src_stat.st_atime, src_stat.st_mtime), follow_symlinks=False)
|
||||||
|
else:
|
||||||
|
os.chown(dst_path, src_stat.st_uid, src_stat.st_gid)
|
||||||
|
os.chmod(dst_path, src_stat.st_mode)
|
||||||
|
os.utime(dst_path, (src_stat.st_atime, src_stat.st_mtime))
|
||||||
|
|
||||||
|
|
||||||
def update_direntry(src_entry: os.DirEntry, dst_entry: os.DirEntry):
|
def update_direntry(src_entry: os.DirEntry, dst_entry: os.DirEntry):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user