
    4_m`W                     z    d dl mZmZmZ d dlmZ d dlmZmZ ddl	m
Z
 ed             Zd Z G d d	e          Zd
S )    )divisionprint_functionunicode_literals)contextmanager)c_char_pcreate_string_buffer   )ffic               #      K   t          j                    } 	 | V  t          j        |            d S # t          j        |            w xY wN)r
   	entry_new
entry_free)entry_ps    0lib/python3.11/site-packages/libarchive/entry.pynew_archive_entryr   	   sK      mooG wws	   1 Ac                 h    |r"t          |           t          |          dz  z   S t          |           S )zC return float of seconds.nanos when nanos set, or seconds when not g    eA)floatint)secondsnanoss     r   format_timer      s2     <W~~e| ;;;w<<    c                      e Zd ZdZd Zd Zed             Zed             Zed             Z	e
j        fdZed             Zed	             Zed
             Zed             Zed             Zed             Zd Z ee          Z ee          Zed             Zed             Zed             Zed             Zed             Zd Zed             Zd Zed             Zd Zed             Z d Z!d Z"d Z# ee"e#          Z$ ee"e#          Z% ee"e#          Z&ed             Z'ed             Z(ed             Z)ed              Z*ed!             Z+d"S )#ArchiveEntry
_archive_p_entry_pc                 "    || _         || _        d S r   r   )self	archive_pr   s      r   __init__zArchiveEntry.__init__   s    #r   c                     | j         S r   )pathnamer   s    r   __str__zArchiveEntry.__str__!   s
    }r   c                 4    t          j        | j                  S r   )r
   entry_filetyper   r$   s    r   filetypezArchiveEntry.filetype$   s    !$-000r   c                 4    t          j        | j                  S r   )r
   	entry_uidr   r$   s    r   uidzArchiveEntry.uid(       }T]+++r   c                 4    t          j        | j                  S r   )r
   	entry_gidr   r$   s    r   gidzArchiveEntry.gid,   r,   r   c              #      K   | j         }t          |          }t          j        }	  ||||          }|dk    rd S |j        d|         V  ')Nr	   r   )r   r   r
   	read_dataraw)r   
block_sizer    bufreadrs         r   
get_blockszArchiveEntry.get_blocks0   sb      O	":..}	YZ00AAvv'!A#,		r   c                     | j         dz  dk    S )N   i `  r(   r$   s    r   isblkzArchiveEntry.isblk:       }x'833r   c                     | j         dz  dk    S )Nr9   i    r:   r$   s    r   ischrzArchiveEntry.ischr>   r<   r   c                     | j         dz  dk    S )Nr9   i @  r:   r$   s    r   isdirzArchiveEntry.isdirB   r<   r   c                     | j         dz  dk    S )Nr9   i   r:   r$   s    r   isfifozArchiveEntry.isfifoF   r<   r   c                     t          t          j        | j                  pt          j        | j                            S r   )boolr
   entry_hardlink_wr   entry_hardlinkr$   s    r   islnkzArchiveEntry.islnkJ   s8    C(77 6&t}557 7 	7r   c                     | j         dz  dk    S )Nr9   i   r:   r$   s    r   issymzArchiveEntry.issymO   r<   r   c                     t          j        | j                  pJt          j        | j                  p1t          j        | j                  pt          j        | j                  S r   )r
   entry_symlink_wr   rE   entry_symlinkrF   r$   s    r   	_linkpathzArchiveEntry._linkpathS   sX    #DM22 2$T]332!$-002 "4=11	3r   c                     | j         dz  dk    S )Nr9   i   r:   r$   s    r   isregzArchiveEntry.isreg]   r<   r   c                     | j         S r   )rO   r$   s    r   isfilezArchiveEntry.isfilea   s
    zr   c                     | j         dz  dk    S )Nr9   i   r:   r$   s    r   issockzArchiveEntry.issocke   r<   r   c                 :    | j         p| j        p| j        p| j        S r   )r>   r;   rB   rS   r$   s    r   isdevzArchiveEntry.isdevi   s    zETZE4;E$+Er   c                     t          j        | j                  }t          j        | j                  }t	          ||          S r   )r
   entry_atimer   entry_atime_nsecr   r   sec_valnsec_vals      r   atimezArchiveEntry.atimem   5    /$-00'667H---r   c                 8    t          j        | j        ||          S r   )r
   entry_set_atimer   r   timestamp_sectimestamp_nsecs      r   	set_atimezArchiveEntry.set_atimes   #    "4=#0.B B 	Br   c                     t          j        | j                  }t          j        | j                  }t	          ||          S r   )r
   entry_mtimer   entry_mtime_nsecr   rY   s      r   mtimezArchiveEntry.mtimew   r]   r   c                 8    t          j        | j        ||          S r   )r
   entry_set_mtimer   r`   s      r   	set_mtimezArchiveEntry.set_mtime}   rd   r   c                     t          j        | j                  }t          j        | j                  }t	          ||          S r   )r
   entry_ctimer   entry_ctime_nsecr   rY   s      r   ctimezArchiveEntry.ctime   r]   r   c                 8    t          j        | j        ||          S r   )r
   entry_set_ctimer   r`   s      r   	set_ctimezArchiveEntry.set_ctime   rd   r   c                     t          j        | j                  }t          j        | j                  }t	          ||          S r   )r
   entry_birthtimer   entry_birthtime_nsecr   rY   s      r   	birthtimezArchiveEntry.birthtime   s6    %dm44+DM::7H---r   c                 8    t          j        | j        ||          S r   )r
   entry_set_birthtimer   r`   s      r   set_birthtimezArchiveEntry.set_birthtime   s#    &t}'4nF F 	Fr   c                 f    t          j        | j                  pt          j        | j                  S r   )r
   entry_pathname_wr   entry_pathnamer$   s    r   _getpathnamezArchiveEntry._getpathname   s,    $T]33 2"4=11	3r   c                     t          |t                    s|                    d          }t          j        | j        t          |                     d S )Nutf8)
isinstancebytesencoder
   entry_update_pathname_utf8r   r   )r   values     r   _setpathnamezArchiveEntry._setpathname   sF    %'' 	)LL((E&t}huooFFFFFr   c                 j    t          j        | j                  rt          j        | j                  S d S r   )r
   entry_size_is_setr   
entry_sizer$   s    r   sizezArchiveEntry.size   s3     // 	1>$-000	1 	1r   c                 4    t          j        | j                  S r   )r
   
entry_moder   r$   s    r   modezArchiveEntry.mode   s    ~dm,,,r   c                 X    t          j        | j                                                  S r   )r
   entry_strmoder   stripr$   s    r   strmodezArchiveEntry.strmode   s#      //55777r   c                 4    t          j        | j                  S r   )r
   entry_rdevmajorr   r$   s    r   	rdevmajorzArchiveEntry.rdevmajor       "4=111r   c                 4    t          j        | j                  S r   )r
   entry_rdevminorr   r$   s    r   	rdevminorzArchiveEntry.rdevminor   r   r   N),__name__
__module____qualname__	__slots__r!   r%   propertyr(   r+   r/   r
   	page_sizer7   r;   r>   r@   rB   rG   rI   rM   linkpathlinknamerO   rQ   rS   rU   r\   rc   rh   rk   ro   rr   rv   ry   r}   r   r#   pathnamer   r   r   r   r    r   r   r   r      sp       *I        1 1 X1 , , X, , , X, %(M     4 4 X4 4 4 X4 4 4 X4 4 4 X4 7 7 X7 4 4 X43 3 3 x	""Hx	""H4 4 X4   X 4 4 X4 F F XF . . X.
B B B . . X.
B B B . . X.
B B B . . X.
F F F3 3 3G G G
 xl33H8L,//D8L,//D1 1 X1 - - X- 8 8 X8
 2 2 X2 2 2 X2 2 2r   r   N)
__future__r   r   r   
contextlibr   ctypesr   r    r
   r   r   objectr   r   r   r   <module>r      s    A A A A A A A A A A % % % % % % 1 1 1 1 1 1 1 1              _2 _2 _2 _2 _26 _2 _2 _2 _2 _2r   