
    y9>i                     V    d Z ddlmZ ddlZddlZddlZd ZeZd Zd Z	d Z
d	 Zd
 ZdS )z/Archive commands for the tarfile Python module.   )util    Nc                     	 t          j        |           5 }|                    |dk               ddd           n# 1 swxY w Y   n*# t          $ r}t	          j        d|            |d}~ww xY wdS )z2List a TAR archive with the tarfile Python module.   )verboseNzerror listing )tarfileopenlist	Exceptionr   PatoolError)archivecompressioncmd	verbosityinteractivetfileerrs          \/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/patoolib/programs/py_tarfile.pylist_tarr      s    D\'"" 	.eJJy1}J---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. D D D999::CD
Fs7   A	 =A	 AA	 AA	 	
A0A++A0c                 &   	 t          j        |           5 }t          j        dk    r|                    |d           nt          ||           ddd           n# 1 swxY w Y   n*# t          $ r}t          j        d|            |d}~ww xY wdS )z5Extract a TAR archive with the tarfile Python module.)      r   finalr   data)pathfilterNzerror extracting )	r   r	   sysversion_info
extractallsafe_extractr   r   r   )r   r   r   r   r   outdirr   r   s           r   extract_tarr"   $   s    G\'"" 	,e#999  fV <<<<UF+++		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
  G G G<7<<==3FG
Fs:   A' 9AA' AA' "A#A' '
B1B		Bc                     t           j                            |           }t           j                            |          }t           j                            ||g          }||k    S )zDCheck that given target path is a subdirectory inside the directory.)osr   abspathcommonprefix)	directorytargetabs_directory
abs_targetprefixs        r   is_within_directoryr,   1   sM    GOOI..M((JW!!=*"=>>F]""    c                    g }g }|                                  D ]b}t          j                            ||j                  }t          ||          r|                    |           M|                    |           c|                     ||           |r2d                    d |D                       }t          d| d          dS )zHelper function to ensure that TAR members will be extracted inside
    the given path.
    If a member will be extracted outside the path an Exception is raised.
    z, c              3   $   K   | ]}|j         V  d S )N)name).0members     r   	<genexpr>zsafe_extract.<locals>.<genexpr>H   s$      CCVV[CCCCCCr-   zUnsafe tarfile entries: .N)	
getmembersr$   r   joinr0   r,   appendr   r   )r   r   safe_membersbad_membersr2   member_pathfilelists          r   r    r    9   s    
 LK""$$ ' 'gll455t[11 	'''''v&&&&	T<((( @99CC{CCCCC>8>>>???@ @r-   c                    t          |          }	 t          j        | |          5 }|D ]}|                    |           	 ddd           n# 1 swxY w Y   n*# t          $ r}	t          j        d|            |	d}	~	ww xY wdS )z4Create a TAR archive with the tarfile Python module.Nzerror creating )get_tar_moder   r	   addr   r   r   )
r   r   r   r   r   	filenamesmoder   filenamer   s
             r   
create_tarrB   L   s    $$DE\'4(( 	$E% $ $		(####$	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$  E E E:::;;DE
Fs:   A AA AA AA 
B$A<<Bc                 j    | dk    rdS | dk    rdS | dv rdS | rd|  d}t          j        |          d	S )
z?Determine tarfile open mode according to the given compression.gzipzw:gzbzip2zw:bz2)lzmaxzzw:xzzpytarfile does not support z for tar compressionw)r   r   )r   msgs     r   r=   r=   X   s`    fvgwn$$v $MKMMMs###3r-   )__doc__ r   r$   r   r   r   test_tarr"   r,   r    rB   r=    r-   r   <module>rN      s    6 5       				 



    
 
 
# # #@ @ @&	 	 	    r-   