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