File: //lib64/python3.9/site-packages/borg/__pycache__/fuse.cpython-39.opt-1.pyc
a
HZ�h_� � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl m
Z
d dlmZ ddl
mZmZ er�d dlZdd� ZndZdd� Zdd lmZ e� Zdd
lmZ ddlmZ ddlmZmZ dd
lmZ ddlmZmZm Z m!Z!m"Z"m#Z# ddlm$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ dd� Z0dZ1G dd� d�Z2G dd� d�Z3G dd� dej4e3�Z5dS )� N)�defaultdict)�SIGINT� )�llfuse�has_pyfuse3c s t �� �� fdd��}|S )Nc � s � | i |��S �N� )�args�kwargs��fnr �//usr/lib64/python3.9/site-packages/borg/fuse.py�wrapper s zasync_wrapper.<locals>.wrapper)� functools�wraps)r r r r r
�
async_wrapper s r c C s | S r r r r r r
r s )�
create_logger)�blake2b_128)�Archiver)�Archive�get_item_uid_gid)�FuseVersionsIndex)� daemonize�daemonizing�hardlinkable�signal_handler�format_file_size�Error)�msgpack)�Item)�LRUCache)�uid2user� gid2group)� is_darwin)�RemoteRepositoryc C s: t r*zt�tj� W n Y dS 0 d S ntjdd�S d S )Nr )�workers)r �trio�runr �mainr r r r
� fuse_main/ s r) � c @ s8 e Zd ZdZdZe�d�Zdd� Zdd� Z dd
d�Z
dS )
� ItemCachez�
This is the "meat" of the file system's metadata storage.
This class generates inode numbers that efficiently index items in archives,
and retrieves items from these inode numbers.
i z=cIIc C sJ || _ t� | _d| _d| _tjdd�| _tddd� d�| _ d| _
d| _d S ) Nr i@B zborg-tmp)�prefix�
c S s d S r r ��_r r r
�<lambda>s � z$ItemCache.__init__.<locals>.<lambda>�ZcapacityZdispose)�decrypted_repository� bytearray�meta�write_offset�offset�tempfileZ
TemporaryFile�fdr �chunks�indirect_items�direct_items)�selfr3 r r r
�__init__U s zItemCache.__init__c
C s( || j }|dk rtd��| j| td�kr�| j�| j|�\}}}|| }t| j||d � �}| j�|�}|s�t | j
�|g��\} }|| j|<