
    }Wj                       U d Z ddlmZ 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
 ddlmZmZmZ ddlmZ ddlmZ dd	lmZ  ej*                  d
      j-                         Zded<    eej4                  ej6                  ej8                  ej:                  f      Zded<    edd       G d d             ZddZ ddZ!ddZ"	 	 	 	 	 	 ddZ#ddZ$y)zHUnnamed-inode bootstrap publication for the fixed registration registry.    )annotationsN)	dataclass)Final)#WeeklyOperationsAuthorityCompromiseWeeklyOperationsCorruption$WeeklyOperationsPlatformNotSupported)REGISTRY_NAME)link_unnamed_file)WeeklyOperationsParentAuthority    r   EMPTY_REGISTRY_DIGEST_UNSUPPORTEDT)frozenslotsc                  ,    e Zd ZU ded<   ded<   ded<   y)PreparedRegistryint
descriptorztuple[int, int]identityos.stat_resultinfoN)__name__
__module____qualname____annotations__ r   /home/cube/projects/richard/traning coach/task-12-independent-verification-r9/build/hermes-full/dualcoach/profile/checkin_cli/weekly_operations_registry_bootstrap.pyr   r      s    O
r   r   c                   t        j                  | j                        xrg t        j                  | j                        dk(  xrC | j                  t        j                         k(  xr  | j                  |k(  xr | j                  dk(  S )N  r   )	statS_ISREGst_modeS_IMODEst_uidosgeteuidst_nlinkst_size)r   linkss     r   _safer*       sn    T\\" 	LL&%/	KK2::<'	 MMU"	 LLAr   c                   | j                          t        j                  | j                        rt	        d      	 t        j
                  dt        j                  t        j                  z  t        j                  z  d| j                        }	 t        j                  |       t        j                  |      }t        |d      st!        d      t#        ||j$                  |j&                  f|      S # t        $ r/}|j                  t        v rt        d      |t	        d      |d }~ww xY w# t        t        t(        t*        f$ r t        j,                  |        w xY w)	Nz.uninitialized authority directory is not empty.r   dir_fdz-O_TMPFILE registry publication is unsupportedz unnamed registry creation failedr   zunnamed registry is unsafe)verifyr%   listdirr   r   open	O_TMPFILEO_RDWR	O_CLOEXECOSErrorerrnor   r   fsyncfstatr*   r   r   st_devst_inoKeyboardInterrupt
SystemExitclose)parentr   errorr   s       r   prepare_registryr@   *   s!   
MMO	zz&##$()YZZ
XWW		)BLL8%$$


xx
#T1~56RSS
T[[$++,FMM  X;;,&6? ))KLRWWX /1BJO 
s%   AC4 A#D/ 4	D,=*D''D,/0Ec                   	 t        j                  t        t         j                  t         j                  z  t         j
                  z  t         j                  z  |       }	 t        j                  |      }t        j                  t        | d      }t        |d      rJ|j                  |j                  f|j                  k7  s%|j                  |j                  |j                  fk7  rt        d      |t        j                  |       S # t        $ r}t        d      |d }~ww xY w# t        j                  |       w xY w)Nr-   z!bootstrap registry name is unsafeFr.   follow_symlinks   z#bootstrap registry identity changed)r%   r1   r	   O_RDONLY
O_NONBLOCK
O_NOFOLLOWr4   r5   r   r8   r    r*   r9   r:   r   r=   )	directorypreparedr   r?   r   nameds         r   reconcile_registryrK   D   s    bWWKK"--'"--7",,F

xx
#iOdAT[[)X->->>  U\\5<<$@@56[\\
  b12UV\aab 	s%   AD	  BD& 		D#DD#&D=c                ^   	 t        |j                  | j                  t               	 t        j                  | j                         t        | j                  |      S # t        $ r}t	        d      |d }~wt
        $ r}t        d      |d }~ww xY w# t
        $ r}t        d      |d }~ww xY w)Nz bootstrap registry name occupiedzbootstrap registry link failedzregistry directory fsync failed)
r
   r   r	   FileExistsErrorr   r5   r   r%   r7   rK   )r>   rI   r?   s      r   commit_registryrN   [   s    V(--v/@/@-P
W
""# f//::  a12TU[`` V()IJPUUV  W()JKQVVWs:   %A B 	B&A22B>B

B	B,B''B,c                X   	 t        j                  t        | j                  d      }|j
                  |j                  f|j                  k7  rt        d      t        j                  t        | j                         t        j                  | j                         y # t        $ r Y y w xY w)NFrB   z1unowned bootstrap registry substitution preservedr-   )r%   r    r	   r   FileNotFoundErrorr9   r:   r   r   unlinkr7   )r>   rI   r   s      r   remove_owned_registryrR   k   s    ww}V->->PUV 	T[[!X%6%661?
 	
 IImF$5$56HHV  s   &B 	B)(B))r   r   r)   r   returnbool)r>   r   rS   r   )rH   r   rI   r   rS   r   )r>   r   rI   r   rS   r   )r>   r   rI   r   rS   None)%__doc__
__future__r   r6   hashlibr%   r    dataclassesr   typingr   checkin_cli.weekly_operationsr   r   r   8checkin_cli.weekly_operations_canonical_registry_historyr	   "checkin_cli.weekly_operations_linkr
   $checkin_cli.weekly_operations_parentr   sha256	hexdigestr   r   	frozensetENOSYS
EOPNOTSUPPEINVALEPERMr   r   r*   r@   rK   rN   rR   r   r   r   <module>rf      s    N "   	  !  
 S @ P-w~~c2<<> u >u/?/?u{{ [\e \ $d#  $4.;+;7G;; 
 r   