Welcome to mirror list, hosted at ThFree Co, Russian Federation.

directory.py « node « fuse « bareos - github.com/bareos/python-bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ffa68ee4b5e89d5307da7388c7439345504f9551 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""
"""

from   bareos.fuse.node.base import Base
import errno
import logging
from   pprint import pformat
import stat

class Directory(Base):
    """
    Directory node.
    """
    def __init__(self, root, name):
        super(Directory, self).__init__(root, name)
        self.defaultdirs = [ '.', '..' ]
        self.stat.st_mode = stat.S_IFDIR | 0755
        self.stat.st_nlink = len(self.defaultdirs)
        # arbitrary default value
        self.stat.st_size = 4096

    def readdir(self, path, offset):
        self.logger.debug("%s(\"%s\")" % (str(self.get_name()), str(path)))
        # copy default dirs
        if path.len() == 0:
            self.update()
            result = list(self.defaultdirs) + list(self.subnodes.keys())
        else:
            if path.get(0) in self.subnodes:
                topdir = path.shift()
                result = self.subnodes[topdir].readdir(path, offset)
        return result

    def get_stat(self):
        self.stat.st_nlink = len(self.defaultdirs) + len(self.subnodes)
        return super(Directory, self).get_stat()