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