/* * (C) 1983 UniSoft Corp. of Berkeley CA * * UniPlus Source Code. This program is proprietary * with Unisoft Corporation and is not to be reproduced * or used in any manner except as authorized in * writing by Unisoft. */ #include #include #include #include #include #ifdef DEBUG int debug = 0; #endif main() { register from1, from2, ct; int i, bno, fi1, fi2; char buf[50], buf1[PBSIZE], buf2[PBSIZE]; loop: printf("\nStandalone disk compare program\n\n"); finit(); for (;;) { printf("Device 1: "); gets(buf); fi1 = open(buf, 2); if (fi1 < 0) continue; printf("Starting sector: "); gets(buf); from1 = atoi(buf); printf("Device 2: "); gets(buf); fi2 = open(buf, 2); if (fi2 < 0) { close(fi1); continue; } printf("Starting sector: "); gets(buf); from2 = atoi(buf); printf("Number of sectors: "); gets(buf); ct = atoi(buf); if (from1 < 0 || from2 < 0 || ct <= 0) { printf("Illegal number\n\n"); continue; } break; } for (bno = 0; bno < ct; bno++) { lseek(fi1, (bno+from1)*PBSIZE, 0); if (read(fi1, buf1, PBSIZE) != PBSIZE) { printf("Bad read on block %d\n", bno+from1); continue; } lseek(fi2, (bno+from2)*PBSIZE, 0); if (read(fi2, buf2, PBSIZE) != PBSIZE) { printf("Bad read on block %d\n", bno+from2); continue; } for (i = 0; i < PBSIZE; i++) { if ((buf1[i] & 0xFF) != (buf2[i] & 0xFF)) { printf("Block %d != block %d\n", bno+from1, bno+from2); break; } } } goto loop; }