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