Skip to content
Snippets Groups Projects
Select Git revision
  • 51dc08d892c1f251e34ad83578aeed591d7152d7
  • master default protected
2 results

list_inodes.c

Blame
  • 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;
    }