
    6h                    l    S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
Jr  SrSr " S S5      rg)	    )annotationsN)_)encodingpathutilutil   s   >Ic                  8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
state   c                   UR                   U l        UR                  U l        [        R
                  " UR                  5      U l        S U l        [        R                  " S 5      U l        U R                  R                  SS5      U l        U R                  R                  SS5      U l        [!        U R                  R                  SS5      5      U l        g )N	   fsmonitors   modes   walk_on_invalidates   timeout)vfs_vfsui_uir   normasprefixroot_rootdir
_lastclockr   filestat	_identityconfigmode
configboolwalk_on_invalidatefloattimeout)selfrepos     7/usr/lib/python3/dist-packages/hgext/fsmonitor/state.py__init__state.__init__   s    HH	77 --dii8t,HHOOL':	"&(("5"5/#
 TXX__\:FG    c                    U R                  SS5      n[        R                  R                  U5      U l        UR                  S5      n[        U5      S:  a9  U R                  R                  SS[        U5      -  5        U R                  5         g [        R                  " [        U5      S   nU[         :w  aG  U R                  R                  SSU[         4-  5        U R                  5          UR#                  5         gUR                  5       R%                  S	5      n[        U5      S
:  aH  U R                  R                  SS[        U5      5        U R                  5          UR#                  5         gUS   n[&        R(                  " [*        R,                  " 5       5      nXg:w  aB  U R                  R                  SSXg4-  5        U R                  5          UR#                  5         gUS   nUS   n	US
S n
UR#                  5         XU
4$ ! [         aD  n[        R                  " S 5      U l        UR
                  [
        R                  :w  a  e  S nAgS nAff = f! UR#                  5         f = f)N   fsmonitor.states   rb)NNNr   r   s6   fsmonitor: state file only has %d bytes, nuking state
r   s6   fsmonitor: version switch from %d to %d, nuking state
       sL   fsmonitor: state file truncated (expected 3 chunks, found %d), nuking state
sJ   fsmonitor: stored hostname "%s" different from current "%s", nuking state
      )r   OSErrorr   r   r   errnoENOENTfromfpreadlenr   log
invalidatestructunpack_versionformat_versionclosesplitr   
strtolocalsocketgethostname)r   fileinstversionbytesdiskversionr
   diskhostnamehostnameclock
ignorehash	notefiless              r    get	state.get(   s"   	$99/7D --d3yy||q HHLL"$'$56
 OO#+	 --EaHKh& *-8(,CD
 !'B JJL? IIK%%e,E 5zA~ ;J	 !'( JJL' !8L**6+=+=+?@H' C#./ !' JJL !HEqJaI JJL)++}  	$!]]40DNzzU\\)#		$x JJLs8   H AI  A$I  7A#I  ,I  
I:II I2c                J   Uc  U R                  5         g [        R                  R                  U R                  R                  S5      5      nX@R                  :w  a  U R                  R                  S5        g  U R	                  SSSSS9nU   UR                  [        R                  " [        [         5      5        UR                  ["        R$                  " [&        R(                  " 5       5      S-   5        UR                  US-   5        UR                  US-   5        U(       a1  UR                  SR                  U5      5        UR                  S5        S S S 5        g ! [         a'    U R                  R                  [        S5      5         g f = f! , (       d  f       g = f)Nr%   s1   skip updating fsmonitor.state: identity mismatch
s   wbT)
atomictemp
checkambigs-   warning: unable to write out fsmonitor state
r&   )r2   r   r   frompathr   joinr   r   debugr+   warnr   writer3   packr5   r6   r   r9   r:   r;   )r   rB   rC   rD   identityr<   s         r    set	state.setk   s:   =OO ==))$))..9K*LM~~%HHNNE 	99"Edt  D JJv{{>8<=JJx**6+=+=+?@5HIJJuu}%JJzE)*

5::i01

5! T	  	HHMM!MNO	 Ts   9E  C
F .FF
F"c                     [         R                  " [         R                  R                  U R                  SS5      5        [        R                  " S 5      U l        g ! [
         a     N(f = f)Ns   .hgr%   )	osunlinkpathrK   r   FileNotFoundErrorr   r   r   r   s    r    r2   state.invalidate   sO    	IIbggll4==&:LMN t, ! 		s   ?A 
A*)A*c                    Xl         g Nr   )r   rB   s     r    setlastclockstate.setlastclock   s    r#   c                    U R                   $ r[   r\   rX   s    r    getlastclockstate.getlastclock   s    r#   )r   r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r!   rE   rQ   r2   r]   r`   __static_attributes__ r#   r    r
   r
      s#    HA,F">- r#   r
   )
__future__r   r,   rT   r:   r3   mercurial.i18nr   	mercurialr   r   r   r6   r5   r
   rg   r#   r    <module>rk      s;    #  	     { {r#   