???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
ż^c           @   sç   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Td d l Z d d l Z d Z e j	 e j
 f Z d d d     YZ d e e j f d     YZ d	 e j f d
     YZ d   Z e d k ră e   n  d S(   sß  File System Proxy.

Provide an OS-neutral view on a file system, locally or remotely.
The functionality is geared towards implementing some sort of
rdist-like utility between a Mac and a UNIX system.

The module defines three classes:

FSProxyLocal  -- used for local access
FSProxyServer -- used on the server side of remote access
FSProxyClient -- used on the client side of remote access

The remote classes are instantiated with an IP address and an optional
verbosity flag.
i˙˙˙˙N(   t   *i˙   t   FSProxyLocalc           B   sŹ  e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d+ d  Z d+ d  Z d+ d  Z d+ d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d+ d  Z d+ d  Z d+ d  Z d+ d  Z d+ d  Z  d   Z! d+ d  Z" d+ d   Z# d+ d!  Z$ d+ d"  Z% d+ d#  Z& d$ d% d&  Z' d'   Z( d$ d(  Z) d)   Z* d*   Z+ RS(,   c         C   s#   g  |  _  d g |  j   |  _ d  S(   Ns   *.pyc(   t	   _dirstackt   _readignoret   _ignore(   t   self(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   __init__!   s    	c         C   s   x |  j  r |  j   q Wd  S(   N(   R   t   back(   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   _close%   s    c         C   sÂ   |  j  d  } y t |  } WnE t k
 rf |  j  d  } y t |  } Wqg t k
 rb g  SXn Xg  } xD | j   } | s Pn  | d d k rŁ | d  } n  | j |  qp W| j   | S(   Nt   ignores   synctree.ignorefilesi˙˙˙˙s   
(   t   _hidet   opent   IOErrort   readlinet   appendt   close(   R   t   filet   fR	   t   line(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR   )   s&    	  
c         C   s   | d d k S(   Ni    t   .(    (   R   t   name(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   _hidden<   s    c         C   s   d | S(   Ns   .%s(    (   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR
   ?   s    c         C   sÜ   t  |  t k r d S| d d k r* d S| t k r: d S|  j |  rM d St j j |  \ } } | sr | rv d St j j |  r d Sd t | d  j	 d  k rŽ d Sx' |  j
 D] } t j | |  r¸ d Sq¸ Wd S(   Ni    i˙˙˙˙t   ~s    t   rbi   i   (   t   lent
   maxnamelent	   skipnamesR   t   ost   patht   splitt   islinkR   t   readR   t   fnmatch(   R   R   t   headt   tailt   ign(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   visibleB   s&            c         C   s,   |  j  |  s( t j d t |   n  d  S(   Ns   protected name %s(   R$   R   t   errort   repr(   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   checkO   s    c         C   s<   |  j  |  t j j |  s8 t j d t |   n  d  S(   Ns   not a plain file %s(   R'   R   R   t   isfileR%   R&   (   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt	   checkfileS   s    c         C   s
   t  j   S(   N(   R   t   getcwd(   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   pwdX   s    c         C   sY   |  j  |  t j   |  j f } t j |  |  j j |  |  j |  j   |  _ d  S(   N(   R'   R   R*   R   t   chdirR   R   R   (   R   R   t   save(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   cd[   s
    c         C   sO   |  j  s t j d  n  |  j  d \ } } t j |  |  j  d =| |  _ d  S(   Ns   empty directory stacki˙˙˙˙(   R   R   R%   R,   R   (   R   t   dirR	   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR   b   s    	
c         C   sD   | r$ | d  } t  | |  } n  t  |  j |  } | j   | S(   Nc         S   s   t  j  |  |  S(   N(   R    (   R   t   pat(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   keepl   s    (   t   filterR$   t   sort(   R   t   filesR0   R1   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   _filterj   s    
c         C   s"   t  j t  j  } |  j | |  S(   N(   R   t   listdirt   curdirR5   (   R   R0   R4   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   lists   s    c         C   s7   t  j t  j  } t t  j j |  } |  j | |  S(   N(   R   R6   R7   R2   R   R(   R5   (   R   R0   R4   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt	   listfilesw   s    c         C   s7   t  j t  j  } t t  j j |  } |  j | |  S(   N(   R   R6   R7   R2   R   t   isdirR5   (   R   R0   R4   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   listsubdirs|   s    c         C   s   |  j  |  o t j j |  S(   N(   R$   R   R   t   exists(   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR<      s    c         C   s   |  j  |  o t j j |  S(   N(   R$   R   R   R:   (   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR:      s    c         C   s   |  j  |  o t j j |  S(   N(   R$   R   R   R   (   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR      s    c         C   s   |  j  |  o t j j |  S(   N(   R$   R   R   R(   (   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR(      s    c         C   sb   |  j  |  d } t |  } t j   } x* | j |  } | sG Pn  | j |  q. W| j   S(   Ni   i   i    (   R)   R   t   md5t   newR   t   updatet   digest(   R   R   t
   BUFFERSIZER   t   sumt   buffer(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRB      s    c         C   s   |  j  |  t j |  t S(   N(   R)   R   t   statt   ST_SIZE(   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   size   s    c         C   s'   |  j  |  t j t j |  t  S(   N(   R)   t   timet	   localtimeR   RD   t   ST_MTIME(   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   mtime   s    c         C   sF   |  j  |  t j |  t } t j t j |  t  } | | f S(   N(   R)   R   RD   RE   RG   RH   RI   (   R   R   RF   RJ   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRD   Ą   s    c         C   sK   |  j  |  } t j |  t } t j t j |  t  } | | | f S(   N(   RB   R   RD   RE   RG   RH   RI   (   R   R   RB   RF   RJ   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   info§   s    c         C   s   | d  k r |  j   } n  g  } x[ | D]S } y | j | | |  f  Wq( t j t f k
 rz | j | d  f  q( Xq( W| S(   N(   t   NoneR9   R   R   R%   R   (   R   t   functionR8   t   resR   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   _list­   s    c         C   s   |  j  |  j |  S(   N(   RO   RB   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   sumlist¸   s    c         C   s   |  j  |  j |  S(   N(   RO   RD   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   statlistť   s    c         C   s   |  j  |  j |  S(   N(   RO   RJ   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt	   mtimelistž   s    c         C   s   |  j  |  j |  S(   N(   RO   RF   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   sizelistÁ   s    c         C   s   |  j  |  j |  S(   N(   RO   RK   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   infolistÄ   s    c         C   sg   | d  k r |  j   } n  i  } x? | D]7 } y | |  | | <Wq( t j t f k
 r^ q( Xq( W| S(   N(   RL   R9   R   R%   R   (   R   RM   R8   t   dictR   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   _dictÇ   s    c         C   s   |  j  |  j |  S(   N(   RU   RB   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   sumdictŇ   s    c         C   s   |  j  |  j |  S(   N(   RU   RF   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   sizedictŐ   s    c         C   s   |  j  |  j |  S(   N(   RU   RJ   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt	   mtimedictŘ   s    c         C   s   |  j  |  j |  S(   N(   RU   RD   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   statdictŰ   s    c         C   s   |  j  |  j |  S(   N(   RV   RK   (   R   R8   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   infodictŢ   s    i    i˙˙˙˙c         C   ss   |  j  |  t |  } | j |  | d k r; d } n* | d k  rV | j   } n | j |  } | j   | S(   Ni    t    (   R)   R   t   seekR   R   (   R   R   t   offsett   lengthR   t   data(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR   á   s    	
c         C   s   |  j  |  t j j |  rq |  j |  | d } y t j |  Wn t j k
 r] n Xt j | |  n  t | d  } | j	   d  S(   NR   t   w(
   R'   R   R   R<   R)   t   unlinkR%   t   renameR   R   (   R   R   t   bnameR   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   createî   s    
c         C   sD   |  j  |  t | d  } | j |  | j |  | j   d  S(   Ns   r+(   R)   R   R]   t   writeR   (   R   R   R`   R^   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRf   ű   s
    c         C   s!   |  j  |  t j | d  d  S(   Ni˙  (   R'   R   t   mkdir(   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRg     s    c         C   s   |  j  |  t j |  d  S(   N(   R'   R   t   rmdir(   R   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRh     s    N(,   t   __name__t
   __module__R   R   R   R   R
   R$   R'   R)   R+   R.   R   RL   R5   R8   R9   R;   R<   R:   R   R(   RB   RF   RJ   RD   RK   RO   RP   RQ   RR   RS   RT   RV   RW   RX   RY   RZ   R[   R   Re   Rf   Rg   Rh   (    (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR      sR   																									t   FSProxyServerc           B   s)   e  Z e j d   Z d   Z d   Z RS(   c         C   s'   t  j |   t j j |  | |  d  S(   N(   R   R   t   servert   Server(   R   t   addresst   verbose(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR     s    c         C   s!   t  j j |   t j |   d  S(   N(   Rl   Rm   R   R   (   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR     s    c         C   s.   t  j j |   x |  j r) |  j   q Wd  S(   N(   Rl   Rm   t   _serveR   R   (   R   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRp     s     (   Ri   Rj   Rl   t   VERBOSER   R   Rp   (    (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRk     s   	t   FSProxyClientc           B   s   e  Z e j d   Z RS(   c         C   s   t  j j |  | |  d  S(   N(   t   clientt   ClientR   (   R   Rn   Ro   (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyR     s    (   Ri   Rj   Rs   Rq   R   (    (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyRr     s   c          C   sd   d d  l  }  d d  l } | j d r> |  j | j d  } n d } t d | f  } | j   d  S(   Ni˙˙˙˙i   i  R\   (   t   stringt   syst   argvt   atoiRk   t   _serverloop(   Ru   Rv   t   portt   proxy(    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   test!  s    t   __main__(    (   t   __doc__Rl   Rs   R=   R   R    RD   RG   R   R7   t   pardirR   R   Rm   Rk   Rt   Rr   R|   Ri   (    (    (    s*   /usr/lib64/python2.7/Demo/pdist/FSProxy.pyt   <module>   s    
ě	