diff options
author | fishsoupisgood <github@madingley.org> | 2018-05-12 17:10:22 +0100 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2018-05-12 17:10:22 +0100 |
commit | b6afefb5d12dbed4801272dae3048588dfc1cb9a (patch) | |
tree | 0dc99b5b05d54cd5496b26fa37e19cc79f0b4b5e /src/zap_fs.c | |
download | ext_clone-b6afefb5d12dbed4801272dae3048588dfc1cb9a.tar.gz ext_clone-b6afefb5d12dbed4801272dae3048588dfc1cb9a.tar.bz2 ext_clone-b6afefb5d12dbed4801272dae3048588dfc1cb9a.zip |
first working version
Diffstat (limited to 'src/zap_fs.c')
-rw-r--r-- | src/zap_fs.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/zap_fs.c b/src/zap_fs.c new file mode 100644 index 0000000..0cfd7ac --- /dev/null +++ b/src/zap_fs.c @@ -0,0 +1,52 @@ +#include "project.h" + + +int zap_fs (ext2_filsys fs) +{ + int skip; + int ret; + ext2_inode_scan scan; + ext2_ino_t i_num; + struct ext2_inode i; + + EXT2_MOAN_FAIL (ret, ext2fs_open_inode_scan (fs, 0, &scan)); + + if (ret) return -1; + + for (;;) { + EXT2_MOAN_FAIL (ret, ext2fs_get_next_inode (scan, &i_num, &i)); + + if (ret) break; + + if (!i_num) break; + + skip = 0; + + switch (i_num) { + case EXT2_BAD_INO: + case EXT4_USR_QUOTA_INO: + case EXT4_GRP_QUOTA_INO: + case EXT2_BOOT_LOADER_INO: + case EXT2_UNDEL_DIR_INO: + case EXT2_RESIZE_INO: + case EXT2_EXCLUDE_INO: + case EXT4_REPLICA_INO: + skip = 1; + } + + if (i_num == fs->super->s_journal_inum) skip = 1; + + if (skip) continue; + + if (zap_inode (fs, i_num, &i)) { + fprintf (stderr, "zap_inode(%d) failed\n", (int) i_num); + break; + } + } + + ext2fs_close_inode_scan (scan); + return 0; +} + + + |