Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fcntl.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include "ext2.h"
- #define BASE_OFFSET 1024
- #define EXT2_BLOCK_SIZE 1024
- #define IMAGE "image.img"
- typedef unsigned char bmap;
- #define __NBITS (8 * (int) sizeof (bmap))
- #define __BMELT(d) ((d) / __NBITS)
- #define __BMMASK(d) ((bmap) 1 << ((d) % __NBITS))
- #define BM_SET(d, set) ((set[__BMELT (d)] |= __BMMASK (d)))
- #define BM_CLR(d, set) ((set[__BMELT (d)] &= ~__BMMASK (d)))
- #define BM_ISSET(d, set) ((set[__BMELT (d)] & __BMMASK (d)) != 0)
- unsigned int block_size = 0;
- #define BLOCK_OFFSET(block) (BASE_OFFSET + (block-1)*block_size)
- int main(void)
- {
- struct ext2_super_block super;
- struct ext2_group_desc group;
- int fd;
- if ((fd = open(IMAGE, O_RDONLY)) < 0) {
- perror(IMAGE);
- exit(1);
- }
- // read super-block
- lseek(fd, BASE_OFFSET, SEEK_SET);
- read(fd, &super, sizeof(super));
- if (super.s_magic != EXT2_SUPER_MAGIC) {
- fprintf(stderr, "Not a Ext2 filesystem\n");
- exit(1);
- }
- block_size = 1024 << super.s_log_block_size;
- printf("Reading from image file " IMAGE ":\n"
- "Blocks count : %u\n"
- "First non-reserved inode: %u\n"
- "Inode size : %u\n",
- super.s_blocks_count,
- super.s_first_ino,
- super.s_inode_size);
- return 0;
- }
Add Comment
Please, Sign In to add comment