mò ©ËŽGc@sƒdkTdkTdkTdkZdefd„ƒYZdefd„ƒYZd„Zdefd„ƒYZd efd „ƒYZ dS( (t*Nt FileAccesscBsntZdZdZdZdd„Zd„Zd„Zd„Zd „Z d „Z d „Z d „Z d „Z RS(Ns file accesss File Accesssset file accesstoncCs:||_||_||_d|_d|_ d|_ dS(Ni( tpathtselft_pathtmodet_modetactiont_actiontNonet _savemodetlastsattlastfail(RRRR((td/home/faculty/youssef/public_html/pacman/sample_cache/tarballs/pre/tmp/pacman-3.29/src/FileAccess.pyt__init__s      cCs%d|id|id|idS(Nt[s ] set to [t t](RRRR (R((RtstrscCs6|i|ijo#|i|ijo|i|ijS(N(RRtfaRR (RR((RtequalscCst| d|i ƒS(Ns has not been attempted yet.(tReasonRtacquired(R((Rt satisfiedscCs¬t|iƒ}td|dtii|ƒ ƒ}|iƒoht |ƒ}|i djoi|i djo-td|d|i d|i ƒ ƒ}q¤td|d|i d|i ƒƒ}q¨|i djoi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i d joi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i d joi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i d joi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i d joi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i d joi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i djoi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨|i djoi|i djo-td|d|i d|iƒ ƒ}q¤td|d|i d|iƒƒ}q¨td|i dƒ}n|S(NRs] does not exist.t worldExecuteRs ] is not [s on].s off].t worldWritet worldReadt groupExecutet groupWritet groupReadt ownerExecutet ownerWritet ownerReads Unknown file access self._mode [s].(tfullpathRRRRtostexiststreasontoktFileModetmRR RRRRRRRR R!(RR(R%R((RtsatsT$  -,-,-,-,-,-,-,-,-,cCs3|iƒ}|iƒpd|_d|_n|S(Ni(RR)trR&R R(RR*((RtverifySs     cCstƒS(N(R(R((Rt satisfiableYscCsŽt|iƒ}td|dtii|ƒ ƒ}|iƒoJ||_t |iƒ|_ t |iƒ}|i djo,|i |iƒoqt| dƒ}ny|i djo,|i|iƒoqt| dƒ}n=|i djo,|i|iƒoqt| dƒ}n|i djo,|i|iƒoqÒt| dƒ}ny|i djo,|i|iƒoqÒt| dƒ}n=|i d jo,|i|iƒoqÒt| dƒ}n|i d jo,|i|iƒoq†t| dƒ}qŠ|i d jo,|i|iƒoq†t| dƒ}qŠ|i d jo,|i|iƒoq†t| dƒ}qŠn|S( NRs] does not exist.Rs attempt has failed.RRRRRRR R!(R"RRRRR#R$R%R&R'R R(RtsetWorldExecuteR t setWorldWritet setWorldReadtsetGroupExecutet setGroupWritet setGroupReadtsetOwnerExecutet setOwnerWritet setOwnerRead(RR(R%R((RtacquireZsV$  cCsJ|idjo tƒSn,|iiƒod|_tƒSntƒSdS(N(RR R Rtset(R((Rtretracts    (t__name__t __module__ttypettitleRRRRRR)R+R,R6R8(((RR s     5   't HasFileAccesscBs5tZdZdZdZd„Zd„Zd„ZRS(Ns file accesss File Accesssset file accesscCs%d|id|id|idS(NRs] has [RR(RRRR (R((RRscCs |iƒS(N(RR)(R((RR6scCstƒS(N(R(R((RR8‘s(R9R:R;R<RRR6R8(((RR=Šs   cCs7x0|D](}|ittii||ƒƒƒqWdS(N( tnamestnametpathstappendR"R#Rtjointdirname(R@RCR>R?((Rt collect_paths“st DirTreeAccesscBs\tZdZdZdZdd„Zd„Zd„Zd„Zd „Z d „Z d „Z RS( Nsdirectory tree access controlsDirectory Tree Access Controlssset directory tree accessRcCs1||_||_||_g|_g|_dS(N( RRRRRRR t_pathst_accs(RRRR((RRœs     cCs|id|id|iS(Ns /... set to R(RRRR (R((RR£scCsI|i|ijo6|i|ijo#|i|ijo|i|ijS(N(RRtxRR RF(RRH((RR¤scCs)g|_tii|it|iƒdS(N(RRFR#RtwalkRRD(R((Rt update_pathsªs cCsÝ|io tƒSnÅtd|idtii|iƒ ƒ}|iƒo.td|idtii |iƒ ƒ}n|iƒoR|i ƒxE|i D]6}t ||i |iƒiƒ}|iƒpPq›q›Wn|S(NRs] does not exist.s] is not a directory.(RRRRR#RR$R%R&tisdirRJRFRRR R(RR%R((RR®s * .    cCsŒtƒ}t|iƒ|_|iƒx`|iD]U}t||i |i ƒ}|i ƒ}|i ƒo|iiti|ƒƒq/Pq/W|S(N(RR%R"RRRJRFRRRR tatsatisfyR&RGRAtcopytdeepcopy(RRLR%R((RR6»s     cCsftƒ}xVtt|iƒdddƒD]5}|idiƒ}|iƒo|id=q)Pq)W|S(Niiÿÿÿÿ( RR%trangetlenRRGtitrestoreR&(RRRR%((RR8Æs   ( R9R:R;R<RRRRRJRR6R8(((RRE—s     t WriteProtectRcBsYtZdZdZdZd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( Nswrite protect directory treesWrite Protect Directory TreescCs ||_dS(N(RR(RR((RRÓscCs|iS(N(RR(R((RRÔscCs|i|ijS(N(RRRH(RRH((RRÖscCstƒS(N(R(R((RR,ØscCstd|id|i ƒS(NsDirectory tree [s#] has not yet been write protected.(RRRR(R((RRÙscCsdt|iƒ}td|dtii|ƒ ƒ}|iƒo ||_td|iƒ}n|S(NsDirectory tree [s] does not exist.s chmod -R a-w ( R"RRRR#RKR%R&texecute(RR%R((RR6Ús $  cCstd|iƒS(Ns chmod -R a+w (RURR(R((RR8ás( R9R:R;R<RRRRR,RR6R8(((RRTÎs      ( t StringAttrt ExecutionR'R#t EnvironmentRR=RDRERT(RTRRDR=RER#((Rt?s  7