#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <sys/types.h>
#include <sys/param.h>
#include <vfs/ufs/ufs_types.h>
#include <vfs/ufs/fs.h>
int main(int argc, char **argv){
    FILE *f = fopen(argv[1], "rb");
    struct fs sb; 
    if (!f){perror("open");return 1;}
    fseek(f, 8192, SEEK_SET);
    if (fread(&sb, sizeof sb, 1, f) != 1){perror("read");return 1;}
    printf("magic=0x%08x ncg=%d bsize=%d fsize=%d frag=%d\n",
        sb.fs_magic, sb.fs_ncg, sb.fs_bsize, sb.fs_fsize, sb.fs_frag);
    printf("sbsize=%d csaddr=%d cssize=%d ipg=%d fpg=%d inopb=%d\n",
        sb.fs_sbsize, sb.fs_csaddr, sb.fs_cssize, sb.fs_ipg, sb.fs_fpg, sb.fs_inopb);
    printf("cgsize=%d contigsumsize=%d maxsymlinklen=%d clean=%d flags=0x%x\n",
        sb.fs_cgsize, sb.fs_contigsumsize, sb.fs_maxsymlinklen, sb.fs_clean, sb.fs_flags);
    printf("fshift=%d bshift=%d size=%d dsize=%d\n", sb.fs_fshift, sb.fs_bshift, sb.fs_size, sb.fs_dsize);
    return 0;
}
