diff options
-rw-r--r-- | pym/portage/util/movefile.py | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/pym/portage/util/movefile.py b/pym/portage/util/movefile.py index 476f8e72a..252f4a292 100644 --- a/pym/portage/util/movefile.py +++ b/pym/portage/util/movefile.py @@ -1,4 +1,4 @@ -# Copyright 2010-2011 Gentoo Foundation +# Copyright 2010-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 __all__ = ['movefile'] @@ -85,15 +85,20 @@ def movefile(src, dest, newmtime=None, sstat=None, mysettings=None, mysettings = portage.settings src_bytes = _unicode_encode(src, encoding=encoding, errors='strict') + dest_bytes = _unicode_encode(dest, encoding=encoding, errors='strict') xattr_enabled = "xattr" in mysettings.features selinux_enabled = mysettings.selinux_enabled() if selinux_enabled: selinux = _unicode_module_wrapper(_selinux, encoding=encoding) + _copyfile = selinux.copyfile + _rename = selinux.rename + else: + _copyfile = _shutil.copyfile + _rename = _os.rename lchown = _unicode_func_wrapper(portage.data.lchown, encoding=encoding) os = _unicode_module_wrapper(_os, encoding=encoding, overrides=_os_overrides) - shutil = _unicode_module_wrapper(_shutil, encoding=encoding) try: if not sstat: @@ -222,19 +227,12 @@ def movefile(src, dest, newmtime=None, sstat=None, mysettings=None, dest_tmp_bytes = _unicode_encode(dest_tmp, encoding=encoding, errors='strict') try: # For safety copy then move it over. - if selinux_enabled: - selinux.copyfile(src, dest_tmp) - if xattr_enabled: - _copyxattr(src_bytes, dest_tmp_bytes) - _apply_stat(sstat, dest_tmp_bytes) - selinux.rename(dest_tmp, dest) - else: - shutil.copyfile(src, dest_tmp) - if xattr_enabled: - _copyxattr(src_bytes, dest_tmp_bytes) - _apply_stat(sstat, dest_tmp_bytes) - os.rename(dest_tmp, dest) - os.unlink(src) + _copyfile(src_bytes, dest_tmp_bytes) + if xattr_enabled: + _copyxattr(src_bytes, dest_tmp_bytes) + _apply_stat(sstat, dest_tmp_bytes) + _rename(dest_tmp_bytes, dest_bytes) + _os.unlink(src_bytes) except SystemExit as e: raise except Exception as e: |