grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a BÒiU ã@sTddlZddlZGdd„deƒZdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)éNc@seZdZdd„Zddd„ZdS)Ú PathChoosercCsÆtƒ|_tj |¡s(d|_d|jd<dS||_t d¡}t d¡}t|dƒ�f}t |ƒD]L\}}|  |¡rjqV|  |¡}|sŒt d||dfƒ‚|  d ¡|j|  d¡<qVWdƒn1s¸0YdS) Nz (defaults)zJ/usr/share/selinux/default:/usr/share/selinux/mls:/usr/share/selinux/develÚSELINUX_DEVEL_PATHz ^\s*(?:#.+)?$z^\s*(\w+)\s*=\s*(.+?)\s*$Úrz(%s:%d: line is not in key = value formatéé) ÚdictÚconfigÚosÚpathÚexistsÚconfig_pathnameÚreÚcompileÚopenÚ enumerateÚmatchÚ ValueErrorÚgroup)ÚselfÚpathnameÚignoreZconsiderÚfdÚlinenoÚlineÚmo©rú5/usr/lib/python3.9/site-packages/sepolgen/defaults.pyÚ__init__s       zPathChooser.__init__rcCsp|j |d¡}|dur(td||jfƒ‚| d¡}|D]&}tj ||¡}tj |¡r6|Sq6tj |d|¡S)Nz%s was not in %sú:r) rÚgetrr Úsplitr r Újoinr )rZ testfilenameZpathsetÚpathsÚpÚtargetrrrÚ__call__,s zPathChooser.__call__N)r)Ú__name__Ú __module__Ú __qualname__rr%rrrrrsrcCsdS)Nz/var/lib/sepolgenrrrrrÚdata_dir;sr)cCs tƒdS)Nz /perm_map©r)rrrrÚperm_map>sr+cCs tƒdS)Nz/interface_infor*rrrrÚinterface_infoAsr,cCs tƒdS)Nz/attribute_infor*rrrrÚattribute_infoDsr-cCs(tdƒ}|dƒ}tj |¡s$|dƒ}|S)Nú/etc/selinux/sepolgen.confZMakefilezinclude/Makefile)rr r r )ÚchooserÚresultrrrÚrefpolicy_makefileGs  r1cCstdƒ}|dƒS)Nr.Zinclude)r)r/rrrÚheadersNsr2) r r Úobjectrr)r+r,r-r1r2rrrrÚs"