class Py360(Fuse): def __init__(self, *args, **kw): filename = kw.pop('filename') Fuse.__init__(self, *args, **kw) self.partition = Partition(filename, threadsafe=False) def getattr(self, path): st = MyStat() fileobj = self.partition.get_file(path) if fileobj: if fileobj.isDirectory(): st.st_mode = stat.S_IFDIR | 0555 st.st_nlink = len(fileobj.files) else: st.st_mode = stat.S_IFREG | 0444 if not fileobj.isDirectory() or not fileobj.root: st.st_size = fileobj.fr.fsize st.st_ino = fileobj.fr.cluster st.st_atime = xboxtime.fat2unixtime(fileobj.fr.atime, fileobj.fr.adate) st.st_mtime = xboxtime.fat2unixtime(fileobj.fr.mtime, fileobj.fr.mdate) st.st_ctime = xboxtime.fat2unixtime(fileobj.fr.ctime, fileobj.fr.cdate) context = self.GetContext() st.st_uid = context['uid'] st.st_gid = context['gid'] return st else: return -errno.ENOENT def readdir(self, path, offset): #Why does this have an offset? fileobj = self.partition.get_file(path) if fileobj and fileobj.isDirectory(): dirlist = [fuse.Direntry('.'), fuse.Direntry('..')] for f in fileobj.files: dirlist.append(fuse.Direntry(f)) return dirlist else: return -errno.ENOENT def read(self, path, size, offset): fileobj = self.partition.get_file(path) if fileobj: return self.partition.read_file(fileobj=fileobj, size=size, offset=offset) else: return -errno.ENOENT
class Py360(Fuse): def __init__(self, *args, **kw): filename = kw.pop('filename') Fuse.__init__(self, *args, **kw) self.partition = Partition(filename, threadsafe = False) def getattr(self, path): st = MyStat() fileobj = self.partition.get_file(path) if fileobj: if fileobj.isDirectory(): st.st_mode = stat.S_IFDIR | 0555 st.st_nlink = len(fileobj.files) else: st.st_mode = stat.S_IFREG | 0444 if not fileobj.isDirectory() or not fileobj.root: st.st_size = fileobj.fr.fsize st.st_ino = fileobj.fr.cluster st.st_atime = xboxtime.fat2unixtime(fileobj.fr.atime, fileobj.fr.adate) st.st_mtime = xboxtime.fat2unixtime(fileobj.fr.mtime, fileobj.fr.mdate) st.st_ctime = xboxtime.fat2unixtime(fileobj.fr.ctime, fileobj.fr.cdate) context = self.GetContext() st.st_uid = context['uid'] st.st_gid = context['gid'] return st else: return -errno.ENOENT def readdir(self, path, offset): #Why does this have an offset? fileobj = self.partition.get_file(path) if fileobj and fileobj.isDirectory(): dirlist = [fuse.Direntry('.'), fuse.Direntry('..')] for f in fileobj.files: dirlist.append(fuse.Direntry(f)) return dirlist else: return -errno.ENOENT def read(self, path, size, offset): fileobj = self.partition.get_file(path) if fileobj: return self.partition.read_file(fileobj = fileobj, size = size, offset = offset) else: return -errno.ENOENT