projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix order of 2nd and 3rd arguments to fread so the count of the
[unix-history]
/
usr
/
src
/
usr.bin
/
diff
/
diff
/
diffreg.c
diff --git
a/usr/src/usr.bin/diff/diff/diffreg.c
b/usr/src/usr.bin/diff/diff/diffreg.c
index
c651ce7
..
255305e
100644
(file)
--- a/
usr/src/usr.bin/diff/diff/diffreg.c
+++ b/
usr/src/usr.bin/diff/diff/diffreg.c
@@
-1,4
+1,4
@@
-static char sccsid[] = "@(#)diffreg.c 4.
3
%G%";
+static char sccsid[] = "@(#)diffreg.c 4.
6
%G%";
#include "diff.h"
/*
#include "diff.h"
/*
@@
-137,13
+137,14
@@
diffreg()
if (stb1.st_size != stb2.st_size)
goto notsame;
for (;;) {
if (stb1.st_size != stb2.st_size)
goto notsame;
for (;;) {
- i = fread(buf1,
BUFSIZ, 1
, f1);
- j = fread(buf2,
BUFSIZ, 1
, f2);
+ i = fread(buf1,
1, BUFSIZ
, f1);
+ j = fread(buf2,
1, BUFSIZ
, f2);
if (i < 0 || j < 0 || i != j)
goto notsame;
if (i == 0 && j == 0) {
fclose(f1);
fclose(f2);
if (i < 0 || j < 0 || i != j)
goto notsame;
if (i == 0 && j == 0) {
fclose(f1);
fclose(f2);
+ status = 0; /* files don't differ */
goto same;
}
for (j = 0; j < i; j++)
goto same;
}
for (j = 0; j < i; j++)
@@
-151,7
+152,11
@@
diffreg()
goto notsame;
}
notsame:
goto notsame;
}
notsame:
- if (!ascii(fileno(f1)) || !ascii(fileno(f2))) {
+ /*
+ * Files certainly differ at this point; set status accordingly
+ */
+ status = 1;
+ if (!asciifile(f1) || !asciifile(f2)) {
printf("Binary files %s and %s differ\n", file1, file2);
fclose(f1);
fclose(f2);
printf("Binary files %s and %s differ\n", file1, file2);
fclose(f1);
fclose(f2);
@@
-249,7
+254,6
@@
prepare(i, fd)
register struct line *p;
register j,h;
register struct line *p;
register j,h;
- input[i] = fd;
fseek(fd, (long)0, 0);
p = (struct line *)talloc(3*sizeof(line));
for(j=0; h=readhash(fd);) {
fseek(fd, (long)0, 0);
p = (struct line *)talloc(3*sizeof(line));
for(j=0; h=readhash(fd);) {
@@
-401,8
+405,15
@@
check()
int jackpot;
long ctold, ctnew;
char c,d;
int jackpot;
long ctold, ctnew;
char c,d;
- input[0] = fopen(file1,"r");
- input[1] = fopen(file2,"r");
+
+ if ((input[0] = fopen(file1,"r")) == NULL) {
+ perror(file1);
+ done();
+ }
+ if ((input[1] = fopen(file2,"r")) == NULL) {
+ perror(file2);
+ done();
+ }
j = 1;
ixold[0] = ixnew[0] = 0;
jackpot = 0;
j = 1;
ixold[0] = ixnew[0] = 0;
jackpot = 0;
@@
-507,7
+518,11
@@
int *b;
skipline(f)
{
register i;
skipline(f)
{
register i;
- for(i=1;getc(input[f])!='\n';i++) ;
+ char c;
+
+ for(i=1;(c=getc(input[f]))!='\n';i++)
+ if (c < 0)
+ return(i);
return(i);
}
return(i);
}
@@
-752,3
+767,27
@@
FILE *f;
sum = low(sum) + high(sum);
return((short)low(sum) + (short)high(sum));
}
sum = low(sum) + high(sum);
return((short)low(sum) + (short)high(sum));
}
+
+#include <a.out.h>
+
+asciifile(f)
+ FILE *f;
+{
+ char buf[BUFSIZ];
+ register int cnt;
+ register char *cp;
+
+ fseek(f, (long)0, 0);
+ cnt = fread(buf, 1, BUFSIZ, f);
+ if (cnt >= sizeof (struct exec)) {
+ struct exec hdr;
+ hdr = *(struct exec *)buf;
+ if (!N_BADMAG(hdr))
+ return (0);
+ }
+ cp = buf;
+ while (--cnt >= 0)
+ if (*cp++ & 0200)
+ return (0);
+ return (1);
+}