
    h                     @   d dl mZmZmZ d dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZmZ d dlmZmZmZ d dlmZ d dlmZ d dlmZ eZ ej2                  d	      Z e       Z e       Zed
k(  rDd dlZej<                  dkD  rej>                  Z ejB                  Z"nejF                  Z ejH                  Z"ed
k(  sejK                  d      r G d dejL                        Z'n G d dejL                        Z' G d dejL                        Z( G d dejL                        Z)ejT                  jW                  d      Z,e,sedk(  r@ ejZ                   e
d      ej\                        Z/ e
d      xs  e
d      xs  e
d	      Z,nEed
k(  r8	 d dl0Z1d Z4 e4e1jj                  dd      Z,e,r"e,dej<                  dkD  rdndz  z  Z,n e
d	      Z,e,s e6d       ejZ                  e,      Z7edk(  r e8e7d       rd!Zed"v rd#Z9ejF                  Z:ejv                  Z<ejv                  Z=ejH                  Z>ej~                  Z@ej>                  ZAejF                  ZBejH                  ZC ej                  ej                  ej                  ej                   ej                  ej                        ej                  ej                  ejH                        ZJ ej                  ej                  ej                  ej                   ej                  ej                        ej                  ejH                        ZKedk(  rd$e:fd%e@fd&ej~                  fd'ejB                  fd(eCfd)e>fd*e:fd+e'fd,e'fd-e'fd.e'fd/eAfd0ej>                  fd1ejF                  fd2ejF                  fd3ejF                  fd4ejF                  fd5ej>                  fge)_L        ngd$e:fd'ejH                  fd%e@fd&ej~                  fd(eCfd)e>fd*e:fd+e'fd,e'fd-e'fd/eAfd0ej>                  fd1ejF                  fge)_L        ned6k(  r}d7Z9ej                  Z:ej                  Z<ej                  Z=ej                  Z>ej                  Z@ej                  ZAej                  ZBej                  ZC ej                  ej                  ej                  ej                   ej                  ej                        ej                  ej                        ZJ ej                  ej                  ej                  ej                   ej                  ej                        ej                        ZKed8k(  red$e:fd'ejv                  fd&ejv                  fd%e@fd(eCfd)e>fd9ej                  fd*e:fd/eAfd1ej                  fd0ej                  fd+e'fd,e'fd-e'fge)_L        ned:k(  rrd$e:fd'ejv                  fd%e@fd&ej                  fd(eCfd)e>fd*e:fd;ejv                  fd/eAfd1ej                  fd<ej                  fd0ej                  fd+e'fd,e'fd-e'fge)_L        nd$e:fd;ej                  fd=ejv                  fd%e@fd&ej                  fd(eCfd)e>fd*e:fd<ej                  fd/eAfd1ej                  fd0ej                  fd+e'fd,e'fd-e'fd'ej                  fge)_L        ned
k(  sejK                  d      rjed
k(  rd>nd?Z9ej                  Z:e"Z<e"Z=ej                  Z>ej                  Z@ej                  ZAej                  ZBej                  ZC ej                  ej                  ej                  ej                   ej                  ej                        ej                  ej                        ZJ ej                  ej                  ej                  ej                   ej                  ej                        ej                        ZKd$e:fd'ej                  fd%e@fd&ej                  fd(eCfd)e>fd*e:fd/eAfd+e'fd,e'fd-e'fd1ej                  fd0ej                  fd.e'fge)_L        n eRd@ez        edAk(  rejB                  Z<ejB                  Z= ej                  ej                  ej                  ej                   ej                  ej                        ej                  ej                        ZJ ej                  ej                  ej                  ej                   ej                  ej                        ej                        ZK G dB dCejL                        ZSnAed
k(  sejK                  d      r G dD dCejL                        ZSn G dE dCejL                        ZSed
k(  sejK                  d      r G dF dGejL                        ZTn G dH dGejL                        ZT G dI dJejL                        ZU ej                  eU      e7j                  _W         G dK dLejL                        ZXdWdMZYdWdNZZdO ZVdP Z[ G dQ dRe\      Z] G dS dTe^      Z_ G dU dVe^      Z`y# e2$ r d dl3Z1Y w xY w)X    )print_functionabsolute_importdivisionN)find_library)machinesystem)signalSIGINTSIG_DFL)S_IFDIR)	print_exc)partialfuseWindowsl    CYGWINc                       e Zd ZdefdefgZy
c_timespectv_sectv_nsecN)__name__
__module____qualname__
c_win_long_fields_     L/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/web/deps/fuse.pyr   r   .   s    z*Y
,CDr   r   c                   D    e Zd Zdej                  fdej                  fgZyr   )r   r   r   ctypesc_longr   r   r   r   r   r   1   s    v}}-	6==/IJr   c                       e Zd ZdefdefgZy)	c_utimbufactimemodtimeN)r   r   r   r   r   r   r   r   r#   r#   4   s    :&J(?@Hr   r#   c                       e Zd Zy)c_statN)r   r   r   r   r   r   r'   r'   7   s    r   r'   FUSE_LIBRARY_PATHDarwiniconvfuse4xosxfusec                 J   d\  }}	 t        j                  | |dt         j                  t         j                  z        }t	        t        j
                  ||      d         }|t        j                  |       |S # t        $ r Y $w xY w# |t        j                  |       w w xY w)N)NNr   )regOpenKeyKEY_READKEY_WOW64_32KEYstrQueryValueExWindowsErrorCloseKey)rootkeykeynamevalnamekeyvals        r   Reg32GetValuer;   G   s    !HC&kk'7As||cFYFY7YZ#**38;< ?LL%J    ?LL% #s$   AA9 9	BB BB B"zSOFTWARE\WinFsp
InstallDirzbin\winfsp-%s.dllx64x86zUnable to find libfusemacfuse_versionDarwin-MacFuse)r)   r@   FreeBSD-   st_devst_modest_nlinkst_inost_uidst_gidst_rdevst_atimespecst_mtimespecst_ctimespecst_birthtimespecst_size	st_blocks
st_blksizest_flagsst_gen	st_lspare	st_qspareLinux_   x86_64__pad0aarch64__pad1__pad2__st_ino      z%s is not supported.rA   c            
           e Zd Zdefdefdefdefdefdefdej                  fdej                  fd	ej                  fg	Zy
)	c_statvfsf_bavailf_bfreef_blocksf_favailf_ffreef_filesf_bsizef_flagf_frsizeN)r   r   r   c_fsblkcnt_tc_fsfilcnt_tr    c_ulongr   r   r   r   r`   r`   
  s]    &%&&%%'v~~&(	*r   r`   c                   R    e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefgZyr`   rg   ri   rc   rb   ra   rf   re   rd   f_fsidrh   	f_namemaxN)r   r   r   c_win_ulongrj   rk   r   r   r   r   r`   r`     sa    $%&%&%%&{#{#+&(r   c                       e Zd Zdej                  fdej                  fdefdefdefdefdefdefd	ej                  fd
ej                  fdej                  fgZyrn   )r   r   r   r    rl   rj   rk   r   r   r   r   r`   r`   $  su    '(&%&%%&v~~&v~~&&..)+r   c            
          e Zd Zdej                  fdej                  fdej                  fdej
                  dfdej
                  dfdej
                  dfdej
                  d	fd
ej                  fdej                  fg	Zy)fuse_file_infoflagsfh_old	writepage	direct_io   
keep_cacheflushpadding   fh
lock_ownerN)r   r   r   r    c_intc_uintc_uint64r   r   r   r   rt   rt   4  s}    fll#v||$&,,'&--+6==!,fmmQ'r*6??#6??+	-r   rt   c                   :   e Zd Zdej                  fdej
                  fdej                  fdej                  dfdej                  dfdej                  dfdej                  dfd	ej                  dfd
ej                  dfdej                  fdej                  fgZy)rt   ru   rv   rw   rx   ry   rz   r{   nonseekableflock_releaser|      r~   r   N)	r   r   r   r    r   rl   r   r   r   r   r   r   rt   rt   @  s    fll#v~~&&,,'&--+6==!,fmmQ'FMM1-fmmQ/r*6??#6??+-r   c                   V    e Zd Zdej                  fdefdefdefdej                  fgZy)fuse_contextr   uidgidpidprivate_dataN)	r   r   r   r    c_voidpc_uid_tc_gid_tc_pid_tr   r   r   r   r   r   N  s9    	 				(*Hr   r   c                      e Zd Zg d ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                   ej                  ej                        ej                        fdej                  fd ej                  ej
                  ej                  ee      fd ej                  ej
                  ej                  e      fd ej                  ej
                  ej                        fd ej                  ej
                  ej                        fd ej                  ej
                  ej                  ej                        fd	 ej                  ej
                  ej                  ej                        fd
 ej                  ej
                  ej                  ej                        fd ej                  ej
                  ej                  e      fd ej                  ej
                  ej                  ee      fd ej                  ej
                  ej                  e      fdej                  fd ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                   ej                  ej                        ej                  e ej                  e            fd ej                  ej
                  ej                   ej                  ej                        ej                  e ej                  e            fd ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                  ej
                   ej                  e            fdefdefd ej                  ej
                  ej                   ej                  ej                        ej                        fd ej                  ej
                  ej                  ej                        fd ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                  ej                   ej                  ej
                  ej                  ej                   ej                  e      e      e ej                  e            fd ej                  ej
                  ej                   ej                  e            fd ej                  ej
                  ej                  ej
                   ej                  e            fd ej                  ej                  ej                        fd ej                  ej                  ej                        fd  ej                  ej
                  ej                  ej
                        fd! ej                  ej
                  ej                  e ej                  e            fd" ej                  ej
                  ej                  e ej                  e            fd# ej                  ej
                  ej                   ej                  e       ej                  e            fd$ ej                  ej
                  ej                   ej                  e      ej
                  ej                        fd% ej                  ej
                  ej                   ej                  e            fd& ej                  ej
                  ej                  ej                   ej                  ej,                              fd'ej.                  d(fd)ej.                  d(fd*ej.                  d(fd+ej.                  d,fd- ej                  ej
                  ej                  ej.                  ej0                   ej                  e      ej.                  ej0                        fZy.)/fuse_operationsgetattrreadlinkgetdirmknodmkdirunlinkrmdirsymlinkrenamelinkchmodchowntruncateutimeopenreadwritestatfsr{   releasefsyncsetxattrgetxattr	listxattrremovexattropendirreaddir
releasedirfsyncdirinitdestroyaccesscreate	ftruncatefgetattrlockutimensbmapflag_nullpath_okry   flag_nopathflag_utime_omit_okflag_reservedr}   ioctlN)r   r   r   r    	CFUNCTYPEr   c_char_pPOINTERr'   c_bytec_size_tr   c_mode_tc_dev_tr   r   c_off_trt   r`   
setxattr_t
getxattr_tr#   c_ulonglongr   c_void_pr   r   r   r   r   r   Y  s 	   ~	$F$$LL&//>6>>&+AC 	D~ 
%V%%LL&//>6>>&--+HOO 		~ 
6>>"~ 
"&""LL&//8W> 	?~ 
"&""6<<(KL~ 
#6##FLL&//BC~ 
"&""6<<AB~" 
$F$$LL&//6??< 	=#~( 
#6##LL&//6??< 	=)~. 
!!!LL&//6??< 	=/~4 
"&""6<<(KL5~8 
"&""LL&//7G= 	>9~> 
%V%%LL&//74 	5?~D 
&..!E~F 
!!!LL&//>6>>.+IK 	LG~L 
!!!LL&//>6>>&--+HOOWnfnn^&DF 	GM~T 
"&""LL&//>6>>&--+HOOWnfnn^&DF 	GU~\ 
#6##LL&//>6>>)+DF 	G]~b 
"&""LL&//>6>>.+IK 	Lc~h 
$F$$LL&//>6>>.+IK 	Li~n 
"&""LL&//6<<FNN>*, 	-o~v 
Z w~x 
Z y~| 
&f&&LL&//>6>>&--+HOO 	}~D 
(((LL&//6??< 	=E~J 
$F$$LL&//>6>>.+IK 	LK~P 
$F$$LLOONNFfnnfoov&1 FNN>*, 	-Q~d 
'v''LL&//>6>>.+IK 	Le~j 
%V%%LL&//6<<FNN>*, 	-k~r 
!!!&..&..ABs~t 
$F$$V^^V^^DEu~x 
#6##LL&//6<<9 	:y~~ 
#6##LL&//8FNN>*, 	-~F 
&f&&LL&//7FNN>*, 	-G~N 
%V%%LL&//>6>>&+AFNN>*, 	-O~V 
!!!LL&//>6>>.+ILL&..* 	+W~^ 
$F$$LL&//>6>>)+DF 	G_~d 
!!!LL&//6??FNN6--.0 	1e~l 
V]]A.m~n 
q)o~p 
v}}a0q~r 
&--,s~v 
"&""LL&//6==&//FNN>*FMM6??L 	Mw~Hr   r   c                 v    |r| j                   dz  | j                  z   S | j                   | j                  dz  z   S )N ʚ;    eA)r   r   )tsuse_nss     r   time_of_timespecr     s5    yy7"RZZ//yy2::+++r   c                 B   |j                         D ]  \  }}|dv rit        | |dz   d       }||r#t        t        |      d      \  |_        |_        Bt        |      |_        t        ||j                  z
  dz        |_        st        | |      st        | ||        y )N)st_atimest_mtimest_ctimest_birthtimespecr   r   )itemsr   divmodintr   r   hasattrsetattr)stattrsr   r9   r:   timespecs         r   set_st_attrsr     s    KKM "SFFr3<6H4:3s8W4M1!1"%c(#&hoo(='D#E RBS!"r   c                      t         j                         } | j                  }|j                  |j                  |j
                  fS a)_libfusefuse_get_contextcontentsr   r   r   )ctxpctxs     r   r   r     s4     $$&D
--C77CGGSWW$$r   c                      t        j                  t        j                         j                  j
                        } t        j                  |        yr   N)r    r   r   r   r   r   	fuse_exit)fuse_ptrs    r   r   r     s3    x88:CCHHIHx r   c                        e Zd Z fdZ xZS )FuseOSErrorc                 T    t         t        |   |t        j                  |             y N)superr   __init__osstrerror)selferrno	__class__s     r   r   zFuseOSError.__init__   s    k4)%U1CDr   )r   r   r   r   __classcell__)r   s   @r   r   r     s    E Er   r   c                       e Zd ZdZdZd-dZed        Ze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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+d) Z,d* Z-d+ Z.y,).FUSEr   ))
foregroundz-f)debugz-d)	nothreadsz-sc           
         || _         || _        || _        d| _        t	        |dd      | _        dg}|j                  fd| j                  D               j                  d|j                  j                         |j                  d       |j                  dj                   | j                  di              |j                  |       |D cg c]  }|j                  |       }}t        j                   t#        |      z  | }t%               }	t$        j&                  D ]d  }
|
dd	 \  }}|}|d
v r|dd }t	        ||d      }|&t)        |d      r& |t+        | j,                  t	        | |                  }t/        |	||       f 	 t1        t2        t4              }t8        j;                  t#        |      |t        j<                  |	      t        j>                  |	      d      }	 t1        t2        |       | ` | j                  r| j                  |rtA        |      yc c}w # t6        $ r	 t4        }Y w xY w# t6        $ r Y Mw xY w)r   Nr   Fr   c              3   L   K   | ]  \  }}j                  |d       r|  yw)FN)pop).0argflagkwargss      r   	<genexpr>z FUSE.__init__.<locals>.<genexpr>  s*      /YS$zz#u-  /s   !$fsnamez-o,   )r   r   ry   argtypesr   )!
operationsraw_fiencoding_FUSE__critical_exceptionr   r   extendOPTIONS
setdefaultr   r   appendjoin_normalize_fuse_optionsencoder    r   lenr   r   r   r   _wrapperr   r	   r
   r   
ValueErrorr   fuse_main_realpointersizeofRuntimeError)r   r  
mountpointr  r	  r  argsr   argvfuse_opsentname	prototype
check_namer:   old_handlererrs        `           r   r   zFUSE.__init__  s$   
 % $(!j(E:x /$,, / 	/ 	(J$8$8$A$ABDCHH9T99CFCDEJ045

8$55#d)+d3"$"++ 	)C!"1gOD)J66'^
*j$7C{y*-wtT7J KLHdC(	)"	" 1K %%ItV^^H5MM(#
	6;' O$$+++s## O 6.  	"!K	"  		s*   H"H' *H< 'H98H9<	IIc               +      K   | j                         D ](  \  }}t        |t              r
|du s|  |d| * y w)NT=)r   
isinstancebool)kargsr9   values      r   r  zFUSE._normalize_fuse_optionsM  s@     ++- 	-JC%&D=I!$e,,	-s   +??c                    	 | j                   dk(  r | |i |xs dS 	  | |i |xs dS # t        $ r}|j                  dkD  rIt        j	                  d| j                   t        |      |j                  d       |j                   cY d}~S t        j                  d| j                   |j                  d       t        j                   cY d}~S d}~wt        $ r6 t        j                  d| j                   d       t        j                   cY S w xY w# t        $ rG}t        j                  d	| j                   d       t                t        j                   cY d}~S d}~ww xY w)
r   r   r   z2FUSE operation %s raised a %s, returning errno %s.T)exc_infoNzSFUSE operation %s raised an OSError with negative errno %s, returning errno.EINVAL.zBUncaught exception from FUSE operation %s, returning errno.EINVAL.z=Uncaught critical exception from FUSE operation %s, aborting.)r   OSErrorr   logr   typeerrorEINVAL	ExceptionBaseExceptioncriticalr   EFAULT)funcr  r  es       r   r  zFUSE._wrapperV  s?   "	!}}&T,V,11)005A5 -ww{		P MM47AGGd " L !"x		@ MM177T " C !&},  )II 8"mmd  < "LL=(	)  	!LLO  . KLL= 	!sb   D * 	DACDD =CD	D ?DD DD 	E#<EE#E#c                 >    |y |j                  | j                        S r   )decoder	  r   paths     r   _decode_optional_pathzFUSE._decode_optional_path~  s    <{{4==))r   c                 (    | j                  ||d       S r   )r   )r   r9  bufs      r   r   zFUSE.getattr  s    }}T3--r   c                    | j                  d|j                  | j                              j                  | j                        }t	        j
                  |d |dz
         }t	        j                  ||t        |             y)Nr   ry   r   )r  r7  r	  r  r    create_string_buffermemmover  )r   r9  r<  bufsizeretdatas         r   r   zFUSE.readlink  sc    ooj$++dmm*DE^^_c_l_lm**3|!+<=sD#d),r   c                 \    | j                  d|j                  | j                        ||      S )Nr   r  r7  r	  r   r9  modedevs       r   r   z
FUSE.mknod  s$    wDMM(BD#NNr   c                 Z    | j                  d|j                  | j                        |      S )Nr   rD  r   r9  rF  s      r   r   z
FUSE.mkdir  "    wDMM(BDIIr   c                 X    | j                  d|j                  | j                              S )Nr   rD  r8  s     r   r   zFUSE.unlink  s     xT]])CDDr   c                 X    | j                  d|j                  | j                              S )Nr   rD  r8  s     r   r   z
FUSE.rmdir  s     wDMM(BCCr   c                     | j                  d|j                  | j                        |j                  | j                              S )r   r   rD  r   sourcetargets      r   r   zFUSE.symlink  s8     y&--*F*0--*FH 	Hr   c                     | j                  d|j                  | j                        |j                  | j                              S )Nr   rD  r   oldnews      r   r   zFUSE.rename  s6    xDMM)B),DMM)BD 	Dr   c                     | j                  d|j                  | j                        |j                  | j                              S )r   r   rD  rN  s      r   r   z	FUSE.link  s8     vv}}T]]'C'-}}T]]'CE 	Er   c                 Z    | j                  d|j                  | j                        |      S )Nr   rD  rI  s      r   r   z
FUSE.chmod  rJ  r   c                     t        |dz         j                  dk(  rd}t        |dz         j                  dk(  rd}| j                  d|j	                  | j
                        ||      S )Nry   r   r   )r   r(  r   r  r7  r	  r   r9  r   r   s       r   r   z
FUSE.chown  s\    37!!Q&C37!!Q&CwDMM(BCMMr   c                 Z    | j                  d|j                  | j                        |      S Nr   rD  )r   r9  lengths      r   r   zFUSE.truncate  s"    z4;;t}}+EvNNr   c                    |j                   }| j                  r,| j                  d|j                  | j                        |      S | j                  d|j                  | j                        |j
                        |_        y)Nr   r   )r   r  r  r7  r	  ru   r~   )r   r9  fipfis       r   r   z	FUSE.open  s_    \\;;??64;;t}}+ErJJOOFDKK,F,.HH6BE r   c                    | j                   r|j                  }n|j                  j                  }| j                  d| j	                  |      |||      }|syt        |      }||k  sJ d||fz         t        j                  |||       |S )Nr   r   z.actual amount read %d greater than expected %d)r  r   r~   r  r:  r  r    r?  )	r   r9  r<  sizeoffsetr^  r~   rA  retsizes	            r   r   z	FUSE.read  s    ;;||"||"oofd&@&@&F&,b2 c($m+[_fhl^m+mmsC)r   c                     t        j                  ||      }| j                  r|j                  }n|j                  j                  }| j                  d| j                  |      |||      S )Nr   )r    	string_atr  r   r~   r  r:  )r   r9  r<  ra  rb  r^  rB  r~   s           r   r   z
FUSE.write  sX    T*;;BBw(B(B4(H$(.4 	4r   c                     |j                   }| j                  d|j                  | j                              }|j	                         D ]  \  }}t        ||      st        |||       ! y)Nr   r   )r   r  r7  r	  r   r   r   )r   r9  r<  stvr   r9   r:   s          r   r   zFUSE.statfs  s\    ll$++dmm*DE 	'HCsC S#&	' r   c                     | j                   r|j                  }n|j                  j                  }| j                  d| j	                  |      |      S )Nr{   r  r   r~   r  r:  r   r9  r^  r~   s       r   r{   z
FUSE.flush  s=    ;;BBw(B(B4(H"MMr   c                     | j                   r|j                  }n|j                  j                  }| j                  d| j	                  |      |      S )Nr   ri  rj  s       r   r   zFUSE.release  s=    ;;||"||"y$*D*DT*JBOOr   c                     | j                   r|j                  }n|j                  j                  }| j                  d| j	                  |      ||      S )Nr   ri  )r   r9  datasyncr^  r~   s        r   r   z
FUSE.fsync  sD    ;;BBw(B(B4(H((*, 	,r   c           	           | j                   d|j                  | j                        |j                  | j                        t        j                  ||      |g| S )Nr   )r  r7  r	  r    re  )r   r9  r  r(  ra  optionsr  s          r   r   zFUSE.setxattr  sS    tz4;;t}}+E#{{4==9%//t<gNHLN 	Nr   c                 8    | j                   d|j                  | j                        |j                  | j                        g| }t        |      }|s|S ||kD  rt        j
                   S t        j                  ||      }t        j                  |||       |S )Nr   )	r  r7  r	  r  r   ERANGEr    r>  r?  )	r   r9  r  r(  ra  r  rA  rc  r<  s	            r   r   zFUSE.getxattr  s    dooj$++dmm*D*.++dmm*DMGKM c(NT>LL= ))#w7uc7+r   c                    | j                  d|j                  | j                              xs d}dj                  |      j	                  | j                        }t        |      dkD  r|dj	                  | j                        z  }t        |      }|s|S ||kD  rt        j                   S t        j                  ||      }t        j                  |||       |S )Nr     r   )r  r7  r	  r  r  r  r   rq  r    r>  r?  )r   r9  namebufra  r   rA  rc  r<  s           r   r   zFUSE.listxattr  s    T[[-GHNBkk% ''6s8a<6==//Cc(NT>LL= ))#w7wW-r   c                     | j                  d|j                  | j                        |j                  | j                              S )Nr   rD  r   r9  r  s      r   r   zFUSE.removexattr+  s6    }dkk$--.H.2kk$--.HJ 	Jr   c                 x    | j                  d|j                  | j                              |j                  _        y)Nr   r   )r  r7  r	  r   r~   r   r9  r^  s      r   r   zFUSE.opendir/  s.    //)*.++dmm*DF r   c                 T   | j                  d| j                  |      |j                  j                        D ]o  }t	        |t
              r|d d}}}n-|\  }}	}|	r#t               }t        ||	| j                         nd } |||j                  | j                        ||      dk7  so y y)Nr   r   r   )r  r:  r   r~   r%  
basestringr'   r   r   r  r	  )
r   r9  r<  fillerrb  r^  itemr  r   r   s
             r   r   zFUSE.readdir6  s    OOIt/I/I$/O/2||@ 	D $
+#'q&b&*#eVB U4;;?Bc4;;t}}5r6BaG!	  r   c                 n    | j                  d| j                  |      |j                  j                        S )Nr   r  r:  r   r~   ry  s      r   r   zFUSE.releasedirJ  s-    |T-G-G-M-0\\__> 	>r   c                 p    | j                  d| j                  |      ||j                  j                        S )Nr   r  )r   r9  rm  r^  s       r   r   zFUSE.fsyncdirO  s1    z4+E+Ed+K+3S\\__F 	Fr   c                 &    | j                  dd      S )Nr   /r  )r   conns     r   r   z	FUSE.initT  s    vs++r   c                 &    | j                  dd      S )Nr   r  r  )r   r   s     r   r   zFUSE.destroyW  s    y#..r   c                 Z    | j                  d|j                  | j                        |      S )Nr   rD  r   r9  amodes      r   r   zFUSE.accessZ  s"    xT]])CUKKr   c                     |j                   }|j                  | j                        }| j                  r| j	                  d|||      S | j	                  d||      |_        y)Nr   r   )r   r7  r	  r  r  r~   )r   r9  rF  r^  r_  s        r   r   zFUSE.create]  sP    \\{{4==);;??8T4<<OOHdD9BEr   c                     | j                   r|j                  }n|j                  j                  }| j                  d| j	                  |      ||      S r[  ri  )r   r9  r\  r^  r~   s        r   r   zFUSE.ftruncateg  sD    ;;BBz4+E+Ed+K+127 	7r   c                 T   t        j                  |dt        j                  t                     |j                  }|s|}n/| j
                  r|j                  }n|j                  j                  }| j                  d| j                  |      |      }t        ||| j                         y)Nr   r   r{  )r    memsetr  r'   r   r  r~   r  r:  r   r   )r   r9  r<  r^  r   r~   r   s          r   r   zFUSE.fgetattrp  sy    c1fmmF34\\B[[BB	4+E+Ed+KRPRt{{3r   c                     | j                   r|j                  }n|j                  j                  }| j                  d| j	                  |      |||      S )Nr   ri  )r   r9  r^  cmdr   r~   s         r   r   z	FUSE.lock  sF    ;;BBvt'A'A$'GS'+- 	-r   c                    |r[t        |j                  j                  | j                        }t        |j                  j                  | j                        }||f}nd }| j                  d|j                  | j                        |      S )Nr{  r   )r   r   r$   r   r%   r  r7  r	  )r   r9  r<  atimemtimetimess         r   r   zFUSE.utimens  sg    $S\\%8%8ME$S\\%9%9$++NEENEEy$++dmm*DeLLr   c                 \    | j                  d|j                  | j                        ||      S )Nr   rD  )r   r9  	blocksizeidxs       r   r   z	FUSE.bmap  s)    vt{{4=='A9'*, 	,r   c           	          | j                   r|j                  }n|j                  j                  }| j                  d|j	                  | j
                        |||||      S )Nr   )r  r   r~   r  r7  r	  )r   r9  r  r   r^  ru   rB  r~   s           r   r   z
FUSE.ioctl  sL    ;;||"||"wDMM(Bb%' 	'r   N)Fzutf-8)/r   r   r   __doc__r  r   staticmethodr  r  r:  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s
   G>$@ - - %! %!N*.OJEDHDEJNO$	4NP,N
"&J(>
F
,/L7-M,'r   r   c                       e Zd ZdZd Zd ZdZd Zd Zd%dZ	d Z
d	 Zd
 Zd Zd%dZd&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 d&dZ!d Z"d  Z#d%d!Z$d" Z%d%d#Z&d$ Z'y)'
Operationsr   c                 j    t        | |      st        t        j                         t	        | |      | S r   )r   r   r   r3  r   )r   opr  s      r   __call__zOperations.__call__  s/    tR ell++ wtR $''r   c                      yNr   r   r  s      r   r   zOperations.access      r   Nc                 4    t        t        j                        r   r   r   EROFSrI  s      r   r   zOperations.chmod      %++&&r   c                 4    t        t        j                        r   r  rY  s       r   r   zOperations.chown  r  r   c                 4    t        t        j                        r   r  )r   r9  rF  r_  s       r   r   zOperations.create       %++&&r   c                      yr   r   r8  s     r   r   zOperations.destroy       	r   c                      yr  r   r   r9  r~   s      r   r{   zOperations.flush  r  r   c                      yr  r   r   r9  rm  r~   s       r   r   zOperations.fsync  r  r   c                      yr  r   r  s       r   r   zOperations.fsyncdir  r  r   c                 f    |dk7  rt        t        j                        t        t        dz  d      S )r   r  i  r  )rD   rE   )r   r   ENOENTdictr   r  s      r   r   zOperations.getattr  s+     3;ell++Wu_::r   c                      t        t              r   r   ENOTSUP)r   r9  r  positions       r   r   zOperations.getxattr      '""r   c                      yr   r   r8  s     r   r   zOperations.init  r  r   c                 4    t        t        j                        r   )r   r   ENOTTY)r   r9  r  r   r^  ru   rB  s          r   r   zOperations.ioctl      %,,''r   c                 4    t        t        j                        r   r  r   rP  rO  s      r   r   zOperations.link  r  r   c                     g S r   r   r8  s     r   r   zOperations.listxattr  s    	r   c                 4    t        t        j                        r   r  rI  s      r   r   zOperations.mkdir  r  r   c                 4    t        t        j                        r   r  rE  s       r   r   zOperations.mknod  r  r   c                      yr   r   r   )r   r9  ru   s      r   r   zOperations.open       r   c                      yr  r   r8  s     r   r   zOperations.opendir  r  r   c                 4    t        t        j                        r   )r   r   EIO)r   r9  ra  rb  r~   s        r   r   zOperations.read  s     %))$$r   c                 
    ddgS )r   .z..r   r  s      r   r   zOperations.readdir  s     T{r   c                 4    t        t        j                        r   )r   r   r  r8  s     r   r   zOperations.readlink  r  r   c                      yr  r   r  s      r   r   zOperations.release  r  r   c                      yr  r   r  s      r   r   zOperations.releasedir  r  r   c                      t        t              r   r  rw  s      r   r   zOperations.removexattr  r  r   c                 4    t        t        j                        r   r  rR  s      r   r   zOperations.rename  r  r   c                 4    t        t        j                        r   r  r8  s     r   r   zOperations.rmdir
  r  r   c                      t        t              r   r  )r   r9  r  r(  ro  r  s         r   r   zOperations.setxattr  r  r   c                     i S r   r   r8  s     r   r   zOperations.statfs  s	     	r   c                 4    t        t        j                        r   r  r  s      r   r   zOperations.symlink  r  r   c                 4    t        t        j                        r   r  )r   r9  r\  r~   s       r   r   zOperations.truncate  r  r   c                 4    t        t        j                        r   r  r8  s     r   r   zOperations.unlink  r  r   c                      yr  r   )r   r9  r  s      r   r   zOperations.utimens   r  r   c                 4    t        t        j                        r   r  )r   r9  rB  rb  r~   s        r   r   zOperations.write%  r  r   r   )r   )(r   r   r   r  r  r   r   r   r   r   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r    s    (
 D'''

;#
('
 D''

%

(#''#
'
''
'r   r  )F)a
__future__r   r   r   r    r   loggingr   warningsctypes.utilr   platformr   r   r	   r
   r   statr   	tracebackr   	functoolsr   r2   r|  	getLoggerr,  _system_machinesysmaxsizec_int64r   r   rq   c_int32c_uint32
startswith	Structurer   r#   r'   environget_libfuse_pathCDLLRTLD_GLOBAL	_libiconv_winregr.   ImportErrorwinregr;   HKEY_LOCAL_MACHINEEnvironmentErrorr   r   r  r   rl   rj   rk   r   c_uint16r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
c_longlongr!   c_ushortNotImplementedErrorr`   rt   r   r   restyper   r   r   r   r+  r   objectr   r  r   r   r   <module>r     s 
    A @    	  $ $ * *   
g
(9
i
{{Z^^
oo^^
oo
i7--h7EV%% EKV%% KA   A	V 	 

23(FKKW 5v7I7IJ	%h/ .<	3J .%f- 		I		!!
	 &c&<&<>PR_`1ckkJ>VU\abbM$V,
3
44v{{=)H
h78->?G 55GnnG>>L>>LooGHnnGnnGooG!!!foovv}}%vJ "!!foovv}}%*J (w!)v'ww Z(Z(Z(, &..)6>>*(v~~&&..)&..)%+* wv'!)ww Z(Z(Z( &..)6>>*, G  G%%L%%LmmG}}HGllGmmG!!!foovv}}%vFJ "!!foovv}}%v8J 8wv~~&(!wwv||$  6==)&--(Z(Z(Z(* 
Y	wv~~&!'ww v~~& 6<<(v||$&--(Z(Z(Z(*& wv'(!'ww v' 6==)&++,Z(Z(Z(v))*!," 	W//9	)csGmmGLLmmG}}HGllGmmG!!!&,,v}}%vFJ!!!&,,v}}%v8J 
7	6%%&	H	V__%	7	7	G	G	$	$	$	v||$	f''(	Z(*FO  4w>
?? i??L??L!!!foovv}}%vFJ "!!foovv}}%v8J
*F$$ 
* 	W//9(F$$ (+F$$ + i7--h7
-)) 
--)) -*6## * %3FNN<$@   !f&& D," %!E' E
Y'6 Y'vG' G'u  	! 	!s   h 	hh