a DOg#@sddlZddlZddlZddgZddZedjZGdddeZ d dZ d d Z d d Z ddZ ddZddZddgfddZd"ddZgfddZddZddZdd Zed!kredS)#Ngetcaps findmatchcCsd|vrd|dfSdSdS)Nlinenor)r)entryrr,/opt/alt/python39/lib64/python3.9/mailcap.pylineno_sort_key s r z[^\xa1-\U0010FFFF\w@+=:,./-]c@s eZdZdS)UnsafeMailcapInputN)__name__ __module__ __qualname__rrrrr sr c Csi}d}tD]}zt|d}Wnty6YqYn0|t||\}}Wdn1s`0Y|D]*\}}||vr|||<qr|||||<qrq|S)Nrr)listmailcapfilesopenOSError_readmailcapfileitems)capsrZmailcapfpZmorecapskeyvaluerrrrs    , cCsPdtjvr"tjd}|tj}n*dtjvr8tjd}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 Csi}|}|sq|ddks|dkr,q|}|dddkrb|}|sPd}|dd|}q0t|\}}|r|sxq|dur||d<|d7}|d }tt|D]}||||<qd |}||vr|||q|g||<q||fS) Nr#z\  rr/) readlinestrip parselinerrangelenjoinlowerappend) rrrlineZnextlinerfieldstypesjrrrrMs0    rc Csg}dt|}}||kr>t|||\}}|||d}qt|dkrNdS|d|d|dd}}}d|i}|D]V}|d}|dkr|}d} n$|d|}||dd} ||vrqz| ||<qz||fS)NrrrNNview=r&)r. parsefieldr1findr+) r2r3infieldrr7restZfkeyZfvaluerrrr,vs*      r,cCsP|}||kr<||}|dkr qzlookup..rP)rsortedr )rrHrrLZ MIMEtypesrrPrrEs     rEc CsRd}dt|}}||krN||}|d}|dkr^|dkrT|||d}|d}||}q||}|d}|dkr||}q|dkr||}q|dkrt|rd|f}t|tdS||}q|d kr@|} ||kr||d kr|d}q|| |} |d}t| |} t| r6d | | f}t|tdS|| }q|d|}q|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<rBrKrAnameZparamrrrrFsB               rFcCsF|d}t|}|D](}|d||kr||dSqdS)Nr8r&)r0r.)r[rJr<prrrrYs  rYc Csddl}t}|jdds(t|dStdt|jdD]}|j||d}t|dkrjtddS|d}|d}t||d|\}}|stdtq:td|t |}t |}|r:td|q:dS) Nrrrz"usage: mailcap [MIMEtype file] ...r7zNo viewer found forz Executing:z Exit status:) sysrargvshowr-r.printrtyperrGwaitstatus_to_exitcode) r]rr;argsrHfilerNrMstsrrrrCs(     rCcCstdtD]}td|qt|s0t}tdtt|}|D]H}t|||}|D].}t|}|D]}td|||qrtqbqJdS)NzMailcap files: zMailcap entries:z %-15s)r`rrrS)rfnZckeysrarLrMkeyskrrrr_s r___main__)N)rr re__all__r compilesearchrDWarningr rrr$rr,r9rrErFrYrCr_r rrrrs( ) )