def rmdir(directory): inum = file_name_layer.lookup(directory, path_name_layer._wd) i = inode_number.inode_number_to_inode(inum) if (i.inode_type == FileType.directory): blockLayer.release_block(i.blocks[0]) inode_number.release_inode(inum) inode_directory = inode_number.inode_number_to_inode(path_name_layer._wd) block_directory = blockLayer.block_number_to_block(inode_directory.blocks[0]) buf = [""] * block_directory.size buf = block_directory.read(0, buf, 0, block_directory.size) buf = "".join(buf) search = directory + "|" + str(inum) + "," buf = buf.replace(search, "") clear = "_" * 512 block_directory.write(0, clear, 0, len(clear)) block_directory.write(0, buf, 0, len(buf)) if(len(buf) == 0): # checks to see if the directory is now empty block_directory.size = 0 else: raise Exception("Inode %r is not of type directory." % inum)
def rm(filename): num = 0 inum = file_name_layer.lookup(filename, path_name_layer._wd) i = inode_number.inode_number_to_inode(inum) for b in i.blocks: if (b != -1): blockLayer.release_block(i.blocks[num]) num += 1 inode_number.release_inode(inum) inode_directory = inode_number.inode_number_to_inode(path_name_layer._wd) block_directory = blockLayer.block_number_to_block(inode_directory.blocks[0]) buf = [""] * block_directory.size buf = block_directory.read(0, buf, 0, block_directory.size) buf = "".join(buf) search = filename + "|" + str(inum) + "," buf = buf.replace(search, "") clear = "_" * 512 block_directory.write(0, clear, 0, len(clear)) block_directory.write(0, buf, 0, len(buf)) if(len(buf) == 0): # checks to see if the directory is now empty block_directory.size = 0