/* * tst_libext2fs.c */ #include "config.h" #include #include #if HAVE_UNISTD_H #include #endif #if HAVE_ERRNO_H #include #endif #if HAVE_SYS_STAT_H #include #endif #if HAVE_SYS_TYPES_H #include #endif #include "ext2_fs.h" #include "ext2fsP.h" #include "ss/ss.h" #include "debugfs.h" /* * Hook in new commands into debugfs * Override debugfs's prompt */ const char *debug_prog_name = "tst_libext2fs"; extern ss_request_table libext2fs_cmds; ss_request_table *extra_cmds = &libext2fs_cmds; static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)), blk64_t *blocknr, e2_blkcnt_t blockcnt, blk64_t ref_block, int ref_offset, void *private EXT2FS_ATTR((unused))) { printf("%6lld %8llu (%d %llu)\n", (long long) blockcnt, (unsigned long long) *blocknr, ref_offset, (unsigned long long) ref_block); return 0; } void do_block_iterate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)), void *infop EXT2FS_ATTR((unused))) { const char *usage = "block_iterate 2) { flags = parse_ulong(argv[2], argv[0], "flags", &err); if (err) return; } flags |= BLOCK_FLAG_READ_ONLY; ext2fs_block_iterate3(current_fs, ino, flags, NULL, print_blocks_proc, NULL); putc('\n', stdout); }