^cddlZddlmZddlmZddlmZmZmZm Z m Z mZm Z ddl m Z mZ d dZejejejd Zd Zd Zd ZdS)N)_)open) chgservercmdutil commandservererrorhgwebpycompatutil)procutilurlutilFc~ i}dr{dD]r}|dr|dd|d<%|dr|dd|d<H|d kr$tjtd |zstjr@dr7d|vr2t j|dr tj tj t j |dt jt jzt jz} t j| tj t j| tj t j| n#t j| wxYwfd } d rމdst jd \} t j|  |s(tjtjddz}|dzt1dt3|D]G} || dr|| =n&|| dr || | dz=nHfd} tj|| }|dkrtjrlt jrMtd5}|D]!}tj |" dddn #1swxYwYtjtd| |t9jn#t9jwxYw|r ||SdS|r |d s| tjdr5 t jn#t@$rYnwxYwd|vrt j!|dtj"tj tj t j t j#t j$}|}|r:t j |t j$t j%zt jzd}t j|tj&t j|tj t j|tj tj&tj tj f}||vrt j||r||vrt j|d|vrt j'|d|r |SdS)zRun a command as a service.sdaemon_postexecsunlink:Nsunlinkschdir:schdirsnones'invalid value for --daemon-postexec: %scdrKrd}nd}td|}|d|z|dSdS)Nspid_filesabswbs%d )rwriteclose)pidmodefp appendpidoptss 2/usr/lib/python3/dist-packages/mercurial/server.pywritepidzrunservice..writepidKsi    d;'..B HHWs] # # # HHJJJJJ  sdaemons hg-service-)prefixrs--daemon-postexec=unlink:%ss--cwd=s--cwdcDtj S)N)ospathexists)lockpathsrcondfnzrunservice..condfngs7>>(3333rrsrbschild process failed to starti)( startswithr Abortrr iswindowsr r!r"r stdoutflushstderrrO_WRONLYO_APPENDO_BINARYdup2filenormkstemphgcmdsysargvappendrangelen rundetachedrr tryunlinkgetpidsetsidAttributeErrorchdir hidewindowdevnullO_RDWRO_CREATstdinunlink)rparentfninitfnrunfnlogfilerunargsr postexecargsinstfdrlockfdir$rloglinenullfd logfilefdstdior#s` ` @r runservicerQsXL  +,  Dz** *.qrr( Y''++ )-abb X&&k@AADH!d#56  $ $  #* * $ O ! ! # # # O ! ! # # #Y'r{)BR[)PB HO2244555HO2244555   I$t$67$#+>BBB  % B".**X-=abb-AA NN9HD E E E1c'll++  1:((33 EQZ**844AE *E 4 4 4 4 4&w77CQww%8"'..*B*B8h..8#$'88D$O11$77778888888888888888k!$D"E"EFFF HSMMM N8 $ $ $ $DN8 $ $ $ $  8C== F   ?$""### "/  IKKKK    D  | # # H\(+ , , ,RY//  RZ/"+=uI --//000  8?1133444  8?1133444 N ! ! # # O " " $ $ O " " $ $     HV     y-- HY     $ $ Il9- . . . uwwsPA"F==GDN%M NMNM/NN1=P PP)schgunixspipesunixc|d} t|}n2#t$r%tjt d|zwxYwt j||||||S)N cmdserversunknown mode %s)_cmdservicemapKeyErrorr r&rr setuplogging)uireporr servicefns r_createcmdservicerZs}  D8"4( 888k!.//$67778r4((( 9Rt $ $$s /Ac|dr*tj|d|d<|h}|r)|j}||j|jgn|}|dp|d}|rx|dr!t jtd| }| |dg| |n@|dr)|}|r$t}tj|d|n|}d }|D]:}||d} | d vr|D]} | d|| d ;t#j|||} t#j|| |S) Nsportsweb_confs webdir_confssubreposs)--web-conf cannot be used with --subrepossweb)sectionsrsUname templates style address port prefix ipv6 accesslog errorlog certificate encoding)Nrsserve)getrgetportbaseuiupdaterWr r&rcopy readconfigadddictr addwebdirpathsplit setconfigr createapp httpservice) rWrXralluisr_webconfservuioptlistovaluapps r_createhgwebservicerrs xx;(9(9::W TF  t{DG,----hh{##?txx'?'?G 88K  O+a LMMNN N'VH555 6 +     6ffG  !$W 5 5 5 4 ]]__22hhq# +    2 2A KK3 1 1 1 1 2 /&$ 0 0C  VS$ / //rcV|drt|||St|||S)NrS)rZrr)rWrXrs r createservicerts3 L3 T4000"2tT222r)NNNNNF)r i18nrr rrrrr r r utilsr rrQchgunixservice pipeserviceunixforkingservicerTrZrrrtrrr|s;     HHHHX(  &  -%%%,0,0,0^33333r