
h[\a                 @   s   d  Z  d d l Z d d l Z d d l Z d d d g Z Gd d   d e  Z d d d d  Z d d d d	 d  Z d
 d   Z	 e
 d k r e	   n  d S)zImplementation of the UUencode and UUdecode functions.

encode(in_file, out_file [,name, mode])
decode(in_file [, out_file, mode])
    NErrorencodedecodec               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r   r   /usr/lib/python3.4/uu.pyr   '   s   c             C   s  g  } z|  d k r$ t  j j }  n t |  t  r | d k rT t j j |   } n  | d k r y t j |   j	 } Wq t
 k
 r Yq Xn  t |  d  }  | j |   n  | d k r t  j j } n. t | t  r t | d  } | j |  n  | d k rd } n  | d k r d } n  | j d | d @| f j d   |  j d	  } x; t |  d
 k r| j t j |   |  j d	  } qVW| j d  Wd x | D] } | j   qWXd S)zUuencode file-Nrbwbi  zbegin %o %s
i  ascii-   r   s    
end
)sysstdinbuffer
isinstancestrospathbasenamestatst_modeAttributeErroropenappendstdoutwriter   readlenbinasciiZb2a_uuclose)in_fileout_filenamemodeopened_filesdatafr   r   r	   r   *   s>    		$Fc             C   s  g  } |  d k r! t  j j }  n. t |  t  rO t |  d  }  | j |   n  z}x |  j   } | sv t d   n  | j	 d  s qU n  | j
 d d  } t |  d k rU | d d k rU y t | d	 d
  PWq t k
 r Yq XqU qU | d k r@| d j d  j d  } t j j |  r@t d |   q@n  | d k rbt | d	 d
  } n  | d k r}t  j j } n` t | t  rt | d  } y t j j | |  Wn t k
 rYn X| } | j |  n  |  j   } x | r| j d  d k ry t j |  }	 Wn| t j k
 r}
 zY | d d d @d d d } t j | d |   }	 | st  j j d |
  n  WYd d }
 ~
 Xn X| j |	  |  j   } qW| st d   n  Wd x | D] } | j   qWXd S)zDecode uuencoded filer
   r   z'No valid begin line found in input files   begin          r         Ns    	
r   z"Cannot overwrite existing file: %sr   s   end    ?         zWarning: %s
zTruncated input file)r   r   r   r   r   r   r   readliner   
startswithsplitr   int
ValueErrorrstripr   r   r   existsr   chmodr   stripr    Za2b_uustderrr   r!   )r"   r#   r%   quietr&   ZhdrZ	hdrfieldsfpsr'   vnbytesr(   r   r   r	   r   Z   sf    "*c              C   s  d d l  }  |  j d d  } | j d d d d d	 d
 d d d d | j d d d d d	 d d d d d | j   \ } } t |  d k r | j d  t j d  n  t j j	 } t j
 j	 } t |  d k r | d } n  t |  d k r| d } n  | j rl| j r\t | t  r8t | d  } q\t t j d d  t j d  n  t | |  n[ | j rt | t  rt | d  } qt t j d d  t j d  n  t | |  d S)zuuencode/uudecode main programr   NZusagez'usage: %prog [-d] [-t] [input [output]]z-dz--decodedestr   helpzDecode (instead of encode)?defaultFaction
store_truez-tz--texttextz2data is text, encoded format unix-compatible text?r*   zincorrect number of argumentsr,   r   z: cannot do -t to stdoutr   z: cannot do -t from stdin)optparseZOptionParserZ
add_option
parse_argsr   errorr   exitr   r   r   r   rF   r   r   r   printargvr   )rG   parserZoptionsargsinputoutputr   r   r	   test   s6    ((			rQ   __main__)__doc__r    r   r   __all__	Exceptionr   r   r   rQ   r   r   r   r   r	   <module>   s   0F&