home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_100 / 110_01 / cmp.c < prev    next >
Text File  |  1984-03-03  |  2KB  |  93 lines

  1. #include "BDSCIO.H"
  2. #define CPM 1
  3. FILE ina, inb;
  4.  
  5. char Ascii;
  6. char Verbose;
  7. char eof;
  8. int npats;
  9. char **patts;
  10. unsigned line, addr;
  11. int ca,cb, cc;
  12.  
  13. main(argc, argv)
  14. char **argv;
  15. {
  16.     char *cp;
  17.  
  18.     eof=Ascii=Verbose=0;
  19.     npats=line=addr=0;
  20.  
  21.     while (--argc) {
  22.         cp = *++argv;
  23.         if(*cp == '-') {
  24.             while( *++cp) {
  25. #ifdef CPM
  26.                 switch(tolower(*cp)) {
  27. #else
  28.                 switch(*cp) {
  29. #endif
  30.                 case 'a':
  31.                     Ascii++; break;
  32.                 case 'l':
  33.                     Verbose++; break;
  34.                 default:    
  35.                     goto usage;
  36.                 }
  37.             }
  38.         }
  39.         else if( !npats && argc) {
  40.             if(argv[0][0]) {
  41.                 npats=argc;
  42.                 patts=argv;
  43.             }
  44.         }
  45.     }
  46.     if(npats != 2) {
  47. usage:
  48.         printf("Usage: cmp [-al] filea fileb\n");
  49.         exit(9);
  50.     }
  51.     if(fopen(patts[0], ina)==ERROR || fopen(patts[1], inb)==ERROR)    {
  52.         printf("Can't open %s and %s\n", patts[0], patts[1]);
  53.         exit(8);
  54.     }
  55.  
  56.     for(;;) {
  57.         ++addr;
  58.         if((ca=getc(ina))==(cb=getc(inb))) {
  59. #ifdef CPM
  60.             if(Ascii && cb==CPMEOF)
  61.                 exit(0);
  62. #endif
  63.             if(cb=='\n')
  64.                 line++;
  65.             if(cb != EOF)
  66.                 continue;
  67.             else
  68.                 exit(0);
  69.         } else {
  70. #ifdef CPM
  71.             if(Ascii) {
  72.                 if(ca==CPMEOF)
  73.                     ca=EOF;
  74.                 if(cb==CPMEOF)
  75.                     cb=EOF;
  76.             }
  77. #endif
  78.     
  79.             if(ca==EOF)
  80.                 eof=1;
  81.             if(cb==EOF)
  82.                 eof=2;
  83.             if(eof)
  84.                 printf("%s is shorter", patts[eof-1]);
  85.             else
  86.                 printf("%s=0%o  %s=0%o", patts[0], ca, patts[1], cb);
  87.             printf(" At line %d character 0%o Record %d\n",line,  addr, addr/SECSIZ);
  88.             if( eof || !Verbose)
  89.                 exit(1);
  90.         }
  91.     }
  92. }
  93.