1: /* fdcompare.c - are two files identical? */ 2: 3: #include "../h/mh.h" 4: #include <stdio.h> 5: 6: long lseek(); 7: 8: 9: fdcompare (fd1, fd2) 10: register int fd1, 11: fd2; 12: { 13: register int i, 14: n1, 15: n2, 16: resp; 17: register char *c1, 18: *c2; 19: char b1[BUFSIZ], 20: b2[BUFSIZ]; 21: 22: resp = 1; 23: while ((n1 = read (fd1, b1, sizeof b1)) >= 0 24: && (n2 = read (fd2, b2, sizeof b2)) >= 0 25: && n1 == n2) { 26: c1 = b1; 27: c2 = b2; 28: for (i = n1 < sizeof b1 ? n1 : sizeof b1; i--;) 29: if (*c1++ != *c2++) { 30: resp = 0; 31: goto leave; 32: } 33: if (n1 < sizeof b1) 34: goto leave; 35: } 36: resp = 0; 37: 38: leave: ; 39: (void) lseek (fd1, 0L, 0); 40: (void) lseek (fd2, 0L, 0); 41: return resp; 42: }