|
|
1.1 ! root 1: /* ! 2: * dosdump: display extended DOS partition info ! 3: */ ! 4: #include <stdio.h> ! 5: #include <sys/fdisk.h> ! 6: extern long lseek(); ! 7: int fd; ! 8: char buf[512]; ! 9: long partseek; ! 10: HDISK_S *hdp; ! 11: FDISK_S *fdp1, *fdp2; ! 12: ! 13: main(argc, argv) ! 14: char *argv[]; ! 15: { ! 16: register i = 0; ! 17: ! 18: if (argc != 2) ! 19: fatal("you fucked up"); ! 20: if ((fd = open(argv[1], 0)) < 0) ! 21: fatal("open failed"); ! 22: for (;;) { ! 23: if (lseek(fd, partseek, 0) == -1L) ! 24: fatal("lseek failed"); ! 25: if (read(fd, buf, sizeof(buf)) != sizeof(buf)) ! 26: fatal("read failed"); ! 27: hdp = buf; ! 28: if (hdp->hd_sig != HDSIG) ! 29: fatal("no signature found"); ! 30: fdp1 = &(hdp->hd_partn[0]); ! 31: fdp2 = &(hdp->hd_partn[1]); ! 32: printf("Level %d:\n", ++i); ! 33: printf("\tfdp1: sys=%d base=%8lx size=%8lx\n", ! 34: fdp1->p_sys, fdp1->p_base, fdp1->p_size); ! 35: printf("\tfdp2: sys=%d base=%8lx size=%8lx\n", ! 36: fdp2->p_sys, fdp2->p_base, fdp2->p_size); ! 37: if (fdp2->p_sys != SYS_DOS_XP) ! 38: break; ! 39: partseek = fdp2->p_base * 512; ! 40: } ! 41: exit(0); ! 42: } ! 43: ! 44: fatal(cp) ! 45: char *cp; ! 46: { ! 47: fprintf(stderr, "dosdump: %r\n", &cp); ! 48: exit(1); ! 49: } ! 50:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.