home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / p / ut-c.lbr / CMP.CZ / CMP.C
Encoding:
C/C++ Source or Header  |  1993-10-25  |  1.6 KB  |  65 lines

  1. /*  cmp.c -- UTOOL. Compare 2 files or file and std input
  2.      for equality.  
  3.      author: David H. Wolen
  4.      last change: 11/23/82
  5.  
  6.      usage: cmp file1 file2
  7.             prog |cmp file1
  8.  
  9.      input:    2 files or file and STDIN
  10.      output:   STDOUT
  11.  
  12.      linkage: a:clink cmp -f dio -ca (uses deff3.crl)
  13. */
  14.  
  15. #include "a:bdscio.h"
  16. #include "dio.h"
  17. #define STDIN 0
  18.  
  19. main(argc,argv)
  20. int  argc;
  21. char *argv[];
  22. {
  23.      char buf1[BUFSIZ], buf2[BUFSIZ], line1[MAXLINE],
  24.           line2[MAXLINE];
  25.      int  isstdin, lineno, m1, m2;
  26.  
  27.      dioinit(&argc,argv);
  28.  
  29.      switch(argc)
  30.           { case 2:      /* stdin and 1 file */
  31.                isstdin=TRUE;
  32.                if(fopen(argv[1],buf2)==ERROR)
  33.                     error("cmp: can't open file");
  34.                break;
  35.             case 3:      /* 2 files */
  36.                isstdin=FALSE;
  37.                if(fopen(argv[1],buf1)==ERROR)
  38.                     error("cmp: can't open file 1");
  39.                if(fopen(argv[2],buf2)==ERROR)
  40.                     error("cmp: can't open file 2");
  41.                break;
  42.             default:
  43.                error("usage: cmp file1 file2 or STDIN file");
  44.           }
  45.  
  46.      lineno=0;
  47.  
  48.      while(1)
  49.           {m1=(isstdin) ? fgets(line1,STDIN) : fgets(line1,buf1);
  50.           m2=fgets(line2,buf2);
  51.           if(!m1 || !m2)
  52.                break;
  53.           lineno++;
  54.           if(!eqs(line1,line2))
  55.                printf("%d\n%s%s",lineno,line1,line2);
  56.           }
  57.  
  58.      if(!m1 && m2)
  59.           out("cmp: eof on file 1");
  60.      else if(!m2 && m1)
  61.           out("cmp: eof on file 2");
  62.  
  63.      dioflush();
  64. }
  65.