
    	^c                     h    d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	 dZ
dZ G d d          ZdS )    N)_)encodingpathutilutil   s   >Ic                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )statec                    |j         | _        |j        | _        t	          j        |j                  | _        d | _        t          j
        d           | _        | j                            dd          | _        | j                            dd          | _        t!          | j                            dd                    | _        d S )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__zstate.__init__   s    H	7 -di88t,,HOOL'::	"&("5"5/#
 #
 TX__\:FFGG    c                    	 |                      dd          }nG# t          $ r:}t          j        d           | _        |j        t
          j        k    r Y d }~dS d }~ww xY wt          j                            |          | _        |                    d          }t          |          dk     rA| j
                            ddt          |          z             |                                  dS 	 t          j        t          |          d         }|t           k    rP| j
                            dd|t           fz             |                                  	 |                                 dS |                                                    d	          }t          |          d
k     rT| j
                            ddt          |                     |                                  	 |                                 dS |d         }t'          j        t+          j                              }||k    rK| j
                            dd||fz             |                                  	 |                                 dS |d         }|d         }	|d
d         }
|                                 n# |                                 w xY w||	|
fS )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   IOErrorr   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   getz	state.get'   s   	$99/77DD 	$ 	$ 	$!]400DNzU\))######		$ --d33yy|||q  HLL"$'$5$56  
 OO##+	 -EEaHKh&& *-8(,CD  
 !!!'B JJLLLLL? IIKK%%e,,E 5zzA~~ ;JJ	   !!!'( JJLLLLL' !8L*6+=+?+?@@Hx'' C#X./   !!!' JJLLLLL !HEqJadI JJLLLLDJJLLLLj)++s5    
A/AA.A$J$ )A7J$ 7A'J$ 5J$ $J:c                    ||                                   d S t          j                            | j                            d                    }|| j        k    r| j                            d           d S 	 |                     dddd          }n?# t          t          f$ r+ | j                            t          d                     Y d S w xY w|5  |                    t          j        t           t"                               |                    t%          j        t)          j                              dz              |                    |dz              |                    |dz              |r=|                    d                    |                     |                    d           d d d            d S # 1 swxY w Y   d S )Nr"   s1   skip updating fsmonitor.state: identity mismatch
s   wbT)
atomictemp
checkambigs-   warning: unable to write out fsmonitor state
r#   )r/   r   r   frompathr   joinr   r   debugr(   OSErrorwarnr   writer0   packr2   r3   r   r6   r7   r8   )r   r?   r@   rA   identityr9   s         r   setz	state.setj   s   =OOF =))$)..9K*L*LMMt~%%HNNE   F	99"Edt   DD ! 	 	 	HMM!MNNOOOFF	  	" 	"JJv{>8<<===JJx*6+=+?+?@@5HIIIJJuu}%%%JJzE)*** "

5::i00111

5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s%   8B 8CCCF==GGc                     	 t          j        t           j                            | j        dd                     n# t
          $ r Y nw xY wt          j        d           | _        d S )Ns   .hgr"   )	osunlinkpathrG   r   FileNotFoundErrorr   r   r   r   s    r   r/   zstate.invalidate   sd    	Ibgll4=&:LMMNNNN  	 	 	D	t,,s   8; 
AAc                     || _         d S Nr   )r   r?   s     r   setlastclockzstate.setlastclock   s    r    c                     | j         S rV   rW   rT   s    r   getlastclockzstate.getlastclock   s
    r    N)	__name__
__module____qualname__r   rB   rN   r/   rX   rZ    r    r   r	   r	      su        H H HA, A, A,F" " ">- - -         r    r	   )r)   rP   r7   r0   mercurial.i18nr   	mercurialr   r   r   r3   r2   r	   r^   r    r   <module>ra      s     				                  { { { { { { { { { {r    