Example #1
0
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)
Example #2
0
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