/* * CMP.C * * * (C)Copyright 1986, Matthew Dillon, All Rights Reserved. * Permission is granted to distribute for non-profit only. * * comp file1 file2 * * Compare two files. The program will tell you if two files compare * the same or, if not, where the error occured. * */ #include #include extern char *malloc(); #define BUFSIZE 16384 main(ac, av) char *av[]; { long f1, f2; register short i, j, n; char fail; char *buf1, *buf2; char *premature_eof = "premature EOF in %s (files compare to that point)\n"; buf1 = malloc(BUFSIZE); buf2 = malloc(BUFSIZE); if (!buf1 || !buf2) { puts("no memory"); exit(30); } fail = 0; if (ac <= 2) { puts ("V2.00 (c)Copyright 1986-1988 Matthew Dillon, All Rights Reserved"); puts ("cmp file1 file2"); exit(0); } f1 = open(av[1], O_RDONLY); f2 = open(av[2], O_RDONLY); if (f1 && f2) { while (!fail && (i = read(f1, buf1, 256))) { n = read(f2, buf2, i); if (!bcmp(buf1, buf2, n)) fail = 5; if (!fail) { if (n == i) continue; fail = 5; } } if (!fail && read(f2, buf2, 1)) fail = 5; } else { puts("Could not open both files"); fail = 20; } if (f1 >= 0) close(f1); /* f1 & f2 are either valid or NULL */ if (f2 >= 0 close(f2); if (fail) puts("Compare failed"); exit(fail); }