Ejemplo n.º 1
0
Archivo: pfs.py Proyecto: irachex/pyfs
 def unlink(self, path):
     filename = find_filename(path)
     parent_inode_no = self.search_dir(find_parent(path))
     parent_inode_block = inodemap.inodemap.lookup(parent_inode_no)
     parent_inode = Inode(data=segment.segman.block_read(parent_inode_block))
     parent_old_size = parent_inode.filesize
     parent_dir = Directory(parent_inode_no)
     found_entry = False
     entries = []
     for (name, inode) in parent_dir.enumerate():
         if found_entry:
             entries.append((name, inode))
         if name == filename:
             fount = True
             position = parent_dir.position - (FILENAMELEN + 4)
     for (name, inode) in entries:
         parent_inode.write(position, struct.pack("%dsI" % FILENAMELEN, name, inode))
         position += FILENAMELEN + 4
     parent_inode.filesize = parent_old_size - (FILENAMELEN + 4)
     inodemap.inodemap.update_inode(parent_inode_no, parent_inode.serialize())
Ejemplo n.º 2
0
Archivo: pfs.py Proyecto: irachex/pyfs
 def search_dir(self, path):
     # print map(ord, path)
     path = path.strip()
     if path == "/":
         return 1
     current_dir = Directory(1)
     stack = path.split("/")[1:]
     stack.reverse()
     while True:
         name = stack.pop()
         found = False
         for (n, inode) in current_dir.enumerate():
             if n == name:
                 found = True
                 break
         if found:
             if len(stack) == 0:
                 return inode
             else:
                 current_dir = Directory(inode)
         else:
             return None
Ejemplo n.º 3
0
Archivo: pfs.py Proyecto: irachex/pyfs
 def search_dir(self, path):
     #print map(ord, path)
     path = path.strip()
     if path == "/":
         return 1
     current_dir = Directory(1)
     stack = path.split("/")[1:]
     stack.reverse()
     while True:
         name = stack.pop()
         found = False
         for (n, inode) in current_dir.enumerate():
             if n == name:
                 found = True
                 break
         if found:
             if len(stack) == 0:
                 return inode
             else:
                 current_dir = Directory(inode)
         else:
             return None
Ejemplo n.º 4
0
Archivo: pfs.py Proyecto: irachex/pyfs
 def unlink(self, path):
     filename = find_filename(path)
     parent_inode_no = self.search_dir(find_parent(path))
     parent_inode_block = inodemap.inodemap.lookup(parent_inode_no)
     parent_inode = Inode(
         data=segment.segman.block_read(parent_inode_block))
     parent_old_size = parent_inode.filesize
     parent_dir = Directory(parent_inode_no)
     found_entry = False
     entries = []
     for (name, inode) in parent_dir.enumerate():
         if found_entry:
             entries.append((name, inode))
         if name == filename:
             fount = True
             position = parent_dir.position - (FILENAMELEN + 4)
     for (name, inode) in entries:
         parent_inode.write(position,
                            struct.pack("%dsI" % FILENAMELEN, name, inode))
         position += (FILENAMELEN + 4)
     parent_inode.filesize = parent_old_size - (FILENAMELEN + 4)
     inodemap.inodemap.update_inode(parent_inode_no,
                                    parent_inode.serialize())