diff options
Diffstat (limited to 'e2fslib/freefs.c')
-rw-r--r-- | e2fslib/freefs.c | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/e2fslib/freefs.c b/e2fslib/freefs.c deleted file mode 100644 index 5cb3cf8..0000000 --- a/e2fslib/freefs.c +++ /dev/null @@ -1,137 +0,0 @@ -/* - * freefs.c --- free an ext2 filesystem - * - * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o. - * - * %Begin-Header% - * This file may be redistributed under the terms of the GNU Public - * License. - * %End-Header% - */ - -#include <stdio.h> -#if HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include "ext2_fs.h" -#include "ext2fsP.h" - -static void ext2fs_free_inode_cache(struct ext2_inode_cache *icache); - -void ext2fs_free(ext2_filsys fs) -{ - if (!fs || (fs->magic != EXT2_ET_MAGIC_EXT2FS_FILSYS)) - return; - if (fs->io) { - io_channel_close(fs->io); - } - if (fs->device_name) - ext2fs_free_mem((void **) &fs->device_name); - if (fs->super) - ext2fs_free_mem((void **) &fs->super); - if (fs->orig_super) - ext2fs_free_mem((void **) &fs->orig_super); - if (fs->group_desc) - ext2fs_free_mem((void **) &fs->group_desc); - if (fs->block_map) - ext2fs_free_block_bitmap(fs->block_map); - if (fs->inode_map) - ext2fs_free_inode_bitmap(fs->inode_map); - - if (fs->badblocks) - ext2fs_badblocks_list_free(fs->badblocks); - fs->badblocks = 0; - - if (fs->dblist) - ext2fs_free_dblist(fs->dblist); - - if (fs->icache) - ext2fs_free_inode_cache(fs->icache); - - fs->magic = 0; - - ext2fs_free_mem((void **) &fs); -} - -void ext2fs_free_generic_bitmap(ext2fs_inode_bitmap bitmap) -{ - if (!bitmap || (bitmap->magic != EXT2_ET_MAGIC_GENERIC_BITMAP)) - return; - - bitmap->magic = 0; - if (bitmap->description) { - ext2fs_free_mem((void **) &bitmap->description); - bitmap->description = 0; - } - if (bitmap->bitmap) { - ext2fs_free_mem((void **) &bitmap->bitmap); - bitmap->bitmap = 0; - } - ext2fs_free_mem((void **) &bitmap); -} - -void ext2fs_free_inode_bitmap(ext2fs_inode_bitmap bitmap) -{ - if (!bitmap || (bitmap->magic != EXT2_ET_MAGIC_INODE_BITMAP)) - return; - - bitmap->magic = EXT2_ET_MAGIC_GENERIC_BITMAP; - ext2fs_free_generic_bitmap(bitmap); -} - -void ext2fs_free_block_bitmap(ext2fs_block_bitmap bitmap) -{ - if (!bitmap || (bitmap->magic != EXT2_ET_MAGIC_BLOCK_BITMAP)) - return; - - bitmap->magic = EXT2_ET_MAGIC_GENERIC_BITMAP; - ext2fs_free_generic_bitmap(bitmap); -} - -/* - * Free the inode cache structure - */ -static void ext2fs_free_inode_cache(struct ext2_inode_cache *icache) -{ - if (--icache->refcount) - return; - if (icache->buffer) - ext2fs_free_mem((void **) &icache->buffer); - if (icache->cache) - ext2fs_free_mem((void **) &icache->cache); - icache->buffer_blk = 0; - ext2fs_free_mem((void **) &icache); -} - -/* - * This procedure frees a badblocks list. - */ -void ext2fs_badblocks_list_free(ext2_badblocks_list bb) -{ - if (bb->magic != EXT2_ET_MAGIC_BADBLOCKS_LIST) - return; - - if (bb->list) - ext2fs_free_mem((void **) &bb->list); - bb->list = 0; - ext2fs_free_mem((void **) &bb); -} - -/* - * Free a directory block list - */ -void ext2fs_free_dblist(ext2_dblist dblist) -{ - if (!dblist || (dblist->magic != EXT2_ET_MAGIC_DBLIST)) - return; - - if (dblist->list) - ext2fs_free_mem((void **) &dblist->list); - dblist->list = 0; - if (dblist->fs && dblist->fs->dblist == dblist) - dblist->fs->dblist = 0; - dblist->magic = 0; - ext2fs_free_mem((void **) &dblist); -} - |