#!/usr/bin/env python # # Copyright (C) 2001 Jeff Epler # # This program can be distributed under the terms of the GNU GPL. # See the file COPYING. # from fuse import Fuse import os from errno import * from stat import * class Xmp(Fuse): flags = 1 def getattr(self, path): return os.lstat(path) def readlink(self, path): return os.readlink(path) def getdir(self, path): return map(lambda x: (x,0), os.listdir(path)) def unlink(self, path): return os.unlink(path) def rmdir(self, path): return os.rmdir(path) def symlink(self, path, path1): return os.symlink(path, path1) def rename(self, path, path1): return os.rename(path, path1) def link(self, path, path1): return os.link(path, path1) def chmod(self, path, mode): return os.chmod(path, mode) def chown(self, path, user, group): return os.chown(path, user, group) def truncate(self, path, size): f = open(path, "w+") return f.truncate(size) def mknod(self, path, mode, dev): """ Python has no os.mknod, so we can only do some things """ if S_ISREG(mode): open(path, "w") else: return -EINVAL def mkdir(self, path, mode): return os.mkdir(path, mode) def utime(self, path, times): return os.utime(path, times) def open(self, path, flags): os.close(os.open(path, flags)) return 0 def read(self, path, len, offset): f = open(path, "r") f.seek(offset) return f.read(len) def write(self, path, buf, off): f = open(path, "r+") f.seek(off) f.write(buf) return len(buf) if __name__ == '__main__': server = Xmp() server.flags = 0 server.multithreaded = 1; server.main()