;ς
ξό?c           @   sc  d  Z  d k Z d k Z d k Z d d d d d d g Z d e i f d     YZ y d k Z Wn e j
 o d k Z n Xe i	   Z
 [ d	 a d
   Z e a d   Z d   Z d   Z d Z h  d e <d e <d e <d e <d d <d d <Z h  d d <d d <d d <d d <d d <d d <Z d   Z d   Z d   Z d   Z d S(   s<   Various tools used by MIME-reading or MIME-writing programs.Ns   Messages   choose_boundarys   encodes   decodes   copyliterals
   copybinaryc           B   sk   t  Z d  Z d d  Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z d   Z RS(   s   A derived class of rfc822.Message that knows about MIME headers and
    contains some hooks for decoding encoded and multipart messages.i   c         C   sR   t  i i |  | |  |  i d  |  _ |  i d  |  _ |  i	   |  i
   d  S(   Ns   content-transfer-encodings   content-type(   s   rfc822s   Messages   __init__s   selfs   fps   seekables	   getheaders   encodingheaders
   typeheaders	   parsetypes
   parseplist(   s   selfs   fps   seekable(    (    s&   /mit/python/lib/python2.3/mimetools.pys   __init__   s
    
c         C   sί   |  i } | t j o
 d } n d | j o* | i d  } | | |  _ | |  } n
 d |  _ | i d  } x4 t	 t
 |   D]  } | | i   i   | | <q Wd i |  |  _ | d |  _ d i | d  |  _ d  S(   Ns
   text/plains   ;s    s   /i    i   (   s   selfs
   typeheaders   strs   Nones   indexs   is	   plisttexts   splits   fieldss   ranges   lens   strips   lowers   joins   types   maintypes   subtype(   s   selfs   is   fieldss   str(    (    s&   /mit/python/lib/python2.3/mimetools.pys	   parsetype   s    	
	 c         C   sΫ   |  i } g  |  _ xΒ | d  d j o° | d } d | j o | i d  } n t |  } | |  } d | j o? | i d  } | |  i	   i
   d | | d i	   } n |  i i | i	    | | } q Wd  S(   Ni   s   ;s   =(   s   selfs	   plisttexts   strs   plists   indexs   ends   lens   fs   is   strips   lowers   append(   s   selfs   ends   fs   is   str(    (    s&   /mit/python/lib/python2.3/mimetools.pys
   parseplist)   s    		 

0c         C   s   |  i Sd  S(   N(   s   selfs   plist(   s   self(    (    s&   /mit/python/lib/python2.3/mimetools.pys   getplist;   s    c         C   s^   | i   d } t |  } x7 |  i D], } | |  | j o t i | |  Sq& q& Wt	 Sd  S(   Ns   =(
   s   names   lowers   lens   ns   selfs   plists   ps   rfc822s   unquotes   None(   s   selfs   names   ns   p(    (    s&   /mit/python/lib/python2.3/mimetools.pys   getparam>   s    
 c         C   sY   g  } xH |  i D]= } | i d  } | d j o | i | |  i    q q W| Sd  S(   Ns   =i    (   s   results   selfs   plists   ps   finds   is   appends   lower(   s   selfs   is   ps   result(    (    s&   /mit/python/lib/python2.3/mimetools.pys   getparamnamesF   s    
 c         C   s)   |  i t j o d Sn |  i i   Sd  S(   Ns   7bit(   s   selfs   encodingheaders   Nones   lower(   s   self(    (    s&   /mit/python/lib/python2.3/mimetools.pys   getencodingN   s    c         C   s   |  i Sd  S(   N(   s   selfs   type(   s   self(    (    s&   /mit/python/lib/python2.3/mimetools.pys   gettypeS   s    c         C   s   |  i Sd  S(   N(   s   selfs   maintype(   s   self(    (    s&   /mit/python/lib/python2.3/mimetools.pys   getmaintypeV   s    c         C   s   |  i Sd  S(   N(   s   selfs   subtype(   s   self(    (    s&   /mit/python/lib/python2.3/mimetools.pys
   getsubtypeY   s    (   s   __name__s
   __module__s   __doc__s   __init__s	   parsetypes
   parseplists   getplists   getparams   getparamnamess   getencodings   gettypes   getmaintypes
   getsubtype(    (    (    s&   /mit/python/lib/python2.3/mimetools.pys   Message   s    									i    c          C   s,   t  i   t d 7a t }  t  i   |  Sd  S(   Ni   (   s   _counter_locks   acquires   _counters   results   release(   s   result(    (    s&   /mit/python/lib/python2.3/mimetools.pys   _get_next_counterj   s     


c          C   sΖ   d k  } t t j o d k } | i | i    }  y t i   } Wn t
 j
 o d } n Xy t i   } Wn t
 j
 o d } n X|  d | d | a n d t | i    t   f Sd S(   sx  Return a string usable as a multipart boundary.

    The string chosen is unique within a single program run, and
    incorporates the user id (if available), process id (if available),
    and current time.  So it's very unlikely the returned string appears
    in message text, but there's no guarantee.

    The boundary contains dots so you have to quote it in the header.Ns   1s   .s
   %s.%.3f.%d(   s   times   _prefixs   Nones   sockets   gethostbynames   gethostnames   hostids   oss   getuids   uids   AttributeErrors   getpids   pids   _get_next_counter(   s   hostids   uids   pids   times   socket(    (    s&   /mit/python/lib/python2.3/mimetools.pys   choose_boundaryt   s       		c         C   sκ   | d j o d k } | i |  |  Sn | d j o d k } | i |  |  Sn | d d d d f j o d k } | i |  |  Sn | d d	 f j o | i |  i    Sn | t	 j o t
 |  t	 | |  n t d
 |  d S(   sD   Decode common content-transfer-encodings (base64, quopri, uuencode).s   base64Ns   quoted-printables   uuencodes
   x-uuencodes   uues   x-uues   7bits   8bits%   unknown Content-Transfer-Encoding: %s(   s   encodings   base64s   decodes   inputs   outputs   quopris   uus   writes   reads	   decodetabs   pipethroughs
   ValueError(   s   inputs   outputs   encodings   uus   base64s   quopri(    (    s&   /mit/python/lib/python2.3/mimetools.pys   decode   s     			c         C   sν   | d j o d k } | i |  |  Sn | d j o  d k } | i |  | d  Sn | d d d d f j o d k } | i |  |  Sn | d	 d
 f j o | i |  i    Sn | t	 j o t
 |  t	 | |  n t d |  d S(   sD   Encode common content-transfer-encodings (base64, quopri, uuencode).s   base64Ns   quoted-printablei    s   uuencodes
   x-uuencodes   uues   x-uues   7bits   8bits%   unknown Content-Transfer-Encoding: %s(   s   encodings   base64s   encodes   inputs   outputs   quopris   uus   writes   reads	   encodetabs   pipethroughs
   ValueError(   s   inputs   outputs   encodings   uus   base64s   quopri(    (    s&   /mit/python/lib/python2.3/mimetools.pys   encode€   s     			sa   (
TEMP=/tmp/@uu.$$
sed "s%^begin [0-7][0-7]* .*%begin 600 $TEMP%" | uudecode
cat $TEMP
rm $TEMP
)s   uuencodes
   x-uuencodes   uues   x-uues   quoted-printables   mmencode -u -qs   base64s   mmencode -u -bs   uuencode tempfiles   mmencode -qs   mmencode -bc         C   s-   t  i | d  } t |  |  | i   d  S(   Ns   w(   s   oss   popens   commands   pipes   copyliterals   inputs   close(   s   inputs   commands   pipe(    (    s&   /mit/python/lib/python2.3/mimetools.pys   pipetoΤ   s    c         C   s}   t  i   \ } } t i | d  } t |  |  | i	   t i
 | d | d  } t | |  | i	   t i |  d  S(   Ns   ws    <s   r(   s   tempfiles   mkstemps   fds   tempnames   oss   fdopens   temps   copyliterals   inputs   closes   popens   commands   pipes
   copybinarys   outputs   unlink(   s   inputs   commands   outputs   temps   pipes   fds   tempname(    (    s&   /mit/python/lib/python2.3/mimetools.pys   pipethroughΩ   s    

c         C   s9   x2 n o* |  i   } | o Pn | i |  q
 Wd  S(   Ni   (   s   inputs   readlines   lines   outputs   write(   s   inputs   outputs   line(    (    s&   /mit/python/lib/python2.3/mimetools.pys   copyliteralγ   s      c         C   sB   d } x5 n o- |  i |  } | o Pn | i |  q Wd  S(   Ni    i   (   s   BUFSIZEs   inputs   reads   lines   outputs   write(   s   inputs   outputs   lines   BUFSIZE(    (    s&   /mit/python/lib/python2.3/mimetools.pys
   copybinaryι   s      (   s   __doc__s   oss   rfc822s   tempfiles   __all__s   Messages   threads   ImportErrors   dummy_threads   allocate_locks   _counter_locks   _counters   _get_next_counters   Nones   _prefixs   choose_boundarys   decodes   encodes   uudecode_pipes	   decodetabs	   encodetabs   pipetos   pipethroughs   copyliterals
   copybinary(   s	   decodetabs   pipethroughs   _counter_locks	   encodetabs   copyliterals   pipetos   uudecode_pipes   __all__s   tempfiles   decodes   encodes   _get_next_counters   rfc822s
   copybinarys   threads   choose_boundarys   Messages   os(    (    s&   /mit/python/lib/python2.3/mimetools.pys   ?   s0   			W				<	<			
	