o ?Og#@s ddlZddlZddlZddgZddZedjZGdddeZ d dZ d d Z d d Z ddZ ddZddZddgfddZd"ddZgfddZddZddZdd Zed!krcedSdS)#Ngetcaps findmatchcCsd|vr d|dfSdS)Nlinenor)r)entryrr./opt/alt/python310/lib64/python3.10/mailcap.pylineno_sort_key s r z[^\xa1-\U0010FFFF\w@+=:,./-]c@s eZdZdS)UnsafeMailcapInputN)__name__ __module__ __qualname__rrrrr sr c Cs i}d}tD]F}zt|d}Wn tyYqw|t||\}}Wdn1s/wY|D]\}}||vrE|||<q8|||||<q8q|S)Nrr)listmailcapfilesopenOSError_readmailcapfileitems)capsrZmailcapfpZmorecapskeyvaluerrrrs$    cCsT dtjvrtjd}|tj}|Sdtjvrtjd}nd}|ddddg}|S)NZMAILCAPSHOME.z /.mailcapz /etc/mailcapz/usr/etc/mailcapz/usr/local/etc/mailcap)osenvironsplitpathsep)ZpathstrZmailcapshomerrrr3s    rcCs" tdtdt|d\}}|S)Nz2readmailcapfile is deprecated, use getcaps instead)warningswarnDeprecationWarningr)rr_rrrreadmailcapfileEs r$c Cs i} |}|s||fS|ddks|dkrq|}|dddkr=|}|s-d}|dd|}|dddks%t|\}}|rG|sHq|durT||d<|d7}|d }tt|D] }||||<q_d |}||vr}|||n|g||<q) Nrr#z\  r/) readlinestrip parselinerrangelenjoinlowerappend) rrrlineZnextlinerfieldstypesjrrrrMs8   rc Cs g}dt|}}||kr#t|||\}}|||d}||kst|dkr+dS|d|d|dd}}}d|i}|D]+}|d}|dkrQ|}d} n|d|}||dd} ||vrhqA| ||<qA||fS)NrrrNNview=r&)r. parsefieldr1findr+) r2r3infieldrr7restZfkeyZfvaluerrrr,vs.     r,cCsV |}||kr!||}|dkrn|dkr|d}n|d}||ks||||fS)N;\rr)r+)r2r;r<startcrrrr9s r9r7z /dev/nullc Cs t|rd|f}t|tdSt|||}|D]0}d|vr7t|d||}|dur-q|r7t|dkr7qt|||||} | durJ| |fSqdS)NzHRefusing to use mailcap with filename %r. Use a safe temporary filename.r6testr) _find_unsafer r!r lookupsubstrsystem) rMIMEtyperfilenameplistmsgentrieserCcommandrrrrs$    cslg}||vr |||}|d}|dd}||vr!|||}dur.fdd|D}t|td}|S)Nr)rz/*csg|]}|vr|qSrr).0rMrrr szlookup..rP)rsortedr )rrHrrLZ MIMEtypesrrPrrEs     rEc Csdd}dt|}}||kr||}|d}|dkr.|dkr)|||d}|d}||}n~||}|d}|dkr?||}nm|dkrH||}nd|dkrbt|r]d|f}t|tdS||}nJ|d kr|} ||kr||d kr|d}||kr||d ksr|| |} |d}t| |} t| rd | | f}t|tdS|| }n|d|}||ks |S) Nr&rr%r@stz9Refusing to substitute MIME type %r into a shell command.{}z=Refusing to substitute parameter %r (%s) into a shell command)r.rDr r!r findparam) r=rHrIrJresr;r<rBrKrAnameZparamrrrrFsF            #rFcCsF|d}t|}|D]}|d||kr ||dSq dS)Nr8r&)r0r.)rZrJr<prrrrXs rXc Csddl}t}|jddst|dStdt|jdD]G}|j||d}t|dkr5tddS|d}|d}t||d|\}}|sNtdtqtd|t |}t |}|rdtd|qdS) Nrrrz"usage: mailcap [MIMEtype file] ...r7zNo viewer found forz Executing:z Exit status:) sysrargvshowr-r.printrtyperrGwaitstatus_to_exitcode) r\rr;argsrHfilerNrMstsrrrrCs,      rCcCstdtD]}td|qt|st}tdtt|}|D]$}t|||}|D]}t|}|D] }td|||q9tq1q%dS)NzMailcap files: zMailcap entries:z %-15s)r_rrrR)rfnZckeysr`rLrMkeyskrrrr^s" r^__main__)N)rr re__all__r compilesearchrDWarningr rrr$rr,r9rrErFrXrCr^r rrrrs. )  )