Changeset c00e729 in mainline for uspace/app/ext2info/ext2info.c


Ignore:
Timestamp:
2011-02-13T23:19:12Z (14 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f6fa2c2
Parents:
8bd5dad
Message:

Support for some more superblock fields and displaying in ext2info

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/ext2info/ext2info.c

    r8bd5dad rc00e729  
    5353
    5454static void syntax_print(void);
     55static void print_superblock(ext2_superblock_t *sb);
    5556
    5657int main(int argc, char **argv)
     
    6162        devmap_handle_t handle;
    6263        ext2_filesystem_t filesystem;
    63        
    64         uint16_t magic;
    6564       
    6665        if (argc < 2) {
     
    9291        }
    9392       
    94         printf("Superblock:\n");
    95         magic = ext2_superblock_get_magic(filesystem.superblock);
    96         if (magic == EXT2_SUPERBLOCK_MAGIC) {
    97                 printf("  Magic value: %X (correct)\n", magic);
    98         }
    99         else {
    100                 printf("  Magic value: %X (incorrect)\n", magic);
    101         }
     93        print_superblock(filesystem.superblock);
    10294
    10395        ext2_filesystem_fini(&filesystem);
     
    109101static void syntax_print(void)
    110102{
    111         printf("syntax: blkdump [--offset <num_blocks>] [--count <num_blocks>] <device_name>\n");
     103        printf("syntax: ext2info <device_name>\n");
     104}
     105
     106static void print_superblock(ext2_superblock_t *superblock)
     107{
     108        uint16_t magic;
     109        uint32_t first_block;
     110        uint32_t block_size;
     111        uint32_t fragment_size;
     112        uint32_t blocks_per_group;
     113        uint32_t fragments_per_group;
     114        uint32_t rev_major;
     115        uint16_t rev_minor;
     116        uint16_t state;
     117        uint32_t first_inode;
     118        uint16_t inode_size;
     119       
     120        int pos;
     121        unsigned char c;
     122       
     123        magic = ext2_superblock_get_magic(superblock);
     124        first_block = ext2_superblock_get_first_block(superblock);
     125        block_size = ext2_superblock_get_block_size(superblock);
     126        fragment_size = ext2_superblock_get_fragment_size(superblock);
     127        blocks_per_group = ext2_superblock_get_blocks_per_group(superblock);
     128        fragments_per_group = ext2_superblock_get_fragments_per_group(superblock);
     129        rev_major = ext2_superblock_get_rev_major(superblock);
     130        rev_minor = ext2_superblock_get_rev_minor(superblock);
     131        state = ext2_superblock_get_state(superblock);
     132        first_inode = ext2_superblock_get_first_inode(superblock);
     133        inode_size = ext2_superblock_get_inode_size(superblock);
     134       
     135        printf("Superblock:\n");
     136       
     137        if (magic == EXT2_SUPERBLOCK_MAGIC) {
     138                printf("  Magic value: %X (correct)\n", magic);
     139        }
     140        else {
     141                printf("  Magic value: %X (incorrect)\n", magic);
     142        }
     143       
     144        printf("  Revision: %u.%hu\n", rev_major, rev_minor);
     145        printf("  State: %hu\n", state);
     146        printf("  First block: %u\n", first_block);
     147        printf("  Block size: %u bytes (%u KiB)\n", block_size, block_size/1024);
     148        printf("  Blocks per group: %u\n", blocks_per_group);
     149        printf("  Fragment size: %u bytes (%u KiB)\n", fragment_size,
     150            fragment_size/1024);
     151        printf("  Fragments per group: %u\n", fragments_per_group);
     152        printf("  First inode: %u\n", first_inode);
     153        printf("  Inode size: %hu bytes\n", inode_size);
     154       
     155        printf("  UUID: ");
     156        for (pos = 0; pos < 16; pos++) {
     157                printf("%02x", superblock->uuid[pos]);
     158        }
     159        printf("\n");
     160       
     161        printf("  Volume label: ");
     162        for (pos = 0; pos < 16; pos++) {
     163                c = superblock->volume_name[pos];
     164                if (c >= 32 && c < 128) {
     165                        putchar(c);
     166                }
     167                else {
     168                        putchar(' ');
     169                }
     170        }
     171        printf("\n");
     172       
    112173}
    113174
Note: See TracChangeset for help on using the changeset viewer.