uawdijnntqw1x1x1
IP : 3.133.132.119
Hostname : ns1.eurodns.top
Kernel : Linux ns1.eurodns.top 4.18.0-553.5.1.lve.1.el7h.x86_64 #1 SMP Fri Jun 14 14:24:52 UTC 2024 x86_64
Disable Function : mail,sendmail,exec,passthru,shell_exec,system,popen,curl_multi_exec,show_source,eval,open_base
OS : Linux
PATH:
/
home
/
..
/
var
/
spool
/
..
/
..
/
lib64
/
python2.7
/
mhlib.pyo
/
/
� �mec@s|dZddlmZeddd�[dZdZdZd Zdd lZdd lZdd l Z dd l Z dd lZdd lZddl m Z dd ddgZd efd��YZdfd��YZe jd�Zd�Zdfd��YZde jfd��YZdefd��YZdfd��YZdd�Zdd�Zd�Zedkrxe�nd S(s� MH interface -- purely object-oriented (well, almost) Executive summary: import mhlib mh = mhlib.MH() # use default mailbox directory and profile mh = mhlib.MH(mailbox) # override mailbox location (default from profile) mh = mhlib.MH(mailbox, profile) # override mailbox and profile mh.error(format, ...) # print error message -- can be overridden s = mh.getprofile(key) # profile entry (None if not set) path = mh.getpath() # mailbox pathname name = mh.getcontext() # name of current folder mh.setcontext(name) # set name of current folder list = mh.listfolders() # names of top-level folders list = mh.listallfolders() # names of all folders, including subfolders list = mh.listsubfolders(name) # direct subfolders of given folder list = mh.listallsubfolders(name) # all subfolders of given folder mh.makefolder(name) # create new folder mh.deletefolder(name) # delete folder -- must have no subfolders f = mh.openfolder(name) # new open folder object f.error(format, ...) # same as mh.error(format, ...) path = f.getfullname() # folder's full pathname path = f.getsequencesfilename() # full pathname of folder's sequences file path = f.getmessagefilename(n) # full pathname of message n in folder list = f.listmessages() # list of messages in folder (as numbers) n = f.getcurrent() # get current message f.setcurrent(n) # set current message list = f.parsesequence(seq) # parse msgs syntax into list of messages n = f.getlast() # get last message (0 if no messagse) f.setlast(n) # set last message (internal use only) dict = f.getsequences() # dictionary of sequences in folder {name: list} f.putsequences(dict) # write sequences back to folder f.createmessage(n, fp) # add message from file f as number n f.removemessages(list) # remove messages in list from folder f.refilemessages(list, tofolder) # move messages in list to other folder f.movemessage(n, tofolder, ton) # move one message to a given destination f.copymessage(n, tofolder, ton) # copy one message to a given destination m = f.openmessage(n) # new open message object (costs a file descriptor) m is a derived class of mimetools.Message(rfc822.Message), with: s = m.getheadertext() # text of message's headers s = m.getheadertext(pred) # text of message's headers, filtered by pred s = m.getbodytext() # text of message's body, decoded s = m.getbodytext(0) # text of message's body, not decoded i����(twarnpy3ksOthe mhlib module has been removed in Python 3.0; use the mailbox module insteadt stacklevelis ~/.mh_profiles~/Mails .mh_sequencesi�N(tbisecttMHtErrortFoldertMessagecBseZRS((t__name__t __module__(((s/usr/lib64/python2.7/mhlib.pyR[scBs�eZdZddd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z d�Zd�Zd �Zd�ZRS(s<Class representing a particular collection of folders. Optional constructor arguments are the pathname for the directory containing the collection, and the MH profile to use. If either is omitted or empty a default is used; the default directory is taken from the MH profile if it is specified there.cCs�|dkrt}ntjj|�|_|dkrH|jd�}n|sWt}ntjj|�r�|ddkr�tjj d|�}ntjj|�}tjj |�s�td�n||_dS(sConstructor.tPathit~sMH() path not foundN(tNonet MH_PROFILEtostpatht expandusertprofilet getprofiletPATHtisabstjointisdirR(tselfRR((s/usr/lib64/python2.7/mhlib.pyt__init__fs #cCsd|j|jfS(sString representation.s MH(%r, %r)(RR(R((s/usr/lib64/python2.7/mhlib.pyt__repr__rscGstjjd||�dS(sARoutine to print an error. May be overridden by a derived class.s MH error: %s N(tsyststderrtwrite(Rtmsgtargs((s/usr/lib64/python2.7/mhlib.pyterrorvscCst|j|�S(s*Return a profile entry, None if not found.(tpicklineR(Rtkey((s/usr/lib64/python2.7/mhlib.pyRzscCs|jS(s9Return the path (the name of the collection's directory).(R(R((s/usr/lib64/python2.7/mhlib.pytgetpath~scCs7ttjj|j�d�d�}|s3d}n|S(s&Return the name of the current folder.tcontextsCurrent-Foldertinbox(RR RRR!(RR"((s/usr/lib64/python2.7/mhlib.pyt getcontext�s cCsItjj|j�d�}t|d�}|jd|�|j�dS(s#Set the name of the current folder.R"twsCurrent-Folder: %s N(R RRR!topenRtclose(RR"tfntf((s/usr/lib64/python2.7/mhlib.pyt setcontext�scCsqg}|j�}xNtj|�D]=}tjj||�}tjj|�r"|j|�q"q"W|j�|S(s*Return the names of the top-level folders.(R!R tlistdirRRRtappendtsort(RtfoldersRtnametfullname((s/usr/lib64/python2.7/mhlib.pytlistfolders�s c Cs�tjj|j|�}tj|�j}|dkr:gSg}tj|�}xt|D]l}tjj||�}tjj|�rVtjj||�}|j|�|d}|dkr�Pq�qVqVW|j�|S(scReturn the names of the subfolders in a given folder (prefixed with the given folder name).ii( R RRtstattst_nlinkR+RR,R-( RR/R0tnlinkst subfolderstsubnamestsubnametfullsubnametname_subname((s/usr/lib64/python2.7/mhlib.pytlistsubfolders�s cCs |jd�S(s<Return the names of all folders and subfolders, recursively.t(tlistallsubfolders(R((s/usr/lib64/python2.7/mhlib.pytlistallfolders�sc Cs$tjj|j|�}tj|�j}|dkr:gSg}tj|�}x�|D]�}|ddksVt|�r~qVntjj||�}tjj|�rVtjj||�}|j|�tjj |�s�|j |�} || }n|d}|dkrPqqVqVW|j�|S(s>Return the names of subfolders in a given folder, recursively.iit,i(R RRR2R3R+t isnumericRR,tislinkR<R-( RR/R0R4R5R6R7R8R9t subsubfolders((s/usr/lib64/python2.7/mhlib.pyR<�s, cCs t||�S(s0Return a new Folder object for the named folder.(R(RR/((s/usr/lib64/python2.7/mhlib.pyt openfolder�scCset|jd�}|r6t|�r6t|d�}nt}tjtjj|j �|�|�dS(s@Create a new folder (or raise os.error if it cannot be created).sFolder-ProtectiN( RRR?tinttFOLDER_PROTECTR tmkdirRRR!(RR/tprotecttmode((s/usr/lib64/python2.7/mhlib.pyt makefolder�s cCs�tjj|j�|�}xetj|�D]T}tjj||�}ytj|�Wq+tjk r~|jd|�q+Xq+Wtj|�dS(s�Delete a folder. This removes files in the folder but not subdirectories. Raise os.error if deleting the folder itself fails.s%s not deleted, continuing...N(R RRR!R+tunlinkRtrmdir(RR/R0R7R8((s/usr/lib64/python2.7/mhlib.pytdeletefolder�s N(RRt__doc__RRRRRR!R$R*R1R:R=R<RBRHRK(((s/usr/lib64/python2.7/mhlib.pyR_s s ^[1-9][0-9]*$cCstj|�dk S(N(tnumericprogtmatchR(tstr((s/usr/lib64/python2.7/mhlib.pyR?�scBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Zd �Zd�Z d�Zd �Zd�Zd�Zd�Zd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(s'Class representing a particular folder.cCs>||_||_tjj|j��s:td|�ndS(sConstructor.sno folder %sN(tmhR/R RRtgetfullnameR(RRPR/((s/usr/lib64/python2.7/mhlib.pyR�s cCsd|j|jfS(sString representation.sFolder(%r, %r)(RPR/(R((s/usr/lib64/python2.7/mhlib.pyR�scGs|jj|�dS(sError message handler.N(RPR(RR((s/usr/lib64/python2.7/mhlib.pyRscCstjj|jj|j�S(s'Return the full pathname of the folder.(R RRRPR/(R((s/usr/lib64/python2.7/mhlib.pyRQscCstjj|j�t�S(s8Return the full pathname of the folder's sequences file.(R RRRQtMH_SEQUENCES(R((s/usr/lib64/python2.7/mhlib.pytgetsequencesfilenamescCstjj|j�t|��S(s4Return the full pathname of a message in the folder.(R RRRQRO(Rtn((s/usr/lib64/python2.7/mhlib.pytgetmessagefilenamescCs|jj|j�S(s!Return list of direct subfolders.(RPR:R/(R((s/usr/lib64/python2.7/mhlib.pyR:scCs|jj|j�S(sReturn list of all subfolders.(RPR<R/(R((s/usr/lib64/python2.7/mhlib.pyR<scCs�g}tj}|j}x6tj|j��D]}||�r.||�q.q.Wtt|�}|j�|r�|d|_ n d|_ |S(s�Return the list of messages currently present in the folder. As a side effect, set self.last to the last message (or 0).i����i( RMRNR,R R+RQtmapRCR-tlast(RtmessagesRNR,R/((s/usr/lib64/python2.7/mhlib.pytlistmessagess cCs�i}|j�}yt|d�}Wntk r9|SXx�|j�}|sSPn|jd�}t|�dkr�|jd||j�f�n|dj�}t|dj�d�j �}|||<q=|S(s+Return the set of sequences for the folder.trt:isbad sequence in %s: %siit ( RSR&tIOErrortreadlinetsplittlenRtstriptIntSetttolist(Rt sequencesR0R)tlinetfieldsR tvalue((s/usr/lib64/python2.7/mhlib.pytgetsequences)s$ cCs�|j�}d}xk|j�D]]\}}tdd�}|j|�|s_t|d�}n|jd||j�f�qW|s�ytj |�Wq�tj k r�q�Xn |j�dS(s.Write the set of sequences back to the folder.R;R\R%s%s: %s N(RSRt iteritemsRbtfromlistR&RttostringR RIRR'(RRdR0R)R tseqts((s/usr/lib64/python2.7/mhlib.pytputsequences=s !cCsE|j�}yt|d�SWn ttfk r@td�nXdS(s<Return the current message. Raise Error when there is none.tcursno cur messageN(Rhtmaxt ValueErrortKeyErrorR(Rtseqs((s/usr/lib64/python2.7/mhlib.pyt getcurrentNs cCs#t|j�dt|�d�dS(sSet the current message.RoiN(t updatelineRSRO(RRT((s/usr/lib64/python2.7/mhlib.pyt setcurrentVscCsL|j�}|s%td|j�n|dkr5|S|jd�}|dkr || d||d}}}|d dkr�|d |d}}nt|�s�td|�nyt|�}Wn#ttfk r�t|�}nXy|j ||�}Wn�tk r�} |j �} || krV| s=d|} nt| tj�d �n| |}|svtd |�n|dkr�||S|| Sq X|s�|dkr�d}q�n|dkr�t ||�}|td||�|!St ||d�}||||!Sn|jd�}|dkr�|j || |�}|j ||d|�} t ||d�}t || �}|||!}|s�td|�n|Sy|j ||�}WnOtk r} |j �} || kr| s�d|} nt| �n| |SX||krAt|�r1td|�qHtd|�n|gSdS(s�Parse an MH sequence specification into a message list. Attempt to mimic mh-sequence(5) as close as possible. Also attempt to mimic observed behavior regarding which conditions cause which error messages.sno messages in %stallR[iR;is-+sbad message list %sissequence %s emptyt-tprevRWsmessage %d doesn't exists no %s messageN(Ryslast(RYRR/tfindR?RCRqt OverflowErrorR`t_parseindexRhRtexc_infoRRp(RRlRwtitheadtdirttailtcounttanchorRRstmsgstbegintendtjRZRT((s/usr/lib64/python2.7/mhlib.pyt parsesequenceZs| cCsLt|�r;yt|�SWq;ttfk r7tjSXn|d krQ|j�S|dkre|dS|dkry|dS|dkr�|j�}t||�}y||SWq�tk r�t d�q�Xn|d kr?|j�}t||d �}|dkrt d�ny||d SWq?tk r;t d�q?Xnt d�dS(s7Internal: parse a message number (or cur, first, etc.).Rot.tfirstiRWi����tnextsno next messageRyisno prev messageN(scurR�(R?RCR{RqRtmaxintRtRt IndexErrorRR(RRlRwRTR~((s/usr/lib64/python2.7/mhlib.pyR|�s8 cCs t||�S(s+Open a message -- returns a Message object.(R(RRT((s/usr/lib64/python2.7/mhlib.pytopenmessage�scCsg}g}x�|D]�}|j|�}|jdt|��}ytj|�Wntjk rhnXytj||�Wn#tjk r�}|j|�qX|j|�qW|r�|j|�n|r t|�dkr�tj|d�q tjd|f�ndS(s2Remove one or more messages -- may raise os.error.R>iismultiple errors:N( RUROR RIRtrenameR,tremovefromallsequencesR`(RtlistterrorstdeletedRTRt commapathR((s/usr/lib64/python2.7/mhlib.pytremovemessages�s( icCs�g}i}x�|D]�}|j�d}|j|�}|j|�} ytj|| �Wn�tjk r�y!tj|| �tj|�Wq�ttjfk r�} |j | �ytj| �Wqtjk r�qXqq�XnX|j |�|||<qW|r@|r*|j||j��n|j |j��n|r�t|�dkrktj|d�q�tjd|f�ndS(s_Refile one or more messages -- may raise os.error. 'tofolder' is an open folder object.iismultiple errors:N(tgetlastRUR R�Rtshutiltcopy2RIR]R,tsetlastt_copysequencestitemsR�tkeysR`(RR�ttofoldert keepsequencesR�trefiledRTttonRttopathR((s/usr/lib64/python2.7/mhlib.pytrefilemessages�s: cCs�|j�}|j�}d}x�|j�D]�\}}y||}d} Wntk rjg}d} nXx6|D].\} }| |krr|j|�d}qrqrW| r+|r+|||<q+q+W|r�|j|�ndS(s.Helper for refilemessages() to copy sequences.iiN(RhR�RrR,Rn(Rt fromfoldertrefileditemst fromsequencesttosequencestchangedR/RlttoseqtnewtfromnR�((s/usr/lib64/python2.7/mhlib.pyR� s$ c Cs#|j|�}t|�}|j�~|j|�}|jd|�}ytj||�Wntjk rtnXytj||�Wn�tjk rd}z'|jd�tj ||�d}Wd|s�ytj |�Wq�tjk r�q�XnXtj |�nX|j|g�dS(saMove one message over a specific destination message, which may or may not already exist.s,%diiN(RUR&R'R R�RR�RR�R�RIR�( RRTR�R�RR)R�tbackuptopathtok((s/usr/lib64/python2.7/mhlib.pytmovemessage"s2 c Cs�|j|�}t|�}|j�~|j|�}|jd|�}ytj||�Wntjk rtnXd}z'|jd�tj ||�d}Wd|s�ytj |�Wq�tjk r�q�XnXdS(saCopy one message over a specific destination message, which may or may not already exist.s,%diiN(RUR&R'R R�RR�RR�R�RI( RRTR�R�RR)R�R�R�((s/usr/lib64/python2.7/mhlib.pytcopymessageBs( c Cs�|j|�}|jd|�}ytj||�Wntjk rLnXd}d}zOt|d�}x)|j|�}|s�Pn|j|�qn|j�d}Wd|s�ytj|�Wq�tjk r�q�XnXdS( s3Create a message, with text from the open file txt.s,%diiiR%iNi@( RUR R�RR&treadRR'RI( RRTttxtRt backuppathR�tBUFSIZER)tbuf((s/usr/lib64/python2.7/mhlib.pyt createmessage\s, cCs�t|d�r'|j|kr'|`n|j�}d}xo|j�D]a\}}|dkrdqFnx@|D]8}||krk|j|�d}|s�||=q�qkqkWqFW|r�|j|�ndS(s`Remove one or more messages from all sequences (including last) -- but not from 'cur'!!!RWiRoiN(thasattrRWRhR�tremoveRn(RR�RdR�R/RlRT((s/usr/lib64/python2.7/mhlib.pyR�vs cCs#t|d�s|j�n|jS(sReturn the last message number.RW(R�RYRW(R((s/usr/lib64/python2.7/mhlib.pyR��s cCs4|dkr't|d�r0|`q0n ||_dS(sSet the last message number.RWN(RR�RW(RRW((s/usr/lib64/python2.7/mhlib.pyR��s(RRRLRRRRQRSRUR:R<RYRhRnRtRvR�R|R�R�R�R�R�R�R�R�R�R�(((s/usr/lib64/python2.7/mhlib.pyR�s4 T # cBsGeZdd�Zd�Zdd�Zdd�Zd�Zd�ZRS(cCsV||_||_|dkr?|j|�}t|d�}ntjj||�dS(sConstructor.RZN(tfoldertnumberRRUR&t mimetoolsRR(RR)RTtfpR((s/usr/lib64/python2.7/mhlib.pyR�s cCsdt|j�|jfS(sString representation.sMessage(%s, %s)(treprR�R�(R((s/usr/lib64/python2.7/mhlib.pyR�scCs�|dkrdj|j�Sg}d}xn|jD]c}|dj�s|jd�}|dkr||| j��}qn|r2|j|�q2q2Wdj|�S(s�Return the message's header text as a string. If an argument is specified, it is used as a filter predicate to decide which headers to return (its argument is the header name converted to lower case).R;iR[N(RRtheaderstisspaceRztlowerR,(RtpredR�thitReR~((s/usr/lib64/python2.7/mhlib.pyt getheadertext�sicCs�|jj|j�|j�}|s2|dkr?|jj�Syddlm}Wn!tk rvddlm}nX|�}tj |j||�|j �S(s�Return the message's body text as string. This undoes a Content-Transfer-Encoding, but does not interpret other MIME features (e.g. multipart messages). To suppress decoding, pass 0 as an argument.R;t7bitt8bittbinaryi����(tStringIO(R;R�R�R�(R�tseektstartofbodytgetencodingR�t cStringIOR�tImportErrorR�tdecodetgetvalue(RR�tencodingR�toutput((s/usr/lib64/python2.7/mhlib.pytgetbodytext�s cCs�|j�dkrtd�n|jd�}|s?td�n|jj|j�tj|j�}|j|�g}xO|j �r�d|j dt|�f}t|j ||�}|j|�qzW|j�|S(s�Only for multipart messages: return the message's body as a list of SubMessage objects. Each submessage object behaves (almost) as a Message object.t multipartsContent-Type is not multipart/*tboundarys"multipart/* without boundary params%s.%ri(tgetmaintypeRtgetparamR�R�R�t multifilet MultiFiletpushR�R�R`t SubMessageR�R,tpop(RtbdrytmftpartsRTtpart((s/usr/lib64/python2.7/mhlib.pytgetbodyparts�s cCs*|j�dkr|j�S|j�SdS(s3Return body, either a string or a list of messages.R�N(R�R�R�(R((s/usr/lib64/python2.7/mhlib.pytgetbody�s N( RRRRRR�R�R�R�(((s/usr/lib64/python2.7/mhlib.pyR�s R�cBs8eZd�Zd�Zdd�Zd�Zd�ZRS(cCsktj||||�|j�dkr=tj|�|_ntj|�|_tj|dd�|_dS(sConstructor.R�R�iN(RRR�R�tbodyR�tbodyencoded(RR)RTR�((s/usr/lib64/python2.7/mhlib.pyR�s cCs.|j|j|j}}}d|||fS(sString representation.sSubMessage(%s, %s, %s)(R�R�R�(RR)RTR�((s/usr/lib64/python2.7/mhlib.pyR�sicCs3|s |jSt|j�td�kr/|jSdS(NR;(R�ttypeR�(RR�((s/usr/lib64/python2.7/mhlib.pyR��scCs&t|j�tg�kr"|jSdS(N(R�R�(R((s/usr/lib64/python2.7/mhlib.pyR��scCs|jS(N(R�(R((s/usr/lib64/python2.7/mhlib.pyR��s(RRRRR�R�R�(((s/usr/lib64/python2.7/mhlib.pyR��s RbcBs�eZdZdddd�Zd�Zd�Zd�Zd�Zd�Z d �Z d �Zd�Zd�Z d �Zd�Zd�Zd�Zd�Zd�ZRS(s�Class implementing sets of integers. This is an efficient representation for sets consisting of several continuous ranges, e.g. 1-100,200-400,402-1000 is represented internally as a list of three pairs: [(1,100), (200,400), (402,1000)]. The internal representation is always kept normalized. The constructor has up to three arguments: - the string used to initialize the set (default ''), - the separator between ranges (default ',') - the separator between begin and end of a range (default '-') The separators must be strings (not regexprs) and should be different. The tostring() function yields a string that can be passed to another IntSet constructor; __repr__() is a valid IntSet constructor itself. R>RxcCs5g|_||_||_|r1|j|�ndS(N(tpairstseptrngt fromstring(RtdataR�R�((s/usr/lib64/python2.7/mhlib.pyRs cCs g|_dS(N(R�(R((s/usr/lib64/python2.7/mhlib.pytreset scCst|j|j�S(N(tcmpR�(Rtother((s/usr/lib64/python2.7/mhlib.pyt__cmp__#scCs t|j�S(N(thashR�(R((s/usr/lib64/python2.7/mhlib.pyt__hash__&scCsd|j�|j|jfS(NsIntSet(%r, %r, %r)(RkR�R�(R((s/usr/lib64/python2.7/mhlib.pyR)scCs�|jj�d}x�|t|j�kr�|j|d\}}|j|\}}||dkr�|t||�fg|j|d|d+q|d}qWdS(Ni(R�R-R`Rp(RR~talotahitblotbhi((s/usr/lib64/python2.7/mhlib.pyt normalize,s -cCs|d}xo|jD]d\}}||kr7t|�}nt|�|jt|�}|rn||j|}q|}qW|S(NR;(R�R�R�R�(RRmtlothitt((s/usr/lib64/python2.7/mhlib.pyRk7s cCsAg}x4|jD])\}}t||d�}||}qW|S(Ni(R�trange(RtlR�R�tm((s/usr/lib64/python2.7/mhlib.pyRc@s cCs"x|D]}|j|�qWdS(N(R,(RR�R~((s/usr/lib64/python2.7/mhlib.pyRjGs cCst�}|j|_|S(N(RbR�(RR�((s/usr/lib64/python2.7/mhlib.pytcloneKs cCs|jddS(Ni(R�(R((s/usr/lib64/python2.7/mhlib.pytminPscCs|jddS(Ni����(R�(R((s/usr/lib64/python2.7/mhlib.pyRpSscCs>x7|jD],\}}||ko-|knr tSq WtS(N(R�tTruetFalse(RtxR�R�((s/usr/lib64/python2.7/mhlib.pytcontainsVscCsqx�tt|j��D]�}|j|\}}||kr�|d|kra||f|j|<n|jj|||f�|dkr�|d|j|ddkr�|j|dd|j|dfg|j|d|d+ndS||krdSqWt|j�d}|dkrW|j|\}}|d|krW||f|j|<dSn|jj||f�dS(Nii(R�R`R�tinsertR,(RR�R~R�R�((s/usr/lib64/python2.7/mhlib.pyR,[s&+,cCs4||krdS|jj||f�|j�dS(N(R�R,R�(Rtxlotxhi((s/usr/lib64/python2.7/mhlib.pytaddpairtscCsg}x�|j|j�D]�}g}x9|j|j�D]%}|j�}|jt|��q8Wt|�dkr�|j|d|df�qt|�dkr�|d|dkr�|j|d|df�qtd�qW|j||_|j �dS(Niiisbad data passed to IntSet( R_R�R�RaR,RCR`RqR�R�(RR�R�R�R�tsubpRm((s/usr/lib64/python2.7/mhlib.pyR�ys& N(RRRLRRR�R�R�RR�RkRcRjR�R�RpR�R,RR�(((s/usr/lib64/python2.7/mhlib.pyRbs" icCs�yt|d�}Wntk r'dSXtj|�d}tj||oPtj�}x~|j�}|soPn|j|�rY|t |�d}x5|j�}|s�|dj �r�Pn||}q�|j�SqYdS(NRZR[ii(R&R]Rtretescapetcompilet IGNORECASER^RNR`R�Ra(tfileR tcasefoldR)tpattprogRettext((s/usr/lib64/python2.7/mhlib.pyR�s& cCsay)t|d�}|j�}|j�Wntk rBg}nXtj|�d}tj||oktj�}|dkr�d}nd||f}xst t |��D]C} || } |j| �r�|dkr�|| =n ||| <Pq�q�W|dk r|j|�n|d}t|d�}x|D]} |j | �q,W|j�tj||�dS(NRZs:(.*) s%s: %s R R%(R&t readlinesR'R]RRRRRR�R`RNR,RR R�(RR RgRR)tlinesR R tnewlineR~Rettempfile((s/usr/lib64/python2.7/mhlib.pyRu�s4 c Cs�tjd�t�ad�}|d�|d�ddddd d g}x|D]}|d|f�qRW|d�|d �tjd�a|d�|d�|d�tj�}tdd�j�|d<|GHtj |�|d�x%t |�D]}|d|f�q�W|d�tj�}tj|�a|d�x|d/D]t}y|d*|f�Wntk r�}d+G|GHnXtj d,|f�j�}tt|j��}|Gd-GHqMW|d.�dS(0Nsrm -rf $HOME/Mail/@testcSs|GHt|�GHdS(N(teval(Rm((s/usr/lib64/python2.7/mhlib.pytdo�ssmh.listfolders()smh.listallfolders()s@tests@test/test1s@test/test2s@test/test1/test11s@test/test1/test12s@test/test1/test11/test111smh.makefolder(%r)smh.listsubfolders('@test')smh.listallsubfolders('@test')sf.listsubfolders()sf.listallsubfolders()sf.getsequences()s 1-10 12-20R\tfoosmh.deletefolder(%r)smh.getcontext()sf.getcurrent()R�RWRoR�RyR�sfirst:3slast:3scur:3scur:-3sprev:3snext:3s1:3s1:-3s100:3s100:-3s10000:3s10000:-3Rwsf.parsesequence(%r)sError:spick %r 2>/dev/nulls<-- picksf.listmessages()(sfirstslastscurR�sprevsnextsfirst:3slast:3scur:3scur:-3sprev:3snext:3s1:3s1:-3s100:3s100:-3s10000:3s10000:-3sall(R tsystemRRPRBR)RhRbRcRntreversedR$RtpopenR�RVRCR_( RttestfoldersR�RsR"RlRtstuffR�((s/usr/lib64/python2.7/mhlib.pyttest�sP t__main__(RLtwarningsRRRRRRDR RRR�R�R�Rt__all__t ExceptionRRRRMR?RRR�RbRRuRR(((s/usr/lib64/python2.7/mhlib.pyt<module>6s< � ��M�" *
/home/../var/spool/../../lib64/python2.7/mhlib.pyo