--- diffh.c.orig 1991-11-12 20:31:33 UTC +++ diffh.c @@ -6,6 +6,7 @@ static char sccsid[] = "@(#)diffh.c 4.4 11/27/85"; #include <ctype.h> #include <sys/types.h> #include <sys/stat.h> +#include <stdlib.h> #define C 3 #define RANGE 30 @@ -20,13 +21,24 @@ int bflag; int debug = 0; FILE *file[2]; +/* declarations */ +void error(char *, char *); +char cmp(char *, char *); +void range(long, int); +void change(long, int, long, int, char *); +int output(int, int); +void progerr(char *); +int hardsynch(); +int easysynch(); +void movstr(char *, char *t); +void clrl(int, long); + /* return pointer to line n of file f*/ char *getl(f,n) long n; { register char *t; - char *malloc(); - register delta, nt; + register int delta, nt; again: delta = n - lineno[f]; nt = ntext[f]; @@ -43,11 +55,12 @@ again: t = text[f][nt]; if(t==0) { t = text[f][nt] = malloc(LEN+1); - if(t==NULL) + if(t==NULL) { if(hardsynch()) goto again; else progerr("5"); + } } t = fgets(t,LEN,file[f]); if(t!=NULL) @@ -56,10 +69,10 @@ again: } /*remove thru line n of file f from storage*/ -clrl(f,n) +void clrl(f,n) long n; { - register i,j; + register int i,j; j = n-lineno[f]+1; for(i=0;i+j<ntext[f];i++) movstr(text[f][i+j],text[f][i]); @@ -67,14 +80,14 @@ long n; ntext[f] -= j; } -movstr(s,t) +void movstr(s,t) register char *s, *t; { - while(*t++= *s++) + while((*t++= *s++)) continue; } -main(argc,argv) +int main(argc,argv) char **argv; { char *s0,*s1; @@ -116,10 +129,10 @@ char **argv; } /* synch on C successive matches*/ -easysynch() +int easysynch() { int i,j; - register k,m; + register int k,m; char *s0,*s1; for(i=j=1;i<RANGE&&j<RANGE;i++,j++) { s0 = getl(0,n0+i); @@ -148,9 +161,9 @@ cont2: ; return(0); } -output(a,b) +int output(a,b) { - register i; + register int i; char *s; if(a<0) change(n0-1,0,n1,b,"a"); @@ -179,7 +192,7 @@ output(a,b) return(1); } -change(a,b,c,d,s) +void change(a,b,c,d,s) long a,c; char *s; { @@ -189,7 +202,7 @@ char *s; printf("\n"); } -range(a,b) +void range(a,b) long a; { if(b==INF) @@ -200,7 +213,7 @@ long a; printf("%ld,%ld",a,a+b); } -cmp(s,t) +char cmp(s,t) char *s,*t; { if(debug) @@ -224,20 +237,21 @@ char *f1,*f2; FILE *f; char b[100],*bptr,*eptr; struct stat statbuf; - if(cmp(f1,"-")==0) + if(cmp(f1,"-")==0) { if(cmp(f2,"-")==0) error("can't do - -",""); else return(stdin); + } if(stat(f1,&statbuf)==-1) error("can't access ",f1); if((statbuf.st_mode&S_IFMT)==S_IFDIR) { - for(bptr=b;*bptr= *f1++;bptr++) ; + for(bptr=b;(*bptr= *f1++);bptr++) ; *bptr++ = '/'; for(eptr=f2;*eptr;eptr++) if(*eptr=='/'&&eptr[1]!=0&&eptr[1]!='/') f2 = eptr+1; - while(*bptr++= *f2++) ; + while((*bptr++= *f2++)) ; f1 = b; } f = fopen(f1,"r"); @@ -247,13 +261,13 @@ char *f1,*f2; } -progerr(s) +void progerr(s) char *s; { error("program error ",s); } -error(s,t) +void error(s,t) char *s,*t; { fprintf(stderr,"diffh: %s%s\n",s,t); @@ -261,7 +275,7 @@ char *s,*t; } /*stub for resychronization beyond limits of text buf*/ -hardsynch() +int hardsynch() { change(n0,INF,n1,INF,"c"); printf("---change record omitted\n");