home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / see.c < prev    next >
C/C++ Source or Header  |  1980-02-17  |  961b  |  60 lines

  1. /* Copyright (c) 1979 Regents of the University of California */
  2. #include <stdio.h>
  3.  
  4. /*
  5.  * see - a cat like program which prints like the ex "print" command.
  6.  * It always prints backspaces as "^H".
  7.  *
  8.  * Bill Joy UCB July 13, 1978
  9.  *
  10.  */
  11. int    noeol;
  12.  
  13. main(argc, argv)
  14.     int argc;
  15.     char *argv[];
  16. {
  17.     register c;
  18.     char obuf[BUFSIZ];
  19.  
  20.     setbuf(stdout, obuf);
  21.     argc--, argv++;
  22.     if (argc > 0 && argv[0][0] == '-')
  23.         noeol++, argc--, argv++;
  24.     do {
  25.         if (argc > 0) {
  26.             if (freopen(argv[0], "r", stdin) == 0) {
  27.                 perror(argv[0]);
  28.                 exit(1);
  29.             }
  30.             argc--, argv++;
  31.         }
  32.         for (;;) {
  33.             c = getchar();
  34.             if (c == -1)
  35.                 break;
  36.             c &= 0177;
  37.             if (c == 0177)
  38.                 putchar('^'), c = '?';
  39.             if (c == 033)
  40.                 c = '$';
  41.             if (c < ' ')
  42.                 switch (c) {
  43.  
  44.                 case '\n':
  45.                     break;
  46.  
  47.                 default:
  48.                     putchar('^');
  49.                     c |= 0100;
  50.                 }
  51.             if (c == '\n' && !noeol)
  52.                 putchar('$');
  53.             putchar(c);
  54.             if (c == '\n')
  55.                 fflush(stdout);
  56.         }
  57.     } while (argc > 0);
  58.     exit(0);
  59. }
  60.