Select Git revision
list_inodes.c
list_inodes.c 1.20 KiB
#include <libgen.h>
#include <minix.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage :\n");
fprintf(stderr, "\t./%s <image file>\n", basename(argv[0]));
exit(EXIT_FAILURE);
}
struct minix_super_block sb = {0};
if (unmarshal_sb(&sb, argv[1]) == -1) {
fprintf(stderr, "Failed to marshal minix_super_block structure\n");
fprintf(stderr, "Exiting...\n");
exit(EXIT_FAILURE);
}
int nb_allocated_inodes = 0;
for (int i = 1; i < sb.s_ninodes; i++) {
if (is_inode_allocated(i, argv[1])) {
nb_allocated_inodes++;
struct minix_inode inode = {0};
if (unmarshal_inode(&inode, i, argv[1]) == -1) {
fprintf(stderr, "Failed to marshal minix_inode structure\n");
fprintf(stderr, "Exiting...\n");
exit(EXIT_FAILURE);
}
fprintf(stdout, "\nInode n°%d ", i);
read_inode(&inode);
}
}
fprintf(stdout,
"\nNumber of allocated inodes : %d\tTotal number of inodes : %d\n",
nb_allocated_inodes, sb.s_ninodes);
return EXIT_SUCCESS;
}