def rename ( self, oldPath, newPath ): oldnode = self.FSData.findNode(oldPath) if oldnode == None: return -errno.ENOENT newnode = self.FSData.findNode(newPath) if newnode != None: return -errno.EEXIST newntok = newPath.split('/') newname = newntok[len(newntok)-1] newntok.remove(newname) dir = "" for i in newntok: if i != '': dir = dir + "/" + i if dir == "": dir = "/" newdirnode = self.FSData.findNode(dir) if newdirnode == None: return -errno.ENOENT newnode = KeyLayoutElement(newname) newnode.runtimeSetup() newnode.stat = oldnode.stat newdirnode.addChild(newnode) newfile = newnode.open(self, os.O_RDWR|os.O_CREAT) oldfile = oldnode.open(self, os.O_RDWR) newnode.iolock.acquire() oldnode.iolock.acquire() shutil.copyfileobj(oldfile,newfile) newnode.dirty = True newnode.iolock.release() oldnode.iolock.release() newnode.close(self) oldnode.close(self) oldnode.delete(self) return 0
def rename(self, oldPath, newPath): oldnode = self.FSData.findNode(oldPath) if oldnode == None: return -errno.ENOENT newnode = self.FSData.findNode(newPath) if newnode != None: return -errno.EEXIST newntok = newPath.split('/') newname = newntok[len(newntok) - 1] newntok.remove(newname) dir = "" for i in newntok: if i != '': dir = dir + "/" + i if dir == "": dir = "/" newdirnode = self.FSData.findNode(dir) if newdirnode == None: return -errno.ENOENT newnode = KeyLayoutElement(newname) newnode.runtimeSetup() newnode.stat = oldnode.stat newdirnode.addChild(newnode) newfile = newnode.open(self, os.O_RDWR | os.O_CREAT) oldfile = oldnode.open(self, os.O_RDWR) newnode.iolock.acquire() oldnode.iolock.acquire() shutil.copyfileobj(oldfile, newfile) newnode.dirty = True newnode.iolock.release() oldnode.iolock.release() newnode.close(self) oldnode.close(self) oldnode.delete(self) return 0
def __init__(self, path, flags, *mode): self.file = None self.direct_io = True self.keep_cache = "no" self.node = None node = self.myFS.FSData.findNode(path) nodetok = path.split('/') dir="" filename = nodetok[len(nodetok)-1] nodetok.remove(filename) for i in nodetok: if i != '': dir = dir + "/" + i if dir == "": dir = "/" dirnode = self.myFS.FSData.findNode(dir) if dirnode == None: return None if node == None: #Check to see if we are supposed to be creating a file if (flags & os.O_CREAT) == os.O_CREAT: node = KeyLayoutElement(filename) node.runtimeSetup() node.stat.st_mode = stat.S_IFREG | 0755 node.sha_sum = '' dirnode.addChild(node) else: return None else: if (flags & os.O_EXCL) == os.O_EXCL: return None self.file = node.open(self.myFS, flags) self.fd = self.file.fileno() self.node = node return None
def __init__(self, path, flags, *mode): self.file = None self.direct_io = True self.keep_cache = "no" self.node = None node = self.myFS.FSData.findNode(path) nodetok = path.split('/') dir = "" filename = nodetok[len(nodetok) - 1] nodetok.remove(filename) for i in nodetok: if i != '': dir = dir + "/" + i if dir == "": dir = "/" dirnode = self.myFS.FSData.findNode(dir) if dirnode == None: return None if node == None: #Check to see if we are supposed to be creating a file if (flags & os.O_CREAT) == os.O_CREAT: node = KeyLayoutElement(filename) node.runtimeSetup() node.stat.st_mode = stat.S_IFREG | 0755 node.sha_sum = '' dirnode.addChild(node) else: return None else: if (flags & os.O_EXCL) == os.O_EXCL: return None self.file = node.open(self.myFS, flags) self.fd = self.file.fileno() self.node = node return None
def mknod ( self, path, mode, dev ): node = self.FSData.findNode(path) if node != None: return -errno.EEXIST nodetok = path.split('/') dir="" filename = nodetok[len(nodetok)-1] nodetok.remove(filename) for i in nodetok: if i != '': dir = dir + "/" + i if dir == "": dir = "/" dirnode = self.FSData.findNode(dir) file = KeyLayoutElement(filename) file.runtimeSetup() file.stat.st_mode = mode dirnode.addChild(file) node = self.FSData.findNode(path) fd = file.open(self) fd.close() return 0
def mknod(self, path, mode, dev): node = self.FSData.findNode(path) if node != None: return -errno.EEXIST nodetok = path.split('/') dir = "" filename = nodetok[len(nodetok) - 1] nodetok.remove(filename) for i in nodetok: if i != '': dir = dir + "/" + i if dir == "": dir = "/" dirnode = self.FSData.findNode(dir) file = KeyLayoutElement(filename) file.runtimeSetup() file.stat.st_mode = mode dirnode.addChild(file) node = self.FSData.findNode(path) fd = file.open(self) fd.close() return 0