/* * Kwik index generator. */ #include #define TEMP "kwik.tmp" #define FOLD '\001' #define NBUF 128 int width = 80; int rflag; FILE *tfp; char lbuf[NBUF]; char rbuf[NBUF]; char ok[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; main(argc, argv) char *argv[]; { register char *cp; register c, i; FILE *fp; int nf; nf = argc-1; for (i=1; i= argc) usage(); width = atoi(argv[i]); if (width < 2 || width > NBUF) { fprintf(stderr, "Bad width.\n"); exit(1); } --nf; argv[i] = NULL; break; default: usage(); } } } if ((tfp = fopen(TEMP, "w")) == NULL) { fprintf(stderr, "Cannot create temp. file.\n"); exit(1); } if (nf <= 0) rotate(stdin); else for (i=1; i= &rbuf[width]) p1 = rbuf; *p1++ = c; } if (c == FOLD) { p1 = &rbuf[width/2]; while (*p2++) ; --p2; while (p2 > lbuf && (c = *--p2) != FOLD) { if (p1 == rbuf) p1 = &rbuf[width]; *--p1 = c; } } p1 = &rbuf[width]; while (p1 > rbuf) { if (*--p1 != ' ') { ++p1; break; } } p2 = rbuf; while (p2 < p1) putchar(*p2++); putchar('\n'); } } usage() { fprintf(stderr, "Usage: kwik [-r] [-w width] [file ...]\n"); exit(1); }