home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / szadb21b / source / src / unexpand.c < prev    next >
C/C++ Source or Header  |  1990-05-16  |  1KB  |  61 lines

  1. #include <stdio.h>
  2.  
  3. #define MAXLIN 132
  4. #define TABSP 8
  5.  
  6. int             tabs[MAXLIN];
  7.  
  8. main()
  9. {
  10.     int             c, delay, col;
  11.     void            settab();
  12.  
  13.     settab(tabs);
  14.  
  15.     col = delay = 0;
  16.     while (EOF != (c = getchar())) {
  17.     if (MAXLIN <= col) {    /* copy remaining characters on a line */
  18.         do {
  19.         putchar(c);
  20.         } while ('\n' != c && EOF != (c = getchar()));
  21.         col = 0;
  22.     }
  23.     else {
  24.         switch (c) {
  25.         case '\t':
  26.         while (!tabs[col])
  27.             col++;
  28.         case ' ':        /* fallthrough */
  29.         if (!tabs[col]) {
  30.             col += 1;
  31.             continue;    /* do not change delay */
  32.         }
  33.         putchar((delay == col) ? ' ' : '\t');
  34.         col += 1;
  35.         break;
  36.         default:
  37.         while (delay < col) {
  38.             putchar(' ');
  39.             delay += 1;
  40.         }
  41.         putchar(c);
  42.         col = ('\n' == c ? 0 : col + 1);
  43.         break;
  44.         }            /* switch */
  45.     }            /* if (MAXLIN <= col) */
  46.     delay = col;
  47.     }
  48.     exit(0);
  49. }
  50.  
  51. void
  52. settab(tabp)
  53.     short          *tabp;
  54. {
  55.     int             i;
  56.  
  57.     for (i = 1; i <= MAXLIN; i++) {
  58.     *tabp++ = (0 == (i % TABSP));
  59.     }
  60. }
  61.