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