B
    [5#              	   @   s  d dl 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mZmZ yd dlmZ W n  ek
rt   d dlm	Z Y nX d dlZd dlmZ d dlZd dlZd dlZddlmZ ed	ZejZejd
pedZej eZ!dZ"d Z#dZ$dZ%dZ&dZ'dZ(dZ)eeeeeee
Z*eeeeeeZ+eeeeZ,eeeeZ-dd Z.eZ/eZ0dd Z1dd Z2dd Z3dd Z4dvddZ5e5de/geZ6e5de/geZ7e5d g e0e3 e5d!e0ge e5d"e0ge e5d#e0ge e5d$e0ge e5d%e0ge e5d&e0ge e5d'e0ge e5d(e0ge e5d)e0ge e5d*e0ge e5d+e0ge e5d,e0ge e5d-e0ge	 e5d.e0ge e5d/e0ge e5d0e0ge e5d1e0ge e5d2e0ge e5d3e0ge e5d4e0ge e5d5e0ge e5d6e0ge e5d7e0ge	 e5d8e0ge	 e5d9e0e	gd e5d:e0egd e5d;e0egd e5d<e0eegd e5d=e0eegd e5d>e0eegd e5d?e0eegd e5d@e0egd e5dAe0ge0 e5dBe0gd e5dCg e/e3 e8dDZ9xZe:e9D ]NZ;ye5dEe; e/gee4 W n. e<k
r   e=dFe;  e9>e; Y nX qW e8dGZ?xZe:e?D ]NZ;ye5dHe; e/gee4 W n. e<k
rb   e=dIe;  e?>e; Y nX qW e5dJe/ee,e+e-gee4 e5dKe/ee
gee4 e5dLe/ee
gee4 e5dMe/ee
gee4 e5dNe/eegee4 e5dOe/egee4 e5dPe/gee4 e5dQe/gee4 e5dRg e/e3 e5dSe/egee4 e5dTe/gee4 e5dUe/egee4 e5dVe/egee4 e5dWe/gee4 e5dXe/eeee
ee	gee4 e5dYe/ee
gee4 e5dZe/gee4 e5d[g e/e3 e5d\e/egee4 e5d]g e/e3 e5d^e/egee4 e8d_Z@xZe:e@D ]NZ;ye5d`e; e/gee4 W n. e<k
rL   e=dae;  e@>e; Y nX qW e8dbZAxZe:eAD ]NZ;ye5dce; e/gee4 W n. e<k
r   e=dde;  eA>e; Y nX qfW e5dee/ee,e*e-gee4 e5dfe/egee4 e5dge/egee4 e5dhe/egee4 e5die/ee
ee
gee4 e5dje/gee4 e5dke/gee4 e5dle/egee4 e5dme/egee4 e5dne/egee4 e5doe/ee
gee4 e5dpe/ee
e	gee4 e5dqe/gee4 e5dre/gee4 e5dse/gee4 e5dte/gee4 e5dug ee4 dS )w    )divisionprint_functionunicode_literals)
c_char_pc_intc_uintc_long
c_longlongc_size_tc_void_p	c_wchar_p	CFUNCTYPEPOINTER)	c_ssize_t)r	   N)find_library   )ArchiveError
libarchiveZ
LIBARCHIVEarchiveiiiii   i  c              G   s   t S )N)
ARCHIVE_OK)_ r   -lib/python3.7/site-packages/libarchive/ffi.py<lambda>4   s    r   c             C   s8   t | }|d krd S y
|dS  tk
r2   |S X d S )Nascii)error_stringdecodeUnicodeDecodeError)	archive_pmsgr   r   r   _error_string?   s    
r    c             C   s   t | }t|t| || d S )N)r    r   errno)r   retcoder   r   r   r   archive_errorI   s    r#   c             C   s   | d krt |jd | S )Nz returned NULL)r   __name__)Zretfuncargsr   r   r   
check_nullN   s    r'   c             C   s<   | dkr| S | t kr*tt|d  | S t|d | d S )Nr   )ARCHIVE_WARNloggerwarningr    r#   )r"   r%   r&   r   r   r   	check_intT   s    r+   c             C   s2   t td|  }||_||_|r$||_|t | < |S )NZarchive_)getattrr   argtypesrestypeerrcheckglobals)namer-   r.   r/   fr   r   r   ffi^   s    
r3   r!   r   Z	entry_newZentry_filetypeZentry_atimeZentry_birthtimeZentry_mtimeZentry_ctimeZentry_atime_nsecZentry_birthtime_nsecZentry_mtime_nsecZentry_ctime_nsecZentry_pathnameZentry_pathname_wZentry_sourcepathZ
entry_sizeZentry_size_is_setZ
entry_modeZentry_strmodeZentry_hardlinkZentry_hardlink_wZentry_symlinkZentry_symlink_wZentry_rdevmajorZentry_rdevminorZ	entry_uidZ	entry_gidZentry_set_sizeZentry_set_filetypeZentry_set_permZentry_set_atimeZentry_set_mtimeZentry_set_ctimeZentry_set_birthtimeZentry_update_pathname_utf8Zentry_clearZ
entry_freeZread_new)7zipallZarZcabcpioemptyiso9660ZlhamtreeZrarrawZtarxarzipwarcZread_support_format_z!read format "%s" is not supported)r5   bzip2compressgrzipgziplrziplziplzmalzopZnoneZrpmuuxzlz4zstdZread_support_filter_z!read filter "%s" is not supportedZ	read_openZread_open_fdZread_open_filename_wZread_open_memoryZread_next_headerZread_next_header2Z
read_closeZ	read_freeZread_disk_newZread_disk_set_behaviorZread_disk_set_standard_lookupZread_disk_openZread_disk_open_wZread_disk_descendZread_data_blockZ	read_dataZread_data_skipZ	write_newZwrite_set_optionsZwrite_disk_newZwrite_disk_set_options)r4   Zar_bsdZar_svr4r6   Z	cpio_newcZgnutarr8   r9   Zmtree_classicZpaxZpax_restrictedZsharZ	shar_dumpZustarZv7tarr;   r<   r=   Zwrite_set_format_z"write format "%s" is not supported)Z	b64encoder>   r?   r@   rA   rB   rC   rD   rE   ZuuencoderG   rH   rI   Zwrite_add_filter_z"write filter "%s" is not supportedZ
write_openZwrite_open_fdZwrite_open_filenameZwrite_open_filename_wZwrite_open_memoryZwrite_get_bytes_in_last_blockZwrite_get_bytes_per_blockZwrite_set_bytes_in_last_blockZwrite_set_bytes_per_blockZwrite_headerZ
write_dataZwrite_data_blockZwrite_finish_entryZ
write_failZwrite_closeZ
write_freeZversion_number)N)BZ
__future__r   r   r   Zctypesr   r   r   r   r	   r
   r   r   r   r   r   ImportErrorZctypes.utilr   ZloggingZmmaposZ	exceptionr   Z	getLoggerr)   ZPAGESIZEZ	page_sizeenvirongetZlibarchive_pathZcdllZLoadLibraryr   ZARCHIVE_EOFr   ZARCHIVE_RETRYr(   ZARCHIVE_FAILEDZARCHIVE_FATALZREGULAR_FILEZDEFAULT_UNIX_PERMISSIONZWRITE_CALLBACKZREAD_CALLBACKZOPEN_CALLBACKZCLOSE_CALLBACKZVOID_CBZc_archive_pZc_archive_entry_pr    r#   r'   r+   r3   r!   r   setZREAD_FORMATSlistZf_nameAttributeErrorr*   removeZREAD_FILTERSZWRITE_FORMATSZWRITE_FILTERSr   r   r   r   <module>   s6  0



