|
|
1.1 ! root 1: static char *sccsid = "@(#)fold.c 4.2 (Berkeley) 2/9/83"; ! 2: #include <stdio.h> ! 3: /* ! 4: * fold - fold long lines for finite output devices ! 5: * ! 6: * Bill Joy UCB June 28, 1977 ! 7: */ ! 8: ! 9: int fold = 80; ! 10: ! 11: main(argc, argv) ! 12: int argc; ! 13: char *argv[]; ! 14: { ! 15: register c; ! 16: FILE *f; ! 17: char obuf[BUFSIZ]; ! 18: ! 19: argc--, argv++; ! 20: setbuf(stdout, obuf); ! 21: if (argc > 0 && argv[0][0] == '-') { ! 22: fold = 0; ! 23: argv[0]++; ! 24: while (*argv[0] >= '0' && *argv[0] <= '9') ! 25: fold *= 10, fold += *argv[0]++ - '0'; ! 26: if (*argv[0]) { ! 27: printf("Bad number for fold\n"); ! 28: exit(1); ! 29: } ! 30: argc--, argv++; ! 31: } ! 32: do { ! 33: if (argc > 0) { ! 34: if (freopen(argv[0], "r", stdin) == NULL) { ! 35: perror(argv[0]); ! 36: exit(1); ! 37: } ! 38: argc--, argv++; ! 39: } ! 40: for (;;) { ! 41: c = getc(stdin); ! 42: if (c == -1) ! 43: break; ! 44: putch(c); ! 45: } ! 46: } while (argc > 0); ! 47: exit(0); ! 48: } ! 49: ! 50: int col; ! 51: ! 52: putch(c) ! 53: register c; ! 54: { ! 55: register ncol; ! 56: ! 57: switch (c) { ! 58: case '\n': ! 59: ncol = 0; ! 60: break; ! 61: case '\t': ! 62: ncol = (col + 8) &~ 7; ! 63: break; ! 64: case '\b': ! 65: ncol = col ? col - 1 : 0; ! 66: break; ! 67: case '\r': ! 68: ncol = 0; ! 69: break; ! 70: default: ! 71: ncol = col + 1; ! 72: } ! 73: if (ncol > fold) ! 74: putchar('\n'), col = 0; ! 75: putchar(c); ! 76: switch (c) { ! 77: case '\n': ! 78: col = 0; ! 79: break; ! 80: case '\t': ! 81: col += 8; ! 82: col &= ~7; ! 83: break; ! 84: case '\b': ! 85: if (col) ! 86: col--; ! 87: break; ! 88: case '\r': ! 89: col = 0; ! 90: break; ! 91: default: ! 92: col++; ! 93: break; ! 94: } ! 95: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.