From: Anders Kaseorg Date: Sun, 31 Aug 2008 10:14:43 +0000 (-0400) Subject: Make getattr() a method of TreeKey. X-Git-Tag: 1.0.0~5 X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-routefs.git/commitdiff_plain/28c8a7e679b0251974b1c21e582f65abac9babac Make getattr() a method of TreeKey. Signed-off-by: Anders Kaseorg --- diff --git a/routefs/__init__.py b/routefs/__init__.py index 61816b7..1abbf9a 100644 --- a/routefs/__init__.py +++ b/routefs/__init__.py @@ -111,24 +111,7 @@ class RouteFS(fuse.Fuse): The stat information for a directory, symlink, or file is predetermined based on which it is. """ - obj = self._get_file(path) - if type(obj) is NoEntry: - return -errno.ENOENT - - st = RouteStat() - if type(obj) is Directory: - st.st_mode = stat.S_IFDIR | obj.mode - st.st_nlink = 2 - elif type(obj) is Symlink: - st.st_mode = stat.S_IFLNK | obj.mode - st.st_nlink = 1 - st.st_size = len(obj) - else: - st.st_mode = stat.S_IFREG | obj.mode - st.st_nlink = 1 - st.st_size = len(obj) - - return st + return self._get_file(path).getattr() def read(self, path, length, offset): """ @@ -156,10 +139,12 @@ class RouteFS(fuse.Fuse): return obj class TreeKey(object): - pass + def getattr(self): + return -errno.EINVAL class NoEntry(TreeKey): - pass + def getattr(self): + return -errno.ENOENT class TreeEntry(TreeKey): default_mode = 0444 @@ -182,18 +167,38 @@ class Directory(TreeEntry, list): """ default_mode = 0555 + def getattr(self): + st = RouteStat() + st.st_mode = stat.S_IFDIR | self.mode + st.st_nlink = 2 + return st + class Symlink(TreeEntry, str): """ A dummy class representing something that should be a symlink """ default_mode = 0777 + def getattr(self): + st = RouteStat() + st.st_mode = stat.S_IFLNK | self.mode + st.st_nlink = 1 + st.st_size = len(self) + return st + class File(TreeEntry, str): """ A dummy class representing something that should be a file """ default_mode = 0444 + def getattr(self): + st = RouteStat() + st.st_mode = stat.S_IFREG | self.mode + st.st_nlink = 1 + st.st_size = len(self) + return st + def main(cls): """ A convenience function for initializing a RouteFS filesystem