
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
Kl„fU  ã               @   sT   d dl Z d dlZG dd„ deƒZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )é    Nc               @   s   e Zd Zdd„ Zddd„ZdS )ÚPathChooserc             C   s¶   t ƒ | _tjj|ƒs(d| _d| jd< d S || _tjdƒ}tjdƒ}t|dƒ�`}xXt	|ƒD ]L\}}|j
|ƒrlqX|j
|ƒ}|sŽtd||d f ƒ‚|jd	ƒ| j|jdƒ< qXW W d Q R X d S )
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ÚignoreZconsiderÚfdÚlinenoÚlineÚmo© r   ú/usr/lib/python3.6/defaults.pyÚ__init__   s     



 
zPathChooser.__init__r   c             C   sp   | j j|d ƒ}|d kr(td|| jf ƒ‚|jdƒ}x*|D ]"}tjj||ƒ}tjj|ƒr8|S q8W tjj|d |ƒS )Nz%s was not in %sú:r   )	r   Úgetr   r   Úsplitr	   r
   Újoinr   )r   ZtestfilenameZpathsetÚpathsÚpÚtargetr   r   r   Ú__call__,   s    

 zPathChooser.__call__N)r   )Ú__name__Ú
__module__Ú__qualname__r   r%   r   r   r   r   r      s   r   c               C   s   dS )Nz/var/lib/sepolgenr   r   r   r   r   Údata_dir;   s    r)   c               C   s
   t ƒ d S )Nz	/perm_map)r)   r   r   r   r   Úperm_map>   s    r*   c               C   s
   t ƒ d S )Nz/interface_info)r)   r   r   r   r   Úinterface_infoA   s    r+   c               C   s
   t ƒ d S )Nz/attribute_info)r)   r   r   r   r   Úattribute_infoD   s    r,   c              C   s(   t dƒ} | dƒ}tjj|ƒs$| dƒ}|S )Nz/etc/selinux/sepolgen.confÚMakefilezinclude/Makefile)r   r	   r
   r   )ÚchooserÚresultr   r   r   Úrefpolicy_makefileG   s
    r0   c              C   s   t dƒ} | dƒS )Nz/etc/selinux/sepolgen.confÚinclude)r   )r.   r   r   r   ÚheadersN   s    r2   )
r	   r   Úobjectr   r)   r*   r+   r,   r0   r2   r   r   r   r   Ú<module>   s   "