
    h                         d dl mZmZ d dlZd dlZd dlZd dlmZ ddlm	Z	 ddl
m
Z
 ddlmZmZ ddlmZmZmZ  G d	 d
e      Z G d de      Zy)    )print_functionunicode_literalsN)Queue   )AuthSrv)bos)	StreamArcerrdesc)Daemonfsencmin_exc                       e Zd ZdZd Zd Zy)QFilez2file-like object which buffers writes into a queuec                 @    t        d      | _        g | _        d| _        y )N@   r   )r   qbqnq)selfs    C/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/star.py__init__zQFile.__init__   s    )    c                 X   || j                   dk\  rB| j                  j                  dj                  | j                               g | _        d| _         || j                  j                  d        y | j                  j                  |       | xj                   t        |      z  c_         y )Ni  r   r   )r   r   putjoinr   appendlenr   bufs     r   writezQFile.write   st    ;$''Z/FFJJsxx()DGDG;FFJJtGGNN3GGs3xGr   N)__name__
__module____qualname____doc__r   r     r   r   r   r      s    <

 r   r   c                   8     e Zd ZdZ	 d fd	Zd Zd Zd Z xZS )	StreamTarz0construct in-memory tar file from the given pathc                    t         t        |   |||       d| _        d| _        t               | _        i | _        t        j                  }d|v r't        j                  }t        j                  dd|      }	 |j                  dd      j                  d      \  }}t        |      }d | j                  d|d	}	|d
k(  r't        j                   j"                  }
|dk\  r|nd|	d<   nm|dk(  r't        j                   j$                  }
|dk\  r|nd|	d<   nA|dk(  r't        j                   j&                  }
|dk\  r|nd|	d<   nt        j(                  }
d|	d<    |
di |	| _        t-        | j.                  d       y #  d}Y xY w)Nr   paxz[^a-z0-9]*pax[^a-z0-9]* :,w)namefileobjmodeformatgz   compresslevelbz2   xzr   presetzw|r1   zstar-genr%   )superr'   r   cicor   qfileerrftarfile
GNU_FORMAT
PAX_FORMATresubreplacesplitintTarFilegzopenbz2openxzopenopentarr   _gen)r   logasrvfgencmpkwargsfmtzslvargfun	__class__s              r   r   zStreamTar.__init__'   s[    	i'T48W
	   C< $$C&&3R=C	kk#s+11#6GCRB 

C3O$;//((C)+q2aC E\//))C)+q2aC D[//((C"$'BqCM,,CCK::tyy*%'	Bs   7/E4 4E:c              #   <  K   d}	 	 | j                   j                  j                         }|sn#| xj                  t	        |      z  c_        | Jd  |r(	 | j                   j                  j                         }|r(| j
                  r#t        j                  | j
                  d          y y #  Y 7xY w# |r0	 | j                   j                  j                         }n#  Y nxY w|r0| j
                  r#t        j                  | j
                  d          w w xY ww)Nr   ap)r=   r   getr<   r   r>   r   unlinkr   s     r   genzStreamTar.genW   s     	,jjll&&(3s8#	  J**,,**,C  yy

499T?+ 	 **,,**,C	  yy

499T?+ sY   DAB6 D$B/ <D?0D/B31D6D:$CDC#!D)0DDc                    |d   }|d   }|d   }t        j                  |j                        ry t        j                  |      }|j                  |_        |j                  |_        |j                  |_	        d|_
        d|_        | xj                  |j                  z  c_        t        t        |      d| j                  j                         5 }| j"                  j%                  ||       d d d        y # 1 sw Y   y xY w)NvprZ   st)r/   r   rb)statS_ISDIRst_moder?   TarInfor1   st_sizesizest_mtimemtimeuidgidr;   rK   r   argsiobufrL   addfile)r   fr/   srcfsiinffos          r   serzStreamTar.serm   s    wgg<<$oo4(;;;;LL	388%*dDIIOO4 	&HHS"%	& 	& 	&s   C66C?c                    g }| j                   D ]@  }d|v r|j                  |d   |d   f       !| j                  r n	 | j                  |       B |r}t        | j                  j                  |      \  | _	        }| j                  dj                  t        | j                        g|dd  z                | j                  | j                         | j                  j                          | j                  j!                  d        y #  t	        dd      j                  dd      }|j                  |d   |f       Y /xY w)Nerrr_      T
z
-- r   )rP   r   stoppedrt   r   rD   r
   rO   vfsr>   rN   r   reprrL   closer=   r    )r   errorsro   extxts        r   rM   zStreamTar._gen   s    	-Azqw%12||-	- $TYY]]F;NDIsHHTYYdii 1CG ;=>HHTYY

-At_,,T7;qwm,s   D4D>)r*   )	r!   r"   r#   r$   r   r]   rt   rM   __classcell__)rX   s   @r   r'   r'   $   s     : .&`,,&&r   r'   )
__future__r   r   rB   rb   r?   queuer   authsrvr   r   sutilr	   r
   utilr   r   r   objectr   r'   r%   r   r   <module>r      s=    7 	      % ' ' F  *r	 rr   