%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/duplicity/backends/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/duplicity/backends/__pycache__/xorrisobackend.cpython-312.pyc

�

�2e�/���ddlZddlZddlZddlZddlZddlZddlmZddlZddlm	Z	m
Z
ddlmZm
Z
mZGd�d�ZGd�dej j"�Zej j'd	e�y)
�N)�util)�path�progress)�FatalBackendException�BackendException�InvalidBackendURLc�^�eZdZdZdd�Zd�Zd�Zd�Zd�Zdd�Z	dd	�Z
d
�Zd�Zd�Z
d
�Zd�Zy)�Xorrisoz.
    Wrapper around a xorriso subprocess.
    Nc�<�||_d|_gd�|_|�|jj|�|j	|g|jzd|jddgz�|j�\}}|j
|�|jd�\}}y)N)z	-abort_on�FAILUREz-return_with�SORRY�0z-osirrox�onz-calm_drive�offz-jolietrz-devz-dialogrz-version)�device�proc�xorriso_args�extend�_Xorriso__start_subprocess�_Xorriso__recv_stdout_stderr�_Xorriso__handle_xorriso_error�_Xorriso__send_cmd)�selfr�xorriso_pathr�stdout�stderrs      �C/usr/lib/python3/dist-packages/duplicity/backends/xorrisobackend.py�__init__zXorriso.__init__1s��������	�
����#����$�$�\�2����
�N����
 �������	�
�		
��2�2�4�����#�#�F�+�����4����c�b�d�}	tj|tjtjtj��}||_||jj�||jj�y#t$r}td|j����d}~wwxYw)Nc��tj|tj�}|tjz}tj|tj|�y�N)�fcntl�F_GETFL�os�
O_NONBLOCK�F_SETFL)�fd�flagss  r�setNonBlockingz2Xorriso.__start_subprocess.<locals>.setNonBlockingZs8���K�K��E�M�M�2�E��B�M�M�)�E��K�K��E�M�M�5�1r)�stdinrrzXorriso binary not found: )	�
subprocess�Popen�PIPEr�FileNotFoundErrorr�xorriso_cmdrr)r�commandliner*�p�errs     r�__start_subprocesszXorriso.__start_subprocessYs���	2�

	Y�� � �� �o�o�!���!���	�A��D�I�	�t�y�y�'�'�(��t�y�y�'�'�(��	!�	Y�'�*D�T�EU�EU�DV�(W�X�X��	Y�s�A
B�	B.�B)�)B.c�,�|jjj�r&	|jjj�r�&|jjj�r&	|jjj�r�&	|D]n}|jjjt
j|�jd��|jjjd��p|jjjd�|jjj�|j�\}}|j|�||fS#t$r}td��d}~wwxYw)N�utf-8� �
z1BrokenPipe: lost connection to xorriso subprocess)rr�readlinerr+�write�shlex�quote�encode�flush�BrokenPipeErrorrrr)r�args�arg�errs      r�
__send_cmdzXorriso.__send_cmdns5���i�i���'�'�)���i�i���'�'�)��i�i���'�'�)���i�i���'�'�)�	]��
,���	�	���%�%�e�k�k�#�&6�&=�&=�g�&F�G��	�	���%�%�d�+�
,�
�I�I�O�O�!�!�%�(��I�I�O�O�!�!�#��2�2�4�����#�#�F�+��v�~����	]�'�([�\�\��	]�s�B<E:�:	F�F�Fc��g}g}	|jj��	||fSd}	|jjj�j	d�j�}|r|j
|�nd}n�Y	|jjj�j	d�j�}|r|j
|�nd}n�Y|r
|ddk(r	||fS|rtjd���)NTr6F���zenter option and arguments :g�������?)
r�pollrr9�decode�strip�appendr�time�sleep)rrr�no_input�lines     r�__recv_stdout_stderrzXorriso.__recv_stdout_stderr�s��������y�y�~�~��+��4�v�~��1�H���y�y�'�'�0�0�2�9�9�'�B�H�H�J����M�M�$�'�$�H��
���y�y�'�'�0�0�2�9�9�'�B�H�H�J����M�M�$�'�$�H��
��&��*�(F�F��
�v�~����
�
�3��7rc���|}dj|�}d|v}d|v}|r#djd�|D��}t|��|r#djd�|D��}t|��y)zc
        Detect errors from stderr of xorriso.
        Convert the errors into exceptions.
        �
�FATALrc3�*K�|]}d|vs�|���
y�w)z: FATALN���.0�ls  r�	<genexpr>z1Xorriso.__handle_xorriso_error.<locals>.<genexpr>�s����?�!�	�Q��A�?���	�c3�*K�|]}d|vs�|���
y�w)z	: FAILURENrSrTs  rrWz1Xorriso.__handle_xorriso_error.<locals>.<genexpr>�s����A�!��q�0@�A�A�rXN)�joinr)rr�lines�is_fatal�
is_failure�msgs      r�__handle_xorriso_errorzXorriso.__handle_xorriso_error�st�������5�!���f�$���&�(�
���)�)�?�u�?�?�C�"�3�'�'�
��)�)�A�u�A�A�C�"�6�*�*�rc�X�|j|�D��cgc]\}}|��	}}}|Scc}}w)�-
        List files on optical disc.
        )�lsl)r�pattern�f�_�filess     r�lsz
Xorriso.ls�s.��
 $�x�x��0�1�t�q�!��1��1����2s�&c
��|jd|�\}}|}g}|D]�}|j�}|s�tjd|d��}t	|�dk7r�=|\	}}	}
}}}
}}}|jd�r|j
d�std��	t|�}|d
d}|j|d|if���|S#t$r}td��d	}~wwxYw)
raz-lslz\s+���maxsplit�	�'z(Got unexpected format from xorriso -lsl.zCould not parse file size.N�rE�size)rrH�re�split�len�
startswith�endswithr�int�	ExceptionrI)rrcrrr[rfrM�parts�modere�_uid�_gidro�_month�_day�_time�filenamerBs                  rrbzXorriso.lsl�s���
�����9���������	5�D��:�:�<�D����H�H�V�T�A�6�E��5�z�Q���GL�D�D�!�T�4��v�t�U�H��&�&�s�+�8�3D�3D�S�3I�&�'Q�R�R�
E��4�y�� ��"�~�H��L�L�(�V�T�N�3�4�/	5�2���
�
E�&�'C�D�D��
E�s�B<�<	C�C�Cc�h�|jd�\}}ddj|�vrtd��y)z=
        Commit changes and write them to the image.
        z-commit�exceeds free space on mediarP�Not enough free space on media.N)rrZr�rrrs   r�commitzXorriso.commit�s8��
����3����(�D�I�I�f�,=�=�"�#D�E�E�>rc�,�|jd�\}}y)z2
        Terminate the xorriso subprocess
        z-endN)rr�s   r�endzXorriso.end�s��
����0���rc��t|t�sJ�|jdg|�|�d���\}}ddj|�vrt	d��y)zN
        Copy file to the ISO image. Does not commit the changes yet.
        z-cprz--r�rPr�N)�
isinstance�listrrZr�rrf�destrrs     r�cpz
Xorriso.cp�sk���%��&�&�&�(�����
�
�
�
�
�
�	
����)�D�I�I�f�,=�=�"�#D�E�E�>rc�Z�t|t�sJ�|sy|jdg|���\}}y)zY
        Remove a list of files from the image. Does not commit the changes yet.
        Nz-rm)r�r�r)rrfrrs    r�rmz
Xorriso.rm
s9���%��&�&�&���(�����
�
�
���rc��t|t�sJ�tjj	|�r!tjj|�sJ�t
|�dk(ry|jdg|�|���\}}y)z3
        Extract files from the ISO image.
        rNz-cpx)r�r�r%r�exists�isfilerrrr�s     r�extractzXorriso.extractse���%��&�&�&��7�7�>�>�$�'�2�7�7�>�>�$�+?�?�?��u�:��?��(�����>�%�>��>���r)�xorrisoN)�.)�__name__�
__module__�__qualname__�__doc__rrrrrrgrbr�r�r�r�r�rSrrr
r
,sH���&5�P)�*�0 �D+�(�%�NF�1�F� 

�?rr
c�@�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�XorrisoBackendakBackend for writing to optical discs or ISO images using xorriso.

    Simple URLs look like `xorriso:///dev/sr0` if the backup location is at the root of the filesystem.
    or if `xorriso://dev/sr0:/path/to/a/directory/on/iso` if the backup location is in a directory.

    Especially for testing also an ISO file can be used: xorriso://path/to/image.iso

    The path to the `xorriso` executable can be specified with teh `XORRISO_PATH` environment variable.
    Environment variables:

    * XORRISO_PATH: Alternative path to the `xorriso` executable
    * XORRISO_WRITE_SPEED: Specify the speed for writing to the optical disc. One of ["min", "max"].
    * XORRISO_ASSERT_VOLID: Abort when the volume ID of the ISO image does not match the given value.
    * XORRISO_ARGS: Arbitrary arguments to xorriso, inserted before the filesystem operations. For experts only.
    c���tjjj||�tj
j
dd��}|dk(r tjd�std��g|_
tj
j
d�}|�0tj|�}|jj|�tj
j
d�}|�|xjd|dgz
c_
tj
j
d	d
��}|dvr|xjd|gz
c_
n|xjdd
gz
c_
|jjd
�st!d��|jdd}|jdd��}t#|�dk(r|d|_|d|_n|d|_d|_|j&j)d�s|xj&dz
c_tjj+|j$�st-d|j$����t/|j$||j��|_y)N�XORRISO_PATHr�)�defaultzxorriso not installed�XORRISO_ARGS�XORRISO_ASSERT_VOLIDz
-assert_volidr�XORRISO_WRITE_SPEED�min)r��maxz-speedz//zBad xorriso:// path syntax.��:rnrjr�/z$Optical disc device does not exist: )rrr)�	duplicity�backend�Backendrr%�environ�getr�whichrrr;rqrrrs�InvalidBackendURlrrr�iso_pathrtr�rr
r�)	r�
parsed_urlr0�args_pre�arg_list�assert_volid�speedrrws	         rrzXorrisoBackend.__init__;s������!�!�*�*�4��<��j�j�n�n�^�Y�n�G���)�#��:�:�i�(�+�,C�D�D�����:�:�>�>�.�1�����{�{�8�,�H����$�$�X�.��z�z�~�~�&<�=���#����/�<��!K�K���
�
���4�e��D���N�"����(�E�!2�2�����(�E�!2�2�����)�)�$�/�#�$A�B�B����q�r�"����
�
�3��+���u�:��?���(�D�K�!�!�H�D�M���(�D�K��D�M��}�}�%�%�c�*��M�M�S� �M��w�w�~�~�d�k�k�*�#�&J�4�;�;�-�$X�Y�Y��d�k�k��Z^�Zk�Zk�l��rc���tjj|jj	d��rJ�|j�|j
�}tjd|�|jj|jj	d�g|j|j	d�z�|jj�tj||�y)N�utf8r)
r%r�isdir�namerG�setdata�getsizer�report_transferr�r�r�r�)r�source_path�remote_filename�source_sizes    r�_putzXorrisoBackend._putos����7�7�=�=��!1�!1�!8�!8��!@�A�A�A�����!�)�)�+��� � ��K�0������
�
�
�
$�
$�V�
,�-��M�M�O�2�2�6�:�:�	
�	
������� � ��k�:rc��|jj|j|jd�zg|jjd��y�Nr�)r�r�r�rGr�)rr~�
local_paths   r�_getzXorrisoBackend._get}s;�������d�m�m�h�o�o�f�.E�E�F�
���H^�H^�_e�Hf�grc��|jj|j��}|D�cgc]}|j���c}Scc}w)N)rc)r�rgr�r=)rrfrds   r�_listzXorrisoBackend._list�s4��������
�
��6��$)�*�q����
�*�*��*s�Ac�t�|jj|j|jd�zg�yr�)r�r�r�rG)rr~s  r�_deletezXorrisoBackend._delete�s'��������������)@�@�A�Brc��|D�cgc] }|j|jd�z��"}}|jj|�ycc}wr�)r�rGr�r�)r�	filenamesrds   r�_delete_listzXorrisoBackend._delete_list�s=��?H�I�!�T�]�]�Q�X�X�f�%5�5�I�	�I������	�"��Js�%Ac���|j|jd�z}|jj|�}t	|�dk(s|dd|k7rd}d|iS|ddd}d|iS)Nr�rrErnro)r�rGr�rbrr)rr~rfros    r�_queryzXorrisoBackend._query�sv���=�=�8�?�?�6�#:�:����� � ��*���u�:��?�e�A�h�q�k�X�5��D���~����8�A�;�v�&�D���~�rc�l�|jj�|jj�yr")r�r�r�)rs r�_closezXorrisoBackend._close�s"�������������rN)r�r�r�r�rr�r�r�r�r�r�r�rSrrr�r�*s3��� 2m�h;�h�+�C�#�	�rr�r�)r%r#rpr;r,rJr�r�duplicity.backendrr�duplicity.errorsrrrr
r�r�r��register_backendrSrr�<module>r�sn��.
��	���������{?�{?�|n�Y�&�&�.�.�n�b
���"�"�9�n�=r

Zerion Mini Shell 1.0