Current File : //usr/lib/python2.7/site-packages/slip/util/files.pyc |
�
��9Qc @ s� d Z d d d d d g Z d d l Z d d l Z d d l Z d d l Z d d l Z d Z d � Z g d
� Z d � Z
e e d � Z e e d
� Z
e e d � Z e e d � Z d S( s= This module contains helper functions for dealing with files.t
issamefilet linkfilet copyfilet linkorcopyfilet overwrite_safelyi����Ni c C s1 t j | � } t j | � } t j j | | � S( N( t ost statt patht samestat( t path1t path2t s1t s2( ( s3 /usr/lib/python2.7/site-packages/slip/util/files.pyt _issamefile# s c C s? | t k r t } n y t | | � SWn | k
r: t SXd S( sE Check whether two paths point to the same file (i.e. are hardlinked).N( t Truet ExceptionR
t False( R R
t catch_stat_exceptions( ( s3 /usr/lib/python2.7/site-packages/slip/util/files.pyR * s
c C s� t | | d t �r d St j j | � } t j j | � } t j j | � } t } x t t j
� D]n } t j d | t j d | � } y t j
| | � Wn+ t k
r� } | j t j k r� q� � qe Xt } Pqe W| r� t j | | � n d S( sU Hardlink srcpath to dstpath.
Attempt to atomically replace dstpath if it exists.R Nt prefixt dir( R t OSErrorR R t abspatht dirnamet basenameR t xranget tempfilet TMP_MAXt mktempt extsept linkt errnot EEXISTR t rename( t srcpatht dstpatht dstdnamet dstbnamet
hardlinkedt attemptt _dsttmpt e( ( s3 /usr/lib/python2.7/site-packages/slip/util/files.pyR 6 s$ c
C s� t | | d t �r d St j j | � } t j j | � } t j j | � } t | d � } t j d | t j j
d | d t � } t } | r� y t j
| | j � t } Wq� t j t f k
r� q� Xn | s� t j
| | j � n d } xa | d k rT| j t � } y | j | � Wq� | j � | j � t j | j � � q� Xq� W| j � | j � t j | j | � | r�t j � d k r�t j | � n d S( s� Copy srcpath to dstpath.
Abort operation if e.g. not enough space is available. Attempt to
atomically replace dstpath if it exists.R Nt rbR R t deletet i ( R R R R R R R t openR t NamedTemporaryFileR R t shutilt copymodet nameR t Errort Nonet readt BLOCKSIZEt writet closet unlinkR t selinuxt is_selinux_enabledt
restorecon(
R! R"