Python KeyLayoutElement Examples

Python KeyLayoutElement - 7 examples found. These are the top rated real world Python examples of keylayoutelement.KeyLayoutElement extracted from open source projects. You can rate examples to help us improve the quality of examples.
Frequently Used Methods
Example #1
0
    def link(self, targetPath, linkPath):
        nodetok = linkpath.split("/")
        lname = nodetok[len(nodetok) - 1]
        nodetok.remove(lname)
        dir = ""
        for i in nodetok:
            if i != "":
                dir = dir + "/" + i
        if dir == "":
            dir = "/"

        dirnode = self.FSData.findNode(dir)
        if dirnode == None:
            return -errno.ENOENT

        tnode = self.FSData.findNode(targetPath)
        if tnode == None:
            return -errno.ENOENT

        lnode = KeyLayoutElement(lname)
        lnode.runtimeSetup()
        ndnode.stat.st_mode = S_IFLNK | 0777
        lnode.target_path = targetPath
        dirnode.addChild(lnode)
        return 0
Example #2
0
class MetaData:
    def __init__(self):
        self.version = 2
        self.size_unlimited = True
        self.root = KeyLayoutElement("/")
        self.root.runtimeSetup()

    def findNode(self, name):
        if name == "/":
            return self.root
        tokens = name.split("/")
        return self.root.pathWalk(tokens)

    def cloneForSave(self):
        clone = MetaData()
        clone.root = None
        clone.version = self.version
        clone.size_unlimited = self.size_unlimited
        clone.root = self.root.cloneSubtree()
        return clone
Example #3
0
    def mkdir(self, path, mode):
        nodetok = path.split("/")
        newdir = nodetok[len(nodetok) - 1]
        nodetok.remove(newdir)
        dir = ""
        for i in nodetok:
            if i != "":
                dir = dir + "/" + i

        if dir == "":
            dir = "/"

        dirnode = self.FSData.findNode(dir)
        if dirnode == None:
            return -errno.ENOENT

        ndnode = KeyLayoutElement(newdir)
        ndnode.runtimeSetup()
        ndnode.stat.st_mode = stat.S_IFDIR | mode
        dirnode.addChild(ndnode)
        return 0
Example #4
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
Example #5
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
Example #6
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