home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / s1 / cmp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1975-05-13  |  1.3 KB  |  91 lines

  1. int    ibuf1[259];
  2. int    ibuf2[259];
  3. int    eflg;
  4. int    lflg    1;
  5. int    line[2]    {0, 1};
  6. int    chr[2] { -1, -1};
  7.  
  8. main(argc, argv)
  9. char **argv;
  10. {
  11.     register c1, c2;
  12.     char *arg;
  13.  
  14.     if(argc < 3)
  15.         goto narg;
  16.     arg = argv[1];
  17.     if(arg[0] == '-' && arg[1] == 's') {
  18.         lflg--;
  19.         argv++;
  20.         argc--;
  21.     }
  22.     arg = argv[1];
  23.     if(arg[0] == '-' && arg[1] == 'l') {
  24.         lflg++;
  25.         argv++;
  26.         argc--;
  27.     }
  28.     if(argc < 3)
  29.         goto narg;
  30.     arg = argv[1];
  31.     if( arg[0]=='-' && arg[1]==0 )
  32.         ibuf1[0] = dup(0);
  33.     else if(fopen(arg, ibuf1) < 0)
  34.         goto barg;
  35.     arg = argv[2];
  36.     if(fopen(arg, ibuf2) < 0)
  37.         goto barg;
  38.  
  39. loop:
  40.     if (++chr[1]==0)
  41.         chr[0]++;
  42.     c1 = getc(ibuf1);
  43.     c2 = getc(ibuf2);
  44.     if(c1 == c2) {
  45.         if (c1 == '\n')
  46.             if (++line[1]==0)
  47.                 line[0]++;
  48.         if(c1 == -1) {
  49.             if(eflg)
  50.                 exit(1);
  51.             exit(0);
  52.         }
  53.         goto loop;
  54.     }
  55.     if(lflg == 0)
  56.         exit(1);
  57.     if(c1 == -1) {
  58.         arg = argv[1];
  59.         goto earg;
  60.     }
  61.     if(c2 == -1)
  62.         goto earg;
  63.     if(lflg == 1) {
  64.         printf("%s %s differ: char %s, line ", argv[1], arg,
  65.             locv(chr[0], chr[1]));
  66.         printf("%s\n", locv(line[0], line[1]));
  67.         exit(1);
  68.     }
  69.     eflg = 1;
  70.     printf("%5s %3o %3o\n", locv(chr[0], chr[1]), c1, c2);
  71.     goto loop;
  72.  
  73. narg:
  74.     printf("arg count\n");
  75.     exit(2);
  76.  
  77. barg:
  78.     printf("cannot open %s\n", arg);
  79.     exit(2);
  80.  
  81. earg:
  82.     printf("EOF on %s\n", arg);
  83.     exit(1);
  84. }
  85.  
  86. putchar(c)
  87. {
  88.  
  89.     write(1, &c, 1);
  90. }
  91.