File: //lib/python3.9/site-packages/ipapython/__pycache__/directivesetter.cpython-39.opt-1.pyc
a
}�f� � @ s| d dl Z d dlZd dlZd dlZd dlZd dlmZmZ e� Z G dd� d�Z
ddd �Zd
d� Zddd
�Z
dd� Zdd� ZdS )� N)�unescape_seq�
escape_seqc @ sB e Zd ZdZddd�Zdd� Zd d
� Zeeefdd�Zd
d� Z dS )�DirectiveSetterzgSafe directive setter
with DirectiveSetter('/path/to/conf') as ds:
ds.set(key, value)
T� �#c C s0 t j�|�| _|| _|| _|| _d | _d | _d S �N) �os�path�abspath�filename�quotes� separator�comment�lines�stat)�selfr r r
r � r �=/usr/lib/python3.9/site-packages/ipapython/directivesetter.py�__init__ s zDirectiveSetter.__init__c C sJ t �| j��*}t�|�� �| _t|�| _W d � n1 s<0 Y | S r ) �io�openr r �fstat�filenor �listr )r �fr r r � __enter__ s (zDirectiveSetter.__enter__c C s: |d urd | _ d | _d S tj�| j�\}}tj||dd�\}}tj |ddd���}| j D ]"} t
| t�sn| �d�} |�
| � qVd | _ t�|�� t�| jj�� t�|�� | jj| jj� d | _|�� t�|�� � W d � n1 s�0 Y t�|| j� t� |tjtjB �}
zt�|
� W t�|
� nt�|
� 0 d S )NT)�prefix�dir�text�w)�mode�closefdzutf-8)r r r r �splitr �tempfileZmkstempr r �
isinstance�str�decode�write�fchmodr �S_IMODE�st_mode�fchown�st_uid�st_gid�flush�fsync�rename�O_RDONLY�O_DIRECTORY�close)r �exc_typeZexc_valZexc_tbZ directoryr �fd�namer �line�dirfdr r r �__exit__$ s,
,zDirectiveSetter.__exit__c C sH |t u r| j}|t u r| j}|t u r*| j}tt||||| j|��| _dS )zSet a single directive
N)� _SENTINELr r
r r �set_directive_linesr )r � directive�valuer r
r r r r �setC s �zDirectiveSetter.setc C s4 t |t�rt|�� �}|D ]\}}| �||� qdS )zISet multiple directives from a dict or list with key/value pairs
N)r$ �dict�sorted�itemsr>