/usr/lib/python2.6/site-packages/supervisor
NameSizeModeActions
medusa/-0755rm
ui/-0755rm
datatypes.py66410644editdlrm
datatypes.pyc90950644editdlrm
datatypes.pyo90470644editdlrm
http.py265330644editdlrm
http.pyc227660644editdlrm
http.pyo227660644editdlrm
http_client.py62910644editdlrm
http_client.pyc87590644editdlrm
http_client.pyo86800644editdlrm
options.py554490644editdlrm
options.pyc494110644editdlrm
options.pyo494110644editdlrm
pidproxy.py17970644editdlrm
pidproxy.pyc26580644editdlrm
pidproxy.pyo26580644editdlrm
supervisorctl.py214970644editdlrm
supervisorctl.pyc200430644editdlrm
supervisorctl.pyo200430644editdlrm
supervisord.py274900644editdlrm
supervisord.pyc221170644editdlrm
supervisord.pyo220040644editdlrm
test.py1175440644editdlrm
test.pyc1172160644editdlrm
test.pyo1172160644editdlrm
web.py175630644editdlrm
web.pyc150220644editdlrm
web.pyo150220644editdlrm
xmlrpc.py326580644editdlrm
xmlrpc.pyc276600644editdlrm
xmlrpc.pyo275420644editdlrm
__init__.py80644editdlrm
__init__.pyc1420644editdlrm
__init__.pyo1420644editdlrm
Edit: /usr/lib/python2.6/site-packages/supervisor/options.pyo (49411B)
FATc@sddkZddkZddkZddkZddkZddkZddkZddkZddkZddk Z ddk Z ddk Z ddk Z ddk Z ddkZddkZddkZddkZddkZddklZddklZlZdeifdYZdfdYZdeefd YZd eeifd YZd efd YZedddZdfdYZdfdYZdefdYZ defdYZ!gZ"dei#fdYZ$dfdYZ%de i&fdYZ'de i(fdYZ)d e i*fd!YZ+d"Z,d#Z-d$Z.d%Z/e0a1d&Z2d'Z3dS((iN(tfcntl(tF_SETFLtF_GETFLt FileHandlercBs5eZdZddZdZdZdZRS(sFile handler which supports reopening of logs. Re-opening should be used instead of the 'rollover' feature of the FileHandler from the standard library's logging package. tacCs2tii|t||||_||_dS(N(tloggingt StreamHandlert__init__topent baseFilenametmode(tselftfilenameR ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs cCs+y|iiWntj onXdS(N(tstreamtclosetIOError(R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR$scCs&|it|i|i|_dS(N(RRR R R (R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pytreopen*s cCs4yti|iWnttfj onXdS(N(tostremoveR RtOSError(R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR.s(t__name__t __module__t__doc__RRRR(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs    t RawHandlercBseZdZRS(cCsy|i|}y|ii|WnXtj o |ii|idn8tj o!}|dtijoqn X|iWn|i |nXdS(sL Override the handler to not insert a linefeed during emit. sUTF-8iN( tformatR twritet UnicodeErrortencodeRterrnotEINTRtflusht handleError(R trecordtmsgtwhy((s6/usr/lib/python2.6/site-packages/supervisor/options.pytemit5s (RRR#(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR4stRawFileHandlercBseZRS((RR(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR$GstRawStreamHandlercBseZdZRS(cCsdS(N((R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRKs(RRR(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR%JstRotatingRawFileHandlercBs5eZdd ddZdZdZdZRS( Riii cCs@|djo d}nti|||||_||_dS(s Open the specified file and use it as the stream for logging. By default, the file grows indefinitely. You can specify particular values of maxBytes and backupCount to allow the file to rollover at a predetermined size. Rollover occurs whenever the current log file is nearly maxBytes in length. If backupCount is >= 1, the system will successively create new files with the same pathname as the base file, but with extensions ".1", ".2" etc. appended to it. For example, with a backupCount of 5 and a base file name of "app.log", you would get "app.log", "app.log.1", "app.log.2", ... through to "app.log.5". The file being written to is always "app.log" - when it gets filled up, it is closed and renamed to "app.log.1", and if files "app.log.1", "app.log.2" etc. exist, then they are renamed to "app.log.2", "app.log.3" etc. respectively. If maxBytes is zero, rollover never occurs. iRN(R$RtmaxBytest backupCount(R R R R'R(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyROs    cCsMy2|i|o|inti||Wn|i|nXdS(s Emit a record. Output the record to the file, catering for rollover as described in doRollover(). N(tshouldRollovert doRolloverR$R#R(R R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR#ks cCs|ii|idjoxt|idddD]{}d|i|f}d|i|df}tii|o8tii|oti|nti ||q7q7W|id}tii|oti|nti |i|nt |id|_dS(s< Do a rollover, as described in __init__(). iiis%s.%ds.1twN( R RR(trangeR RtpathtexistsRtrenameR(R titsfntdfn((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR*ys  cCsf|idjoRd|i|}|iidd|iit||ijodSndS(s Determine if rollover should occur. Basically, see if the supplied record would cause the file to exceed the size limit we have. is%s ii(R'RR tseekttelltlen(R R R!((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR)s # ii (RRRR#R*R)(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR&Ns    ic Csddk}|i|}|tjot|}nt|d||}|i|} |i| g|_|i||i ||S(NiR( Rt getLoggertFalseR$R&t Formattert setFormatterthandlerst addHandlertsetLevel( R tleveltfmttrotatingtmaxbytestbackupsRtloggerthdlrt formatter((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR6s      tDummycBseZRS((RR(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyREstOptionsc BseZdZZeidZdZdZ dZ dZ dZ dZ dZdddddZdddddddddd ZdddedZRS(icCsug|_g|_g|_h|_h|_h|_h|_|idddd|i |idddddS(Nththelpt configfilesc:s configure=( t names_listt short_optionst long_optionst options_mapt default_mapt required_mapt environ_maptaddtNoneRH(R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs       cCsM|i}|iddjo|id|i}n|GtiddS(sxPrint a long help message to stdout and exit(0). Occurrences of "%s" in are replaced by self.progname. s%siN(tdoctfindtreplacetprognametsystexit(R tdummyRH((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRHs  cCsBtiidt|tiid|itiddS(s2Print a brief error message to stderr and exit(2).s Error: %s sFor help, use %s -h iN(RWtstderrRtstrRVRX(R R!((s6/usr/lib/python2.6/site-packages/supervisor/options.pytusagesc Cso|ox?|iD]3\}}||jo|ii||fqqW|ii|o|i|=n|ii|o|i|=qn|oFxC|iD]3\}}||jo|ii||fqqWn|o3d|d}|ii|o|i|=qn|oNd|}|ddjo|d }n|ii|o|i|=qkndS(s7Remove all traces of name, confname, short and/or long.t-is--it=N(RJRRNthas_keyRORM(R tnametconfnametshorttlongtntcntkey((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs0    " c Cs|dj o|dj o tdn| o| o tdn|o|ido tdn|o|ido tdn|d}n|oA|o:|id|idjotd||fqn|o|ddjo td n|d |d } } | djo td nd| } |ii| otd | n||f|i| <|ii|n|o|ddjo tdn|} | ddjo| d } nd| } |ii| otd| n||f|i| <|ii|n| o||f|i| ss&inconsistent short/long options: %r %riR]s&short option should not start with '-'its"short option should be 'x' or 'x:'sduplicate short option key '%s's%long option should not start with '-'is--sduplicate long option key '%s'N(RkRg(RRt ValueErrortendswithRMR_RKtappendRLRPthasattrtsetattrRJRNRO( R R`RaRbRcthandlertdefaulttrequiredRitenvRftrest((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRQs\!             cCsy|djotid}n|djotid}n|djoddk}|i}n||_||_g|_g|_y4t i |di |i |i \|_|_Wn0t i j o!}|o|i|qnX|io|i o|idnx|iD]\}}|i|\} } | dj oFy| |}Wqtj o#}|id|||fqXn| oL|dj o?t|| dj o|id|nt|| |qqWx|iiD]} |i| \} } | o t|| ddj oqntii| oti| } | dj oFy| | } Wqtj o#}|id | | |fqXn| o!| dj ot|| | qqqW|idjo|i|_n|idj oCy|i|iWqOtj o}|it|qOXnx|iD]\} } | ott|| djo^| id }|i}x/|D]'}|djoPnt||}qWt|| |qYqYWxG|i i!D]6\} } t|| djot|| | qqWxD|i"i!D]3\} }t|| djo|i|q>q>WdS( sRealize a configuration. Optional arguments: args -- the command line arguments, less the program name (default is sys.argv[1:]) doc -- usage message (default is __main__.__doc__) iiiNRks&positional arguments are not supportedsinvalid value for %s %r: %ss"conflicting command line option %rs'invalid environment value for %s %r: %st.(#RRRWtargvt__main__RRVRStoptionstargstgetopttjoinRKRLterrorR\tpositional_args_allowedRMRltgetattrRpRPtkeysRtenvironR_RItdefault_configfilet read_configR[RJtsplitt configrootRNtitemsRO(R RzRSRVtraise_getopt_errsRxR!toptRhR`RqtenvvartvalueRatpartstobjtparttmessage((s6/usr/lib/python2.6/site-packages/supervisor/options.pytrealizeIs         .  #         N(RRRRtuidtgidRWRwRVRIt schemadirRR~RRHR\RRQtTrueR(((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRFs0     Lt ServerOptionscBseZd*Zd*Zd*Zd*Zd*Zd*Zd*Z d*Z d*Z d*Z d*Z eZgZdZdZedddZdZdZdZdZdZd Zd Zd Zd Zd ZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4d$Z5d%Z6d&Z7d'Z8d(Z9d)Z:RS(+ic Csti|t|_t|i_|idddddddd|idd d d |id d ddtidd|iddddti|iddddti dd|iddddti dd^|id d!d"d#ti dd$|id%d&d'd(ti dd)|id*d+d,d-ti dd.|id/d0d1d2ti dd3|id4d5d6d7tidt i|id8d9d:d;tidd|id<d=d>d?tdd|id@dAdBdCtdd|idDdEdFdGtdd|idHdIdJdKtddL|idMdNdOdMdddd|idPdQdRdStiddT|idUdVdWdXti|idYdZd[d\tih|_dS(_Ntnodaemonssupervisord.nodaemonRdRiiRrituserssupervisord.usersu:suser=tumaskssupervisord.umasksm:sumask=t022t directoryssupervisord.directorysd:s directory=tlogfilessupervisord.logfilesl:slogfile=ssupervisord.logtlogfile_maxbytesssupervisord.logfile_maxbytessy:slogfile_maxbytes=i2itlogfile_backupsssupervisord.logfile_backupssz:slogfile_backups=i tloglevelssupervisord.loglevelse:s loglevel=tinfotpidfilessupervisord.pidfilesj:spidfile=ssupervisord.pidt identifierssupervisord.identifiersi:s identifier=t supervisort childlogdirssupervisord.childlogdirsq:s childlogdir=t http_portssupervisord.http_portsw:s http_port=t http_usernamessupervisord.http_usernamesg:shttp_username=t http_passwordssupervisord.http_passwordsr:shttp_password=tminfdsssupervisord.minfdssa:sminfds=tminprocsssupervisord.minprocsRks minprocs=it nocleanupssupervisord.nocleanuptkt sockchmodssupervisord.sockchmodsp:s socket-mode=it sockchownssupervisord.sockchownso:s socket-owner=t environmentssupervisord.environmentsb:s environment=ii (RFRRERt supervisordRQt datatypest octal_typetexisting_directorytexisting_dirpatht byte_sizetintegert logging_levelttempfilet gettempdirt SocketAddressRRR[tinttdot_separated_user_grouptdict_of_key_value_pairst pidhistory(R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRsX          icCst||||||S(N(R6(R R R=R>R?R@RA((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR6scCs2d}tii|p|id|n|S(s4Return the name of the default config file, or None.s/etc/supervisord.confs}No config file found at default path "%s"; create this file or use the -c option to specify a config file at a different path(RR-R.R\(R tconfig((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs   cOsti||||idj oVti|i}|djo|id|in||_ti||_ n|i pt i i |iii }nt i i |i }||_ |ip|iii|_n|ip"t i i |iii|_nt i i |i|_|iii|_|ip|iii|_n|iii|_|io t|_ndS(NsNo such user %s(RFRRRRRt name_to_uidR\Rt gid_for_uidRRRR-tabspathRRRRtprogramsRRRR7tdaemon(R RhtkwRR((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs,      "  cCs|d}|d}ti|}|djo|id|n|djoti|}n2ti|}|djo|id|n||fS(NiisNo such sockchown user %ssNo such sockchown group %s(RRRRR\Rt name_to_gid(R RRtgroupRR((s6/usr/lib/python2.6/site-packages/supervisor/options.pytconvert_sockchown#s     c Cs|ii}t|dpCyt|d}Wq_ttfj otd|q_Xnt}|i||i }d|jo tdn|i dd}t i ||_ |i dd }t i ||_|i d d}|djo d|_nt i|}||_|i d d}||_t i|i d d } | |_|i dd} t i| } | |_|i dd} t i| } | |_|i dd} t i | } | |_|i dd} t i| } | |_|i dd}t i|}||_|i dd}||_|i dd}t i||_|i dt i!}t i|}||_"|i dd}|djo d|_#nt i$||_#|i dd}|i dd}|p|o>|djotd n|djotd!qUn||_%||_&|i d"d}t i||_'|i d#d}|djo d+|_(n=yt i)||_(Wn#tj otd%|nX|i d&d}|djo d'|_*nCyt i||_*Wn)t+tfj otd(|nX|i d)d*}t i,||_-|i.||_/|S(,Ntreadtrscould not find config file %sRs..ini file does not include supervisord sectionRiRiRRRRRssupervisord.logRt50MBRi RRRssupervisord.pidRRRtfalseRRRRs8Must specify http_password if http_username is specifieds8Must specify http_username if http_password is specifiedRRisInvalid sockchown value %sRisInvalid sockchmod value %sRRk(ii(0RRRoRRRRltUnhosedConfigParsertreadfptsectionst getdefaultRRRRRRRRRRRRRRRRRRRRtbooleanRRRRRRRRRRRRt TypeErrorRRtprograms_from_configR(R tfptsectionRRRRRRRRRRRRRRRRRRRRRR((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR2s                            c%CsQg}x:|iD],}|idpqn|iddd}|i|dd}|djo tdn|i|dd}ti|}|i|dd }ti|}|i|d d }ti|}|i|d d} ti| } |i|d d } ti| } |i|dd} | dj oti | } n|i|dd} | d"jo d} n*| d#jo |i } nti | } |i|dd} ti| } |i|dd}ti |}|i|dd}ti |}|i|dd}ti|}|i|dd}yti|}WntdnX|i|dd }ti|}|i|dd}ti|}td |d|d|d|d |d | d | d!| d| d| d|d|d|d|d|d|}|i|qW|i|S($Nsprogram:Rgitcommands-program section %s does not specify a commandtpriorityit autostartttruet autorestartt startsecst startretriesiRRtNONEtOFFtAUTORi RRt stopsignaltTERMt stopwaitsecst exitcodess0,2s)exitcodes must be a list of ints e.g. 1,2t log_stdoutt log_stderrRR`R(RR(NR(Rt startswithRtsanegetRRRlRRRRt AUTOMATICRRtsignalt list_of_intst ProcessConfigRntsort(R RRRR`RRRRRRRRRRRRRRRtpconfig((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs            cCsHti}|djo!|iidtidn|iid|iogyti|iWn5tij o&}|ii d|i|fqX|iid|inti dt dt _ t _ti dt ddt _t _ti d t ddt _t _titi|idS( Nis"supervisord forked; parent exitingsdaemonizing the processscan't chdir into %r: %ssset current directory: %rs /dev/nulliR+i(RtforkRBtdebugt_exitRRtchdirR}twarnRRRWtstdint __stdin__tstdoutt __stdout__RZt __stderr__tsetsidR(R tpidterr((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt daemonizes*         cCsti}y1t|id}|id||iWn3ttifj o|ii d|inX|ii d|dS(NR+s%s scould not write pidfile %sssupervisord started with pid %s( RtgetpidRRRRRR}RBtcriticalR(R Rtf((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt write_pidfiles c Csy|idj ov|iitijo\|idj oH|io:|ii}yti |Wq}ti j oq}XqqqnWnti j onXyti |i Wnti j onXdS(N( RRRtfamilytsockettAF_UNIXt httpservertunlink_socketfiletaddressRtunlinkR}R(R t socketname((s6/usr/lib/python2.6/site-packages/supervisor/options.pytcleanup!s   cCstiti|ititi|ititi|ititi|ititi|ititi|idS(N(RtSIGTERMt sigreceivertSIGINTtSIGQUITtSIGHUPtSIGCHLDtSIGUSR2(R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt setsignals3s cCs ||_dS(N(R(R tsigtframe((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR;scCsddkl}y||||_Wntij oM}|dtijo't|ii }|i d|nt |_ n't j o}|i |dnXdS(Ni(tmake_http_serverisAnother program is already listening on the port that our HTTP server is configured to use (%s). Shut this program down first before starting supervisord. (thttpRRRR}Rt EADDRINUSER[RRR\R7RRl(R RRR"tport((s6/usr/lib/python2.6/site-packages/supervisor/options.pytopenhttpserver>s   cCsx{|iD]p}|i|ijoWd|i|if}tiddd|d|i\}}ti |||_q q WdS(Ns%s---%s-tsuffixs.logtprefixtdir( RRRR`RRtmkstempRRR(R tprogramRtfdR((s6/usr/lib/python2.6/site-packages/supervisor/options.pytcreate_autochildlogsNs   c Cs|i}tid|i}yti|}Wn*ttfj o|ii ddSXx{|D]s}|i |o]ti i ||}yti |Wqtitfj o|ii d|qXqfqfWdS(Ns.+?---%s-\S+\.log\.{0,1}\d{0,4}sCould not clear childlog dirsFailed to clean up %r(RtretcompileRRtlistdirRRRBRtmatchR-R|RR}(R Rtfnret filenamesR tpathname((s6/usr/lib/python2.6/site-packages/supervisor/options.pytclear_autochildlogdirZs cCstiS(N(tasyncoret socket_map(R ((s6/usr/lib/python2.6/site-packages/supervisor/options.pytget_socket_maplscCs{tii}d}|ot|d}nxDt||iD]0}yti|WqCtij oqCXqCWdS(Nii( R$R%RtmaxR,RRRR}(R t asyncore_fdststarttx((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt cleanup_fdsoscCsti||dS(N(Rtkill(R RR((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR,~scCs\|idjotidjodSdS|i|i}|djo d|iS|S(Nis3Supervisor running as root (no user in config file)sSet uid to user %s(RRRRtgetuidtdropPrivileges(R R!((s6/usr/lib/python2.6/site-packages/supervisor/options.pytset_uids  cCs|djodStidjodSyt|}WnKtj o?yti|}Wntj o d|SX|d}n0Xyti|}Wntj o d|SXt tdov|d}g}t i D]&}||djo||dqq~}yti |Wq<t j od SXn|d}yti|Wnt j od SXti|dS( NsNo used specified to setuid to!is$Can't drop privilege as nonroot usersCan't find username %risCan't find uid %rt setgroupsis&Could not set groups of effective users(Could not set group id of effective user(RRRR-RRltpwdtgetpwnamtKeyErrortgetpwuidRotgrptgetgrallR0Rtsetgidtsetuid(R RRtpwrect_[1]tgrprectgroupsR((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR.s<    &  cCsytidti\}}Wntij op}|d}|titifjo|iidn|tijo|ii dnd\}}nX||fS(Niis7waitpid error; a process may not be cleaned up properlysEINTR during reap(NN( RtwaitpidtWNOHANGR}RtECHILDRRBRRRR(R RtstsR"R((s6/usr/lib/python2.6/site-packages/supervisor/options.pyR=s   c Csg}ttdo3|ihdd6|id6tid6dd6nttdo3|ihdd6|id6tid6dd6ng}x|D]}|d}|d}|d}|d}ti|\}} ||jo|d jo| |jo%| d jo|i|t ny.ti ||| f|id t Wqti t fj o|i|t qXqqW|S( Nt RLIMIT_NOFILEsThe minimum number of file descriptors required to run this process is %(min)s as per the "minfds" command-line argument or config file setting. The current environment will only allow you to open %(hard)s file descriptors. Either raise the number of usable file descriptors in your environment (see README.txt) or lower the minfds setting in the config file to allow the process to start.R!tmintresourceR`t RLIMIT_NPROCsThe minimum number of available processes required to run this program is %(min)s as per the "minprocs" command-line argument or config file setting. The current environment will only allow you to open %(hard)s processes. Either raise the number of usable processes in your environment (see README.txt) or lower the minprocs setting in the config file to allow the program to start.is#Increased %(name)s limit to %(min)s( RoRCRnRRARRDt getrlimitR\tlocalst setrlimitR}Rl( R tlimitstmsgstlimitRBtresR!R`tsoftthard((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt set_rlimitssB         !c Cs=d}titidtitidtitidtitidtitidti|id|i|i |i |dt d |i d |i |_|io?tti}ti|}|i||ii|nx|D]}|ii|qWx|D]}|ii|qWdS( Ns&%(asctime)s %(levelname)s %(message)s tCRITtDEBGtINFOtWARNtERROtTRACR?R@RA(Rt addLevelNametCRITICALtDEBUGRQRRtERRORtTRACER6RRRRRRBRR%RWRR8R9R;RR(R tcritical_messagest info_messagesRtstdout_handlerRDR!((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt make_loggers2   cCsddkl}|||S(Ni(t Subprocess(RR^(R RR^((s6/usr/lib/python2.6/site-packages/supervisor/options.pyt make_processsc Csh}yti\|d<|ds0          cCs5t}yt|d}|idd|i}|||jot}|d}n|||jo)||djo d}n||}n|djo d}n|djo d}n|djo d}n|i||i|}|}|||gSWn&titfj od|tgSXdS(s Read length bytes from the file named by filename starting at offset, automatically increasing offset and setting overflow flag if log size has grown beyond (offset + length). If length bytes are not available, as many bytes as are available are returned. RiiiRkN( R7RR3R4RRRR}R(R RRtoverflowRRRr((s6/usr/lib/python2.6/site-packages/supervisor/options.pyttailFile`s0       c Csg}d }d }d }d}}g}xi|idD]X}|i}|ido|i||||di|f|id d} t| djod}d}g}nt| djo| d}d}g}npt| djo| d}| d}g}n?t| djo+| d}| d}| dig}n| dd}|}n|o|i|n|d}q8W|i||||di|f|S( s6 Parse documentation strings into JavaDoc-like tokens is t@iiRkiiN(RRRtstripRRnR|R5tlstrip( tcommentttagsttagtdatatypeR`t tag_linenotlinenottag_texttlineR((s6/usr/lib/python2.6/site-packages/supervisor/options.pytgettagssF  %         %cCsti|o(ti|d@}d|}||fSti|olti|}dt|}ttdoti|}n |d@}|o|d7}nd|fSd|}d|fSd S( s*Decode the status returned by wait() or waitpid(). Return a tuple (exitstatus, message) where exitstatus is the exit status, or -1 if the process was killed by a signal; and message is a message telling what happened. It is the caller's responsibility to display the message. isexit status %ssterminated by %st WCOREDUMPis (core dumped)is unknown termination cause 0x%04xN(Rt WIFEXITEDt WEXITSTATUSt WIFSIGNALEDtWTERMSIGtsignameRoR(R@tesR!Rtiscore((s6/usr/lib/python2.6/site-packages/supervisor/options.pytdecode_wait_statuss     cCs0tdjo tnti|pd|S(sReturn a symbolic name for a signal. Return "signal NNN" if there is no corresponding SIG name in the signal module. s signal %dN(t _signamesRRt_init_signamesR(R((s6/usr/lib/python2.6/site-packages/supervisor/options.pyRs  cCsh}xltiiD][\}}t|dd}|djoqn|do|d o|||s\                   MM? " & .