N
u9c       s     d  Z    k Z  k Z 	 d   Z  d   Z 2 d   Z P d   Z j d   Z y d d g  d  Z  e	 d	  Z
  g  d
  Z  d   Z  d   Z  d   Z  e d j o  e   n d S(   s%   Mailcap file handling.  See RFC 1524.c     s   	   h  }   x t   d  r }  y  t | d  } Wn   q n X t |  }  | i    x[ | i   d  rH }  |  i
 |  o  | | |  | <n  |  | | | |  | <q Wq W |  Sd S(   s   Return a dictionary containing the mailcap database.
    
    The dictionary maps a MIME type (in all lowercase,
    e.g. 'text/plain') to a list of corresponding mailcap entries.

    i    s   rN(   s   capss   listmailcapfiless   mailcaps   opens   fps   readmailcapfiles   morecapss   closes   keyss   keys   has_key(   s   capss   mailcaps   fps   morecapss   keys+   /usr/lib/python1.5/site-packages/mailcap.pys   getcaps	 s    	 	
 	!c     s      " t  i i d  o) # t  i d }  $ t i |  d  } nM & t  i i d  o ' t  i d } n
 * d } + | d d d d g } - | Sd	 S(
   s7   Return a list of all mailcap files found on the system.s   MAILCAPSs   :s   HOMEs   .s	   /.mailcaps   /etc/mailcaps   /usr/etc/mailcaps   /usr/local/etc/mailcapN(   s   oss   environs   has_keys   strs   strings   splitfieldss   mailcapss   home(   s   strs   mailcapss   homes+   /usr/lib/python1.5/site-packages/mailcap.pys   listmailcapfiles s   	c    s  2 3 h  } 4 x4 d o5 |  i   } 6 | o 6 Pn 8 | d d j p t i |  d j o
 9 q n : | } < xS < | d d j o= = |  i   } > | o > d } n ? | d  | } q WA t |  \ } } B | o | o
 C q n E t i
 | d  } F x9 t t |   d F r  } G t i | |  | | <q2WH t i t i | d   } J | i |  o K | | i |  n M | g | | <q WN | Sd  S(	   Ni   i    s   #s    i   s   \
s   
s   /(   s   capss   fps   readlines   lines   strings   strips   nextlines	   parselines   keys   fieldss   splitfieldss   typess   ranges   lens   js   lowers
   joinfieldss   has_keys   append(   s   fps   capss   lines   nextlines   keys   fieldss   typess   js+   /usr/lib/python1.5/site-packages/mailcap.pys   readmailcapfile2 s6   	 
 *
	  
 	c 
   s  P Q g  } R d t |   f \ } } S xM S | | j  o< T t |  | |  \ } } U | i |  V | d } q- WW t |  d j  o X t t f Sn Y | d | d | d f \ } } } Z h  | d <} [ x | d [ r } \ t i | d  } ] | d j  o ^ | } _ d }	 n1 a t i | |   } b t i | | d  }	 c | i |  o e n g |	 | | <q Wh | | f Sd  S(   Ni    i   i   s   views   =s    (   s   fieldss   lens   lines   is   ns
   parsefields   fields   appends   Nones   keys   views   rests   strings   finds   fkeys   fvalues   strips   has_key(
   s   lines   fieldss   is   ns   fields   keys   views   rests   fkeys   fvalues+   /usr/lib/python1.5/site-packages/mailcap.pys	   parselineP s.   	 ' 		c    s   j k | } l xh l | | j  oW m |  | } n | d j o o Pn/ p | d j o q | d } n s | d } q Wt t i |  | | ! | f Sd  S(   Ns   ;s   \i   i   (   s   is   starts   ns   lines   cs   strings   strip(   s   lines   is   ns   starts   cs+   /usr/lib/python1.5/site-packages/mailcap.pys
   parsefieldj s   	 c 	   s   y   t  |  | |  }  x | d  r }  | i d  oG  t | d | |  }  | o t i |  d j o
  q' n n  t | | | | |  }  | | f Sq' W t t f Sd S(   s  Find a match for a mailcap entry.
    
    Return a tuple containing the command line, and the mailcap entry
    used; (None, None) if no match is found.  This may invoke the
    'test' command of several matching entries before deciding which
    entry to use.

    i    s   testN(   s   lookups   capss   MIMEtypes   keys   entriess   es   has_keys   substs   filenames   plists   tests   oss   systems   commands   None(	   s   capss   MIMEtypes   keys   filenames   plists   entriess   es   tests   commands+   /usr/lib/python1.5/site-packages/mailcap.pys	   findmatchy s    	 s   views	   /dev/nullc    s     g  }  |  i |  o  | |  | } n  t i | d  }  | d d }  |  i |  o  | |  | } n  | t j	 o  t	 | d  |  } n  | Sd  S(   Ns   /i    s   /*c    s    |  i |  S(   N(   s   es   has_keys   key(   s   es   keys+   /usr/lib/python1.5/site-packages/mailcap.pys   <lambda> s    (
   s   entriess   capss   has_keys   MIMEtypes   strings   splitfieldss	   MIMEtypess   keys   Nones   filter(   s   capss   MIMEtypes   keys   entriess	   MIMEtypess+   /usr/lib/python1.5/site-packages/mailcap.pys   lookup s   	c 
   s    d }  d t |   f \ } }  x | | j  o |  | } | d }  | d j oC  | d j o"  |  | | d !} | d } n  | | } n |  | } | d }  | d j o  | | } n  | d j o  | | } n  | d j o  | | } n  | d j oy  | }  x3  | | j  o |  | d	 j o  | d } q@W |  | | !}	  | d }  | t
 |	 |  } n  | d | } q- W | Sd  S(
   Ns    i    i   s   %s   \s   ss   ts   {s   }(   s   ress   lens   fields   is   ns   cs   filenames   MIMEtypes   starts   names	   findparams   plist(
   s   fields   MIMEtypes   filenames   plists   ress   is   ns   cs   starts   names+   /usr/lib/python1.5/site-packages/mailcap.pys   subst s4   	 "	 !c    sx     t  i |   d }   t |   }  x? | d  r2 }  t  i | |   |  j o  | | Sn q4 W d Sd  S(   Ns   =i    s    (   s   strings   lowers   names   lens   ns   plists   p(   s   names   plists   ns   ps+   /usr/lib/python1.5/site-packages/mailcap.pys	   findparam s    	c  	   s?    k  }   t   }  |  i d o  t |   d  Sn  x t d t |  i  d  d  r }  |  i | | d !}  t |  d j  o  d GH d  Sn  | d }  | d }  t | | d |  \ } }  | o  d Gt GHn9  d G| GH t i |  }  | o  d G| GHn qc Wd  S(	   Ni   i   i    s"   usage: mailcap [MIMEtype file] ...s   views   No viewer found fors
   Executing:s   Exit status:(   s   syss   getcapss   capss   argvs   shows   ranges   lens   is   argss   MIMEtypes   files	   findmatchs   commands   es   types   oss   systems   sts(	   s   syss   capss   is   argss   MIMEtypes   files   commands   es   stss+   /usr/lib/python1.5/site-packages/mailcap.pys   test s(   	! 	
c    s    d GH x" t    d  r }  d | GHq W H |  o  t   }  n  d GH H |  i   }  | i    x | d  r }  | GH |  | }  x` | d  rS }  | i   }  | i    x' | d  r }  d | G| | GHq W Hq Wq Wd  S(   Ns   Mailcap files:i    s   	s   Mailcap entries:s     %-15s(   s   listmailcapfiless   fns   capss   getcapss   keyss   ckeyss   sorts   types   entriess   es   k(   s   capss   fns   ckeyss   types   entriess   es   keyss   ks+   /usr/lib/python1.5/site-packages/mailcap.pys   show s.    	   	 	 	s   __main__N(   s   __doc__s   oss   strings   getcapss   listmailcapfiless   readmailcapfiles	   parselines
   parsefields	   findmatchs   Nones   lookups   substs	   findparams   tests   shows   __name__(    s+   /usr/lib/python1.5/site-packages/mailcap.pys   ? s   		 