
    Vh                        d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZ 	  edd      Zd	 Zd
 Zd Zd Zd Z e        [y# e$ rZ ed      edZ[ww xY w)    )annotationsN)	to_nativeto_bytes)CDLLc_char_pc_intbyrefPOINTER	get_errnozlibselinux.so.1T)	use_errnozunable to load libselinux.soc                   	 d } t        d      	 G 	fdd      }t        i i t        |t        t              g|       t        |t        t        t              g|       i t        t        t              g      i t        ||g|       t        t        t              g|       	      }t
        j                  t           }|j                         D ]  \  }}t        t        |d       }|st        dj                  |            t        t        t                    |j                  d	d       |_        |j                  d
t              |_        |j                  rt!        fd|j                  D              rt#        |||        t%        |      j'                  t)        |            }|rt+        dj                  |            y )Nc                b    | dk  r)t               }t        |t        j                  |            | S )Nr   )r   OSErrorosstrerror)rcerrnos     S/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/compat/selinux.py	_check_rcz _module_setup.<locals>._check_rc   s+    6KE%U!344	    r   c                  "    e Zd Ze fd       Zy)!_module_setup.<locals>._to_char_pc                :    |t        |      st        |      }|S N)
isinstancer   )clsstrvaluebinary_char_types     r   
from_paramz,_module_setup.<locals>._to_char_p.from_param   s"    #JxAQ,R#H-Or   N)__name__
__module____qualname__classmethodr   )r   s   r   
_to_char_pr      s    		 
	r   r$   )argtypesrestype)r%   )	is_selinux_enabledis_selinux_mls_enabledlgetfilecon_rawmatchpathconsecurity_policyversselinux_getenforcemodesecurity_getenforcelsetfileconselinux_getpolicytypezmissing selinux function: {0}r%   r&   c              3  >   K   | ]  }t        |      u s|  y wr   )type).0argtypebase_ptr_types     r   	<genexpr>z _module_setup.<locals>.<genexpr>@   s     %k'DQXM]jLjg%ks   z(implementation is missing functions: {0})r1   dictr
   r   r   sysmodulesr    itemsgetattr_selinux_libImportErrorformatgetr%   r&   anysetattrset
differencedirNotImplementedError)
r   r$   _funcmap_thismodfnamecfgfnunimplemented_funcsr4   r   s
           @@r   _module_setuprK      s{    Cy  !z783D&EyYJwx7H#IS\]#gen-=>:z":IN"WX->,?SH {{8$Hnn& 
s\5$/=DDUKLL WU^,ggj$/WWY.
 {{#%kR[[%k"kHeR(" h-223x=A!"L"S"STg"hii r   c                 n    t               } t        j                  t        |             }|| j                  gS r   )r   r;   r,   r	   value)enforcemoder   s     r   r,   r,   L   s/    'K		,	,U;-?	@B!!""r   c                     t               } 	 t        j                  t        |             }|t	        | j
                        gt        j                  |        S # t        j                  |        w xY wr   )r   r;   r/   r	   r   rM   freecon)conr   s     r   r/   r/   R   sP    
*C"//c
;Icii()S!S!s   4A A-c                    t               }	 t        j                  | t        |            }|t	        |j
                        gt        j                  |       S # t        j                  |       w xY wr   )r   r;   r)   r	   r   rM   rP   )pathrQ   r   s      r   r)   r)   [   sR    
*C"))$c
;Icii()S!S!s   5A A.c                    t               }	 t        j                  | |t        |            }|t	        |j
                        gt        j                  |       S # t        j                  |       w xY wr   )r   r;   r*   r	   r   rM   rP   )rS   moderQ   r   s       r   r*   r*   d   sT    
*C"&&tT5:>Icii()S!S!s   6A A/)
__future__r   r   r7   +ansible.module_utils.common.text.convertersr   r   ctypesr   r   r   r	   r
   r   r;   r   exr<   rK   r,   r/   r)   r*    r   r   <module>r[      sq    # 	 
 K C C>)T:L
5jt#""" A  >
4
52=>s   
A
 
A	AA