
    |;i
                         d dl mZ d dlmZmZmZmZ d dl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%ez  ez  Z'ed        Z(ddZ)ddZ*ddZ+ddZ,y)    )contextmanager)byref
c_longlongc_size_tc_void_pN   )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              #   x   K   t               }t        ||        	 | t        |       y # t        |       w xY wwN)r	   r
   r   )flags	archive_ps     E/home/ubuntu/myenv/lib/python3.12/site-packages/libarchive/extract.pynew_archive_write_diskr!   &   s2      I9e,9
9s   :* :7:c                    | t        j                         dk(  rd}nt        }t               t	               t               }}}t        |      t        |      t        |      }}}t        |      5 }| D ]W  }	t        ||	j                         |	j                  }
	 t        |
|||      }|t        k(  rnt        ||||       't        |       Y 	 ddd       y# 1 sw Y   yxY w)zCExtracts the given archive entries into the current directory.
    N/r   )osgetcwdPREVENT_ESCAPEr   r   r   r   r!   r   _entry_p
_archive_pr   r   r   r   )entriesr   buffsizeoffsetbuff_psize_poffset_pwrite_pentryread_prs               r    extract_entriesr4   0   s     }99;# E"E!XZ$D$T{E$KvHFF		& 	(' 	(E%..1%%F#FFFHE# $f=	 
 w'	(	( 	( 	(s   -ACCc                 \    t        |       5 }t        ||       ddd       y# 1 sw Y   yxY w)zKExtracts an archive from a file descriptor into the current directory.
    N)r   r4   )fdr   archives      r    
extract_fdr8   H   s,     
2 (''( ( (   "+c                 \    t        |       5 }t        ||       ddd       y# 1 sw Y   yxY w)z;Extracts an archive from a file into the current directory.N)r   r4   )filepathr   r7   s      r    extract_filer<   O   s+    	X	 (''( ( (r9   c                 \    t        |       5 }t        ||       ddd       y# 1 sw Y   yxY w)z;Extracts an archive from memory into the current directory.N)r   r4   )buffer_r   r7   s      r    extract_memoryr?   U   s+    	w	 (7'( ( (r9   r   )-
contextlibr   ctypesr   r   r   r   r$   ffir	   r
   r   r   r   r   r   r   readr   r   r   EXTRACT_OWNEREXTRACT_PERMEXTRACT_TIMEEXTRACT_NO_OVERWRITEEXTRACT_UNLINKEXTRACT_ACLEXTRACT_FFLAGSEXTRACT_XATTREXTRACT_SECURE_SYMLINKSEXTRACT_SECURE_NODOTDOTEXTRACT_NO_AUTODIREXTRACT_NO_OVERWRITE_NEWEREXTRACT_SPARSEEXTRACT_MAC_METADATAEXTRACT_NO_HFS_COMPRESSIONEXTRACT_HFS_COMPRESSION_FORCEDEXTRACT_SECURE_NOABSOLUTEPATHSEXTRACT_CLEAR_NOCHANGE_FFLAGSr&   r!   r4   r8   r<   r?        r    <module>rX      s    % 8 8 	   8 7       #  # !' !(  '  #   (0(((rW   