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