projects
/
invirt/packages/python-routefs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Replace None with a new NoEntry class.
[invirt/packages/python-routefs.git]
/
routefs
/
__init__.py
diff --git
a/routefs/__init__.py
b/routefs/__init__.py
index
5af78a5
..
61816b7
100644
(file)
--- a/
routefs/__init__.py
+++ b/
routefs/__init__.py
@@
-83,9
+83,13
@@
class RouteFS(fuse.Fuse):
"""
match = self.map.match(path)
if match is None:
"""
match = self.map.match(path)
if match is None:
- return
+ return NoEntry()
controller = match.pop('controller')
result = getattr(self, controller)(**match)
controller = match.pop('controller')
result = getattr(self, controller)(**match)
+ if type(result) is str:
+ result = File(result)
+ if type(result) is list:
+ result = Directory(result)
return result
def readdir(self, path, offset):
return result
def readdir(self, path, offset):
@@
-108,19
+112,19
@@
class RouteFS(fuse.Fuse):
predetermined based on which it is.
"""
obj = self._get_file(path)
predetermined based on which it is.
"""
obj = self._get_file(path)
- if obj is None:
+ if type(obj) is NoEntry:
return -errno.ENOENT
st = RouteStat()
if type(obj) is Directory:
return -errno.ENOENT
st = RouteStat()
if type(obj) is Directory:
- st.st_mode = stat.S_IFDIR | 0755
+ st.st_mode = stat.S_IFDIR | obj.mode
st.st_nlink = 2
elif type(obj) is Symlink:
st.st_nlink = 2
elif type(obj) is Symlink:
- st.st_mode = stat.S_IFLNK | 0777
+ st.st_mode = stat.S_IFLNK | obj.mode
st.st_nlink = 1
st.st_size = len(obj)
else:
st.st_nlink = 1
st.st_size = len(obj)
else:
- st.st_mode = stat.S_IFREG | 0444
+ st.st_mode = stat.S_IFREG | obj.mode
st.st_nlink = 1
st.st_size = len(obj)
st.st_nlink = 1
st.st_size = len(obj)
@@
-132,7
+136,7
@@
class RouteFS(fuse.Fuse):
of the file
"""
obj = self._get_file(path)
of the file
"""
obj = self._get_file(path)
- if obj is None:
+ if type(obj) is NoEntry:
return -errno.ENOENT
elif type(obj) in (Directory, Symlink):
return -errno.EINVAL
return -errno.ENOENT
elif type(obj) in (Directory, Symlink):
return -errno.EINVAL
@@
-144,12
+148,20
@@
class RouteFS(fuse.Fuse):
If the path specified is a symlink, return the target
"""
obj = self._get_file(path)
If the path specified is a symlink, return the target
"""
obj = self._get_file(path)
- if type(obj) is not Symlink:
+ if obj is None:
+ return -errno.ENOENT
+ elif type(obj) is not Symlink:
return -errno.EINVAL
else:
return obj
return -errno.EINVAL
else:
return obj
-class TreeEntry(object):
+class TreeKey(object):
+ pass
+
+class NoEntry(TreeKey):
+ pass
+
+class TreeEntry(TreeKey):
default_mode = 0444
def __new__(cls, contents, mode=None):
default_mode = 0444
def __new__(cls, contents, mode=None):
@@
-189,7
+201,7
@@
def main(cls):
server = cls(version="%prog " + fuse.__version__,
usage=fuse.Fuse.fusage,
dash_s_do='setsingle')
server = cls(version="%prog " + fuse.__version__,
usage=fuse.Fuse.fusage,
dash_s_do='setsingle')
- server.parse(errex=1)
+ server.parse(values=server, errex=1)
server.main()
from dictfs import DictFS
server.main()
from dictfs import DictFS