Current File : //proc/thread-self/root/usr/lib64/python2.7/mailcap.pyc
�
zfc@s�dZddlZddlZddlZddgZejd�jZdefd��YZ d�Z
d �Zd
�Zd�Z
d�Zd
dgd�Zdd�Zgd�Zd�Zd�Zd�Zedkr�e�ndS(s%Mailcap file handling. See RFC 1524.i����Ntgetcapst findmatchs[^\xa1-\xff\w@+=:,./-]tUnsafeMailcapInputcBseZdZRS(s)Warning raised when refusing unsafe input(t__name__t
__module__t__doc__(((s/usr/lib64/python2.7/mailcap.pyRscCs�i}x�t�D]�}yt|d�}Wntk
r?qnX|�t|�}WdQXxE|j�D]7\}}||kr�|||<qf|||||<qfWqW|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 dictionaries corresponding to mailcap entries. The list
collects all the entries for that MIME type from all available mailcap
files. Each dictionary contains key-value pairs for that MIME type,
where the viewing command is stored with the key "view".
trN(tlistmailcapfilestopentIOErrortreadmailcapfilet iteritems(tcapstmailcaptfptmorecapstkeytvalue((s/usr/lib64/python2.7/mailcap.pyRs
cCsmdtjkr.tjd}|jd�}n;dtjkrMtjd}nd}|ddddg}|S( s7Return a list of all mailcap files found on the system.tMAILCAPSt:tHOMEt.s /.mailcaps/etc/mailcaps/usr/etc/mailcaps/usr/local/etc/mailcap(tostenvirontsplit(tstrtmailcapsthome((s/usr/lib64/python2.7/mailcap.pyR+s
cCs;i}x.|j�}|sPn|ddks |j�dkrGq n|}x=|ddkr�|j�}|s{d}n|d |}qPWt|�\}}|o�|s�q n|jd�}x.tt|��D]}||j�||<q�Wdj|�j�}||kr&||j|�q |g||<q W|S(s�Read a mailcap file and return a dictionary keyed by MIME type.
Each MIME type is mapped to an entry consisting of a list of
dictionaries; the list will contain more than one such dictionary
if a given MIME type appears more than once in the mailcap file.
Each dictionary contains key-value pairs for that MIME type, where
the viewing command is stored with the key "view".
it#ti����s\
s
t/( treadlinetstript parselineRtrangetlentjointlowertappend(RRtlinetnextlineRtfieldsttypestj((s/usr/lib64/python2.7/mailcap.pyR
>s0 " c
Cs g}dt|�}}x?||krZt|||�\}}|j|�|d}qWt|�dkrqdS|d|d|d}}}i|d6}xu|D]m}|jd�}|dkr�|}d} n$|| j�}||dj�} ||krq�| ||<q�W||fS( s�Parse one entry in a mailcap file and return a dictionary.
The viewing command is stored as the value with the key "view",
and the rest of the fields produce key-value pairs in the dict.
iiitviewt=RN(NN(R#t
parsefieldR&tNonetfindR (
R'R)titntfieldRR,tresttfkeytfvalue((s/usr/lib64/python2.7/mailcap.pyR!ds*
cCsm|}xM||krU||}|dkr/Pq |dkrH|d}q |d}q W|||!j�|fS(s/Separate one key-value pair in a mailcap entry.t;s\ii(R (R'R1R2tstarttc((s/usr/lib64/python2.7/mailcap.pyR.�s
R,s /dev/nullc
Cs�t|�r-d|f}tj|t�dSt|||�}x�|D]�}d|kr�t|d||�}|dkr�qFn|r�tj|�dkr�qFq�nt|||||�} | dk rF| |fSqFWdS(sFind 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.
sHRefusing to use mailcap with filename %r. Use a safe temporary filename.ttestiN(NN(NN( t_find_unsafetwarningstwarnRR/tlookuptsubstRtsystem(
RtMIMEtypeRtfilenametplisttmsgtentriesteR:tcommand((s/usr/lib64/python2.7/mailcap.pyR�s
cCs�g}||kr#|||}n|jd�}|dd}||kr]|||}n|dk r�t|d�|�}n|S(NRis/*cSs
||kS(N((RFR((s/usr/lib64/python2.7/mailcap.pyt<lambda>�R(RR/tfilter(RRARREt MIMEtypes((s/usr/lib64/python2.7/mailcap.pyR>�scCs�d}dt|�}}x�||kr�||}|d}|dkr|dkrr|||d!}|d}n||}q||}|d}|dkr�||}q|dkr�||}q|dkrt|�r�d|f}tj|t�dS||}q|d kr�|} x*||krI||d
krI|d}q W|| |!}
|d}t|
|�}t|�r�d||
f}tj|t�dS||}q|d|}qW|S(NRiit%s\tstts9Refusing to substitute MIME type %r into a shell command.t{t}s=Refusing to substitute parameter %r (%s) into a shell command(R#R;R<R=RR/t findparam(R3RARBRCtresR1R2R9RDR8tnametparam((s/usr/lib64/python2.7/mailcap.pyR?�sH
cCsO|j�d}t|�}x,|D]$}|| j�|kr#||Sq#WdS(NR-R(R%R#(RRRCR2tp((s/usr/lib64/python2.7/mailcap.pyRP�s
c Cs�ddl}t�}|jds0t|�dSx�tdt|j�d�D]�}|j||d!}t|�dkr�dGHdS|d}|d}t||d|�\}}|s�dGtGHqLdG|GHtj |�}|rLd G|GHqLqLWdS(
Ni����iis"usage: mailcap [MIMEtype file] ...iR,sNo viewer found fors
Executing:sExit status:(
tsysRtargvtshowR"R#RttypeRR@( RURR1targsRAtfileRGRFtsts((s/usr/lib64/python2.7/mailcap.pyR:�s&
"
cCs�dGHxt�D]}d|GHqWH|s5t�}ndGHH|j�}|j�xg|D]_}|GH||}xG|D]?}|j�}|j�x|D]}d|G||GHq�WHqtWqXWdS(NsMailcap files:s sMailcap entries:s %-15s(RRtkeystsort(RtfntckeysRXRERFR\tk((s/usr/lib64/python2.7/mailcap.pyRWs&
t__main__(RRR<tret__all__tcompiletsearchR;tWarningRRRR
R!R.RR/R>R?RPR:RWR(((s/usr/lib64/python2.7/mailcap.pyt<module>s& & )