--- diffreg.c.orig	1994-01-11 05:39:33 UTC
+++ diffreg.c
@@ -84,6 +84,25 @@ struct line {
 	int	serial;
 	int	value;
 } *file[2], line;
+
+/* declarations */
+void equiv(struct line *, int, struct line *, int, int *);
+int asciifile(FILE *);
+void prepare(int, FILE *);
+void sort(struct line *, int);
+void unsort(struct line *, int, int *);
+void unravel(int);
+void check();
+void output();
+int stone(int *, int, int *, register int *);
+int readhash(FILE *);
+int newcand(int, int, int);
+int search(int *, int, int);
+void change(int, int, int, int);
+void dump_context_vec();
+void range(int, int, char *);
+void fetch(long *, int, int, FILE *, char *, int);
+
 int	len[2];
 struct	line *sfile[2];	/* shortened by pruning common prefix and suffix */
 int	slen[2];
@@ -140,7 +159,7 @@ char	cup2low[256] = {
 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
 };
 
-diffreg()
+void diffreg()
 {
 	register int i, j;
 	FILE *f1, *f2;
@@ -270,12 +289,12 @@ copytemp()
 	char buf[BUFSIZ];
 	register int i, f;
 
-	signal(SIGHUP,done);
-	signal(SIGINT,done);
-	signal(SIGPIPE,done);
-	signal(SIGTERM,done);
-	tempfile = mktemp("/tmp/dXXXXX");
-	f = creat(tempfile,0600);
+	signal(SIGHUP, (sig_t) done);
+	signal(SIGINT, (sig_t) done);
+	signal(SIGPIPE, (sig_t) done);
+	signal(SIGTERM, (sig_t) done);
+	strcpy(tempfile, "/tmp/dXXXXX");
+	f = mkstemp(tempfile);
 	if (f < 0) {
 		fprintf(stderr, "diff: ");
 		perror(tempfile);
@@ -311,16 +330,16 @@ splice(dir, file)
 	return (savestr(buf));
 }
 
-prepare(i, fd)
+void prepare(i, fd)
 	int i;
 	FILE *fd;
 {
 	register struct line *p;
-	register j,h;
+	register int j,h;
 
 	fseek(fd, (long)0, 0);
 	p = (struct line *)talloc(3*sizeof(line));
-	for(j=0; h=readhash(fd);) {
+	for(j=0; (h=readhash(fd));) {
 		p = (struct line *)ralloc((char *)p,(++j+3)*sizeof(line));
 		p[j].value = h;
 	}
@@ -328,9 +347,9 @@ prepare(i, fd)
 	file[i] = p;
 }
 
-prune()
+void prune()
 {
-	register i,j;
+	register int i,j;
 	for(pref=0;pref<len[0]&&pref<len[1]&&
 		file[0][pref+1].value==file[1][pref+1].value;
 		pref++ ) ;
@@ -345,7 +364,7 @@ prune()
 	}
 }
 
-equiv(a,n,b,m,c)
+void equiv(a,n,b,m,c)
 struct line *a, *b;
 int *c;
 {
@@ -373,7 +392,7 @@ int *c;
 	c[j] = -1;
 }
 
-stone(a,n,b,c)
+int stone(a,n,b,c)
 int *a;
 int *b;
 register int *c;
@@ -414,7 +433,7 @@ register int *c;
 	return(k);
 }
 
-newcand(x,y,pred)
+int newcand(x,y,pred)
 {
 	register struct cand *q;
 	clist = (struct cand *)ralloc((char *)clist,++clen*sizeof(cand));
@@ -425,7 +444,7 @@ newcand(x,y,pred)
 	return(clen-1);
 }
 
-search(c, k, y)
+int search(c, k, y)
 int *c;
 {
 	register int i, j, l;
@@ -449,7 +468,7 @@ int *c;
 	return(l+1);
 }
 
-unravel(p)
+void unravel(p)
 {
 	register int i;
 	register struct cand *q;
@@ -466,7 +485,7 @@ unravel(p)
 to confounding by hashing (which result in "jackpot")
 2.  collect random access indexes to the two files */
 
-check()
+void check()
 {
 	register int i, j;
 	int jackpot;
@@ -565,7 +584,7 @@ check()
 */
 }
 
-sort(a,n)	/*shellsort CACM #201*/
+void sort(a,n)	/*shellsort CACM #201*/
 struct line *a;
 {
 	struct line w;
@@ -586,8 +605,8 @@ struct line *a;
 				if(aim < ai)
 					break;	/*wraparound*/
 				if(aim->value > ai[0].value ||
-				   aim->value == ai[0].value &&
-				   aim->serial > ai[0].serial)
+				  (aim->value == ai[0].value &&
+				   aim->serial > ai[0].serial))
 					break;
 				w.value = ai[0].value;
 				ai[0].value = aim->value;
@@ -600,7 +619,7 @@ struct line *a;
 	}
 }
 
-unsort(f, l, b)
+void unsort(f, l, b)
 struct line *f;
 int *b;
 {
@@ -614,9 +633,9 @@ int *b;
 	free((char *)a);
 }
 
-skipline(f)
+int skipline(f)
 {
-	register i, c;
+	register int i, c;
 
 	for(i=1;(c=getc(input[f]))!='\n';i++)
 		if (c < 0)
@@ -624,7 +643,7 @@ skipline(f)
 	return(i);
 }
 
-output()
+void output()
 {
 	int m;
 	register int i0, i1, j1;
@@ -691,7 +710,7 @@ struct	context_vec	*context_vec_start,
    and this means that there were lines appended (beginning at b).
    If c is greater than d then there are lines missing from the to file.
 */
-change(a,b,c,d)
+void change(a,b,c,d)
 {
 	int ch;
 	int lowa,upb,lowc,upd;
@@ -781,7 +800,7 @@ change(a,b,c,d)
 	}
 }
 
-range(a,b,separator)
+void range(a,b,separator)
 char *separator;
 {
 	printf("%d", a>b?b:a);
@@ -790,7 +809,7 @@ char *separator;
 	}
 }
 
-fetch(f,a,b,lb,s,oldfile)
+void fetch(f,a,b,lb,s,oldfile)
 long *f;
 FILE *lb;
 char *s;
@@ -869,13 +888,13 @@ char *s;
  * arranging line in 7-bit bytes and then
  * summing 1-s complement in 16-bit hunks 
  */
-readhash(f)
+int readhash(f)
 register FILE *f;
 {
 	register long sum;
 	register unsigned shift;
-	register t;
-	register space;
+	register int t;
+	register int space;
 
 	sum = 1;
 	space = 0;
@@ -931,12 +950,12 @@ register FILE *f;
 		}
 	}
 	sum = low(sum) + high(sum);
-	return((short)low(sum) + (short)high(sum));
+	return((int)low(sum) + (int)high(sum));
 }
 
 #include <a.out.h>
 
-asciifile(f)
+int asciifile(f)
 	FILE *f;
 {
 	char buf[BUFSIZ];
@@ -960,7 +979,7 @@ asciifile(f)
 
 
 /* dump accumulated "context" diff changes */
-dump_context_vec()
+void dump_context_vec()
 {
 	register int	a, b, c, d;
 	register char	ch;
@@ -1003,15 +1022,15 @@ dump_context_vec()
 				ch = (a <= b) ? 'd' : 'a';
 
 			if (ch == 'a')
-				fetch(ixold,lowa,b,input[0],"  ");
+				fetch(ixold,lowa,b,input[0],"  ", 0);
 			else {
-				fetch(ixold,lowa,a-1,input[0],"  ");
-				fetch(ixold,a,b,input[0],ch == 'c' ? "! " : "- ");
+				fetch(ixold,lowa,a-1,input[0],"  ", 0);
+				fetch(ixold,a,b,input[0],ch == 'c' ? "! " : "- ", 0);
 			}
 			lowa = b + 1;
 			cvp++;
 		}
-		fetch(ixold, b+1, upb, input[0], "  ");
+		fetch(ixold, b+1, upb, input[0], "  ", 0);
 	}
 
 	/* output changes to the "new" file */
@@ -1037,15 +1056,15 @@ dump_context_vec()
 				ch = (a <= b) ? 'd' : 'a';
 
 			if (ch == 'd')
-				fetch(ixnew,lowc,d,input[1],"  ");
+				fetch(ixnew,lowc,d,input[1],"  ", 0);
 			else {
-				fetch(ixnew,lowc,c-1,input[1],"  ");
-				fetch(ixnew,c,d,input[1],ch == 'c' ? "! " : "+ ");
+				fetch(ixnew,lowc,c-1,input[1],"  ", 0);
+				fetch(ixnew,c,d,input[1],ch == 'c' ? "! " : "+ ", 0);
 			}
 			lowc = d + 1;
 			cvp++;
 		}
-		fetch(ixnew, d+1, upd, input[1], "  ");
+		fetch(ixnew, d+1, upd, input[1], "  ", 0);
 	}
 
 	context_vec_ptr = context_vec_start - 1;