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

  1. /* Copyright (c) 1979 Regents of the University of California */
  2. #include <stdio.h>
  3. /*
  4.  * ssp - single space output
  5.  *
  6.  * Bill Joy UCB August 25, 1977
  7.  *
  8.  * Compress multiple empty lines to a single empty line.
  9.  * Option - compresses to nothing.
  10.  */
  11.  
  12. char    poof, hadsome;
  13.  
  14. int    ibuf[256];
  15.  
  16.  
  17. main(argc, argv)
  18.     int argc;
  19.     char *argv[];
  20. {
  21.     register int c;
  22.     FILE *f;
  23.  
  24.     argc--, argv++;
  25.     do {
  26.         while (argc > 0 && argv[0][0] == '-') {
  27.             poof = 1;
  28.             argc--, argv++;
  29.         }
  30.     f = stdin;
  31.         if (argc > 0) {
  32.             if ((f=fopen(argv[0], "r")) == NULL) {
  33.                 fflush(f);
  34.                 perror(argv[0]);
  35.                 exit(1);
  36.             }
  37.             argc--, argv++;
  38.         }
  39.         for (;;) {
  40.             c = getc(f);
  41.             if (c == -1)
  42.                 break;
  43.             if (c != '\n') {
  44.                 hadsome = 1;
  45.                 putchar(c);
  46.                 continue;
  47.             }
  48.             /*
  49.              * Eat em up
  50.              */
  51.             if (hadsome)
  52.                 putchar('\n');
  53.             c = getc(f);
  54.             if (c == -1)
  55.                 break;
  56.             if (c != '\n') {
  57.                 putchar(c);
  58.                 hadsome = 1;
  59.                 continue;
  60.             }
  61.             do
  62.                 c = getc(f);
  63.             while (c == '\n');
  64.             if (!poof && hadsome)
  65.                 putchar('\n');
  66.             if (c == -1)
  67.                 break;
  68.             putchar(c);
  69.             hadsome = 1;
  70.         }
  71.     } while (argc > 0);
  72. }
  73.