xref: /csrg-svn/old/uudiff/run1.c (revision 10061)
1*10061Ssam #ifndef lint
2*10061Ssam static char sccsid[] = "@(#)run1.c	4.1 (Berkeley) 01/01/83";
3*10061Ssam #endif
4*10061Ssam 
5*10061Ssam # include "stdio.h"
6*10061Ssam # define LAST "\177\177"
main(argc,argv)7*10061Ssam main (argc,argv)
8*10061Ssam 	char *argv[];
9*10061Ssam {
10*10061Ssam 	FILE *rem, *loc, *cfil;
11*10061Ssam 	char namel[100], namer[100];
12*10061Ssam 	char cname[20], zname[20];
13*10061Ssam 	int mr, ml;
14*10061Ssam 	long suml, sumr;
15*10061Ssam ml=mr=1;
16*10061Ssam loc = fopen(argv[1], "r");
17*10061Ssam rem = fopen (argv[2], "r");
18*10061Ssam cfil = fopen (argv[3], "w");
19*10061Ssam ml = fetch (loc, namel, &suml, ml);
20*10061Ssam mr = fetch (rem, namer, &sumr, mr);
21*10061Ssam while ( ml || mr)
22*10061Ssam 	{
23*10061Ssam 	int x;
24*10061Ssam 	x = strcmp(namel, namer);
25*10061Ssam 	if (x>0) x=1;
26*10061Ssam 	if (x<0) x= -1;
27*10061Ssam 	switch(x)
28*10061Ssam 		{
29*10061Ssam 		case -1: /* name l lower */
30*10061Ssam 			/* check that file is not our zz* tempfile */
31*10061Ssam 			if (notmp(namel, argv[2]))
32*10061Ssam 			printf("Missing on remote system: %s\n",namel);
33*10061Ssam 			ml = fetch (loc, namel, &suml, ml);
34*10061Ssam 			continue;
35*10061Ssam 		case 0: /* match names */
36*10061Ssam 			if (strcmp(namel, LAST)==0)
37*10061Ssam 				exit(0);
38*10061Ssam 			if (suml == sumr)
39*10061Ssam 				printf("Presumed identical: %s\n",namel);
40*10061Ssam 			else
41*10061Ssam 				{
42*10061Ssam 				printf("Differ: %s\n", namel);
43*10061Ssam 				fprintf(cfil, "%s\n", namel);
44*10061Ssam 				}
45*10061Ssam 			ml=fetch(loc, namel, &suml, ml);
46*10061Ssam 			mr=fetch(rem, namer, &sumr, mr);
47*10061Ssam 			continue;
48*10061Ssam 		case 1: /* name 2 lower */
49*10061Ssam 			printf("Extraneous file on remote system: %s\n",namer);
50*10061Ssam 			mr=fetch(rem, namer, &sumr, mr);
51*10061Ssam 			continue;
52*10061Ssam 		default:
53*10061Ssam 			printf("illegal case %d\n", strcmp(namel,namer));
54*10061Ssam 			exit(0);
55*10061Ssam 		}
56*10061Ssam 	}
57*10061Ssam }
fetch(f,s,lp,m)58*10061Ssam fetch (f, s, lp, m)
59*10061Ssam 	FILE *f;
60*10061Ssam 	char *s;
61*10061Ssam 	long *lp;
62*10061Ssam {
63*10061Ssam char b[200];
64*10061Ssam if (m==0 ||fgets(b, 200, f)==0)
65*10061Ssam 	{
66*10061Ssam 	strcpy (s, LAST);
67*10061Ssam 	return (0);
68*10061Ssam 	}
69*10061Ssam sscanf(b, "%s %lo", s, lp);
70*10061Ssam return (1);
71*10061Ssam }
notmp(s1,s2)72*10061Ssam notmp(s1, s2)
73*10061Ssam 	char *s1, *s2;
74*10061Ssam {
75*10061Ssam char bf1[20], bf2[20];
76*10061Ssam strcpy (bf1, s1);
77*10061Ssam strcpy (bf2, s2);
78*10061Ssam bf1[2]= bf2[2] = '0';
79*10061Ssam return (strcmp(bf1, bf2));
80*10061Ssam }
81