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

github.com/bareos/python-bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Steffens <joerg.steffens@bareos.com>2015-10-05 11:01:05 +0300
committerJoerg Steffens <joerg.steffens@bareos.com>2015-10-05 11:01:05 +0300
commitaf845931530a32f52e408b3181c6d86f2ea27317 (patch)
treeb481fe58e15354b3146d41ce4a07955b7e37a02d
parent8b61728254745f224634a02e0e320d536d0d38c5 (diff)
work with utf-8 filenames
-rw-r--r--bareos/fuse/node/base.py13
-rw-r--r--bareos/fuse/node/bvfscommon.py6
-rw-r--r--bareos/fuse/node/directory.py5
3 files changed, 16 insertions, 8 deletions
diff --git a/bareos/fuse/node/base.py b/bareos/fuse/node/base.py
index f859b0b..3cd8a89 100644
--- a/bareos/fuse/node/base.py
+++ b/bareos/fuse/node/base.py
@@ -46,10 +46,17 @@ class Base(object):
# =========
def get_name(self):
- return self.name
+ result = self.name
+ if isinstance(self.name, unicode):
+ result = name.encode('utf-8', 'replace')
+ return result
def set_name(self, name):
- self.name = name
+ if isinstance(name, unicode):
+ self.name = name.encode('utf-8', 'replace')
+ else:
+ # should be str or NoneType
+ self.name = name
def set_static(self, value=True):
self.static = value
@@ -196,6 +203,8 @@ class Base(object):
if path.len() == 0:
try:
result = self.xattr[key]
+ if isinstance(self.xattr[key], unicode):
+ result = self.xattr[key].encode('utf-8','replace')
except KeyError:
pass
else:
diff --git a/bareos/fuse/node/bvfscommon.py b/bareos/fuse/node/bvfscommon.py
index a91cb23..adba721 100644
--- a/bareos/fuse/node/bvfscommon.py
+++ b/bareos/fuse/node/bvfscommon.py
@@ -16,11 +16,11 @@ class BvfsCommon(Base):
self.static = True
self.restorepath = os.path.normpath("/%s/jobid=%s/" % (self.root.restorepath, self.jobid))
if filename:
- self.restorepathfull = os.path.normpath("%s%s%s" % (self.restorepath, path, filename))
+ self.restorepathfull = os.path.normpath(u"%s%s%s" % (self.restorepath, path, filename))
else:
- self.restorepathfull = os.path.normpath("%s%s" % (self.restorepath, path))
+ self.restorepathfull = os.path.normpath(u"%s%s" % (self.restorepath, path))
self.xattr = {
- 'user.bareos.restorepath': str(self.restorepathfull),
+ 'user.bareos.restorepath': self.restorepathfull,
'user.bareos.restored': 'no',
}
if self.root.restoreclient:
diff --git a/bareos/fuse/node/directory.py b/bareos/fuse/node/directory.py
index 3559d0c..ffa68ee 100644
--- a/bareos/fuse/node/directory.py
+++ b/bareos/fuse/node/directory.py
@@ -13,7 +13,7 @@ class Directory(Base):
"""
def __init__(self, root, name):
super(Directory, self).__init__(root, name)
- self.defaultdirs = [ ".", ".." ]
+ self.defaultdirs = [ '.', '..' ]
self.stat.st_mode = stat.S_IFDIR | 0755
self.stat.st_nlink = len(self.defaultdirs)
# arbitrary default value
@@ -24,8 +24,7 @@ class Directory(Base):
# copy default dirs
if path.len() == 0:
self.update()
- # TODO: use encode instead str
- result = list(self.defaultdirs) + [ str(i) for i in self.subnodes.keys() ]
+ result = list(self.defaultdirs) + list(self.subnodes.keys())
else:
if path.get(0) in self.subnodes:
topdir = path.shift()