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()
|