
    h                         d dl mZmZ d dlZd dlZd dlZd dlZddlmZm	Z	 ddl
mZmZ ddlmZ ddlmZmZmZ  G d d	e      Zy)
    )print_functionunicode_literalsN   )ANYWINMACOS)AXSVFS)bos)chkcmdmin_exundotc                   D    e Zd Zd ZddZd Zd Zd Zd Zd Z	d Z
d	 Zy
)Fstabc                     || _         d| _        d| _        d | _        d | _        d| _        i | _        d| _        |j                  | _	        y )NFag        )
log_funcwarnedtrustedtaboldtabsrctabcacheagemtab_agemaxage)selflogargss      E/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/fsutil.py__init__zFstab.__init__   sE    
mm    c                 *    | j                  d||       y )Nfstab)r   )r   msgcs      r   r   z	Fstab.log   s    gsA&r!   c                    t        j                          }|| j                  z
  | j                  kD  st        | j                        dkD  r4|| _        | j
                  xs | j                  | _        d | _        i | _        d}d}t        rd}	 | j                  |      }t        |      }	 | j                  |   S #  | j                  |||t               fz  d       |cY S xY w#  Y nxY w	 t        r| j                  |      n| j                  |      }n'#  | j                  |||t               fz  d       Y nxY w|j                         }|| j                  |<   | j                  d|d|       |S )Ni(#  ext4z4failed to determine filesystem at %r; assuming %s
%svfat   zfound z at )timer   r   lenr   r   r   r   _winpathr   r   r   get_w32get_unixlower)r   pathnowfsr$   s        r   getz	Fstab.get   s@   iik>DKK'3tzz?T+ADH((1dkkDKDHDJEB}}T*
 T{	::d##b&(33Q7	
		4'-d#4==3FB	4HHSD"fh//3XXZ

4R./	s$   
B6 'C 6$CC#'(D "D4c                    |j                  dd      }|j                  dd      d   j                  d      j                  dd      d   }	 dj                  |t	        j
                  |      j                        S #  |cY S xY w)N/\:r   r   z{}*{})replacesplitstripformatr
   statst_dev)r   r0   vids      r   r,   zFstab._winpathA   st    ||C&jja #))$/55dA>qA	>>#sxx~'<'<==	Js   .A: :B c                 `    t        | j                  dddt               i       | _        d| _        y )Nidkr5   F)r	   r   r   r   r   )r   s    r   build_fallbackzFstab.build_fallbackJ   s%    t}}eS#subAr!   c                     | j                  d       d}t        rd}t        j                  |      }t	        dg      \  }}g }g }|j                  d      D ]_  }|j                  |      }|s|j                         \  }	}
|j                  t        |	      t        |
      f       |j                  |       a dj                  t        |            }|| j                  k(  r| j                  | _        y | j                  d       |j                  d        |d	   \  }}t!        | j"                  |||t%               i       }|d
d  D ])  \  }}|j'                  d      }|j)                  |||       + || _        || _        y )Nzinspecting mtab for changesz^.*? on (.*) type ([^ ]+) \(.*z^.*? on (.*) \(([^ ]+), .*mount
z7mtab has changed; reevaluating support for sparse filesc                 (    t        | d         | d   fS Nr   )r+   )xs    r   <lambda>z!Fstab.build_tab.<locals>.<lambda>j   s    QqTAaD 1 r!   )keyr   r   r5   )r   r   recompiler   r9   matchgroupsappendstrjoinsortedr   r   r   sortr	   r   r   lstripadd)r   sptnptnso_tab1atablnmzs1zs2r   path1fs1r   r0   r2   zss                     r   	build_tabzFstab.build_tabN   sY   ./00Djjy!A((4. 	B		"AxxzHCKKS3s8,-KKO	 6$<(T[[ {{DHJK		1	2!W
s$--eUCE2>QR 	 HD"S!BGGBB	  r!   c                    i | _         t        r| j                  |      }t        |      }t	        j
                  d      }| j                  j                  |      \  }}| j                  sd|v rYt        j                  j                  |j                  |j                  d      d         }| j                  j                  d||       |r| j                  j                  |||       y ||_        y |g}|rg|j!                         }|j#                  ||j                        |_        |j%                  t'        |j(                  j+                                      |rfy y )Nz^[^\\/]*r5   r   r@   )r   r   r,   r   rJ   rK   r   _findr   osr0   rP   vpathr9   rT   realpathpopsubextendlistnodesvalues)r   r0   nvalrV   vnremra   visits           r   relabelzFstab.relabelt   s   
==&DT{jj%((..&C||czWW\\"((CIIcN1,=>UB+T4.  #B''$4BKLLbhhoo/01 r!   c                    | j                   s	 | j                          d| _        | j                   j                  |      d   }| j                  s||j                  k(  r|j                  j                  d      d   S y#  | j                  s0d| _        | j	                  dj                  t                     d       | j                          Y xY w)NTzfailed to build tab:
{}r)   r   r5   r@   )r   rb   r   r   r   r;   r   rA   rd   rf   rg   r9   r   r0   rets      r   r.   zFstab.get_unix   s    xx& # hhnnT"1%<<4399,<<%%c*1--&{{"&DKHH7>>vxH!L##%s   A= =ACc                     | j                   s| j                          | j                   j                  |      d   }|j                  S rF   )r   rA   rd   rg   rt   s      r   r-   zFstab.get_w32   s6    xx!hhnnT"1%||r!   N)r   )__name__
__module____qualname__r    r   r3   r,   rA   rb   rr   r.   r-    r!   r   r   r      s1    
$'!F$L24$r!   r   )
__future__r   r   argparsere   rJ   r*   r    r   r   authsrvr   r	   r
   utilr   r   r   objectr   rz   r!   r   <module>r      s1    7  	 	  #   ' 'WF Wr!   