def getattr(self, path): st = MyStat() #if path == '/' or path == '/dist1' or path == '/dist2' or path == '/*': # st.st_mode = stat.S_IFDIR | 0755 # st.st_nlink = 2 #elif path == '/test.txt': # st.st_mode = stat.S_IFREG | 0444 # st.st_nlink = 1 # st.st_size = len(fuse_txt) #else: # return -errno.ENOENT print "get attr for %s" % path is_exist, is_folder, size, link, atime, ctime, mtime = DBManager.query_getattr(path=path) if not is_exist: return -errno.ENOENT st.st_gid = 0 st.st_uid = 0 st.st_size = size st.st_nlink = link st.st_atime = atime st.st_ctime = ctime st.st_mtime = mtime if is_folder: st.st_mode = stat.S_IFDIR | 0777 else: st.st_mode = stat.S_IFREG | 0777 return st
def readdir(self, path, offset): os.chdir(self.root) persist_names = ['.', '..'] sub_names = DBManager.query_readdir(path=path) sub_names = persist_names + sub_names print sub_names for r in sub_names: yield fuse.Direntry(r)
def __init__(self, path, flags, *mode): fmode = flag2mode(flags) #if fmode == 'w' or fmode == 'w+': # DBManager.query_open(path_linux_to_windows(path)) path = DBManager.query_open(path=path) self.file = os.fdopen(os.open("." + path, flags, *mode), fmode) self.fd = self.file.fileno() self.path = path
def write(self, buf, offset): self.file.seek(offset) self.file.write(buf) size = os.path.getsize("." + self.path) DBManager.query_write(path_linux_to_windows(self.path), size) return len(buf)
def mkdir(self, path, mode): DBManager.query_mkdir(path_linux_to_windows(path)) os.mkdir("." + path, mode)
def rename(self, path, path1): DBManager.query_rename(path_linux_to_windows(path), path_linux_to_windows(path1)) os.rename("." + path, "." + path1)
def rmdir(self, path): DBManager.query_rmdir(path=path)
def unlink(self, path): DBManager.query_unlink(path=path)