B
    ;[G	                 @   s   d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZ ddlmZmZmZ dZdZdZd	Zd
ZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)edd Z*d#ddZ+d$ddZ,d%ddZ-d&d d!Z.d"S )'    )divisionprint_functionunicode_literals)contextmanager)byref
c_longlongc_size_tc_void_p   )write_disk_newwrite_disk_set_options
write_freewrite_headerread_data_blockwrite_data_blockwrite_finish_entryARCHIVE_EOF)	fd_readerfile_readermemory_reader                @         i   i   i   i   i    i @  i   i   i   c             c   s*   t  }t||  z
|V  W d t| X d S )N)r   r   r   )flagsZ	archive_p r   1lib/python3.7/site-packages/libarchive/extract.pynew_archive_write_disk!   s
    

r!   c          	   C   s   t  t t   }}}t|t|t|  }}}t|Z}xR| D ]J}	t||	j |	j}
x*t|
|||}|t	krrP t
|||| qZW t| qBW W dQ R X dS )zCExtracts the given archive entries into the current directory.
    N)r	   r   r   r   r!   r   Z_entry_pZ
_archive_pr   r   r   r   )entriesr   ZbuffsizeoffsetZbuff_pZsize_pZoffset_pZwrite_pentryZread_prr   r   r    extract_entries+   s    

r'   c          	   C   s"   t | }t|| W dQ R X dS )zKExtracts an archive from a file descriptor into the current directory.
    N)r   r'   )fdr   archiver   r   r    
extract_fd<   s    
r*   c          	   C   s"   t | }t|| W dQ R X dS )z;Extracts an archive from a file into the current directory.N)r   r'   )filepathr   r)   r   r   r    extract_fileC   s    
r,   c          	   C   s"   t | }t|| W dQ R X dS )z;Extracts an archive from memory into the current directory.N)r   r'   )Zbuffer_r   r)   r   r   r    extract_memoryI   s    
r-   N)r   )r   )r   )r   )/Z
__future__r   r   r   
contextlibr   Zctypesr   r   r   r	   Zffir   r   r   r   r   r   r   r   readr   r   r   ZEXTRACT_OWNERZEXTRACT_PERMZEXTRACT_TIMEZEXTRACT_NO_OVERWRITEZEXTRACT_UNLINKZEXTRACT_ACLZEXTRACT_FFLAGSZEXTRACT_XATTRZEXTRACT_SECURE_SYMLINKSZEXTRACT_SECURE_NODOTDOTZEXTRACT_NO_AUTODIRZEXTRACT_NO_OVERWRITE_NEWERZEXTRACT_SPARSEZEXTRACT_MAC_METADATAZEXTRACT_NO_HFS_COMPRESSIONZEXTRACT_HFS_COMPRESSION_FORCEDZEXTRACT_SECURE_NOABSOLUTEPATHSZEXTRACT_CLEAR_NOCHANGE_FFLAGSr!   r'   r*   r,   r-   r   r   r   r    <module>   s6   (



