ó
E®Uc           @   sJ   d  d l  m Z d  d l Z d  d l Z d  d l Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   xattrNc         C   sg   x` t  j d f D]O } y5 t j j |  t  j ƒ } t j j | t  j | ƒ Wq t k
 r^ q Xq Wd S(   s8   Copy ACL related attributes from a path to another path.s   system.posix_acl_accessN(   R    t   XATTR_NTACL_NAMEt   sambat   xattr_nativet   wrap_getxattrt   wrap_setxattrt	   Exception(   t   frompatht   topatht	   attr_namet	   attribute(    (    s/   /usr/lib/python2.7/dist-packages/samba/xattr.pyt	   copyattrs   s    c         C   sä   t  j |  ƒ } t  j | ƒ g  } xž | D]– } t  j j |  | ƒ } t  j j | | ƒ } t  j j | ƒ r t  j | ƒ } t  j | | ƒ q) t  j j | ƒ r¯ t	 | | ƒ q) t
 j | | ƒ q) Wt
 j |  | ƒ t |  | ƒ d S(   sÌ   Recursively copy a directory tree using shutil.copy2(), preserving xattrs.

    The destination directory must not already exist.
    If exception(s) occur, an Error is raised with a list of reasons.
    N(   t   ost   listdirt   makedirst   patht   joint   islinkt   readlinkt   symlinkt   isdirt   copytree_with_xattrst   shutilt   copy2t   copystatR   (   t   srct   dstt   namest   errorst   namet   srcnamet   dstnamet   linkto(    (    s/   /usr/lib/python2.7/dist-packages/samba/xattr.pyR   '   s    (   t   samba.dcerpcR    R   t   samba.xattr_nativeR   R   R   R   (    (    (    s/   /usr/lib/python2.7/dist-packages/samba/xattr.pyt   <module>   s
   	