|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that the above copyright notice and this paragraph are ! 7: * duplicated in all such forms and that any documentation, ! 8: * advertising materials, and other materials related to such ! 9: * distribution and use acknowledge that the software was developed ! 10: * by the University of California, Berkeley. The name of the ! 11: * University may not be used to endorse or promote products derived ! 12: * from this software without specific prior written permission. ! 13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 16: */ ! 17: ! 18: #ifndef lint ! 19: char copyright[] = ! 20: "@(#) Copyright (c) 1980 Regents of the University of California.\n\ ! 21: All rights reserved.\n"; ! 22: #endif /* not lint */ ! 23: ! 24: #ifndef lint ! 25: static char sccsid[] = "@(#)fold.c 5.2 (Berkeley) 6/29/88"; ! 26: #endif /* not lint */ ! 27: ! 28: #include <stdio.h> ! 29: /* ! 30: * fold - fold long lines for finite output devices ! 31: * ! 32: * Bill Joy UCB June 28, 1977 ! 33: */ ! 34: ! 35: int fold = 80; ! 36: ! 37: main(argc, argv) ! 38: int argc; ! 39: char *argv[]; ! 40: { ! 41: register c; ! 42: FILE *f; ! 43: ! 44: argc--, argv++; ! 45: if (argc > 0 && argv[0][0] == '-') { ! 46: fold = 0; ! 47: argv[0]++; ! 48: while (*argv[0] >= '0' && *argv[0] <= '9') ! 49: fold *= 10, fold += *argv[0]++ - '0'; ! 50: if (*argv[0]) { ! 51: printf("Bad number for fold\n"); ! 52: exit(1); ! 53: } ! 54: argc--, argv++; ! 55: } ! 56: do { ! 57: if (argc > 0) { ! 58: if (freopen(argv[0], "r", stdin) == NULL) { ! 59: perror(argv[0]); ! 60: exit(1); ! 61: } ! 62: argc--, argv++; ! 63: } ! 64: for (;;) { ! 65: c = getc(stdin); ! 66: if (c == -1) ! 67: break; ! 68: putch(c); ! 69: } ! 70: } while (argc > 0); ! 71: exit(0); ! 72: } ! 73: ! 74: int col; ! 75: ! 76: putch(c) ! 77: register c; ! 78: { ! 79: register ncol; ! 80: ! 81: switch (c) { ! 82: case '\n': ! 83: ncol = 0; ! 84: break; ! 85: case '\t': ! 86: ncol = (col + 8) &~ 7; ! 87: break; ! 88: case '\b': ! 89: ncol = col ? col - 1 : 0; ! 90: break; ! 91: case '\r': ! 92: ncol = 0; ! 93: break; ! 94: default: ! 95: ncol = col + 1; ! 96: } ! 97: if (ncol > fold) ! 98: putchar('\n'), col = 0; ! 99: putchar(c); ! 100: switch (c) { ! 101: case '\n': ! 102: col = 0; ! 103: break; ! 104: case '\t': ! 105: col += 8; ! 106: col &= ~7; ! 107: break; ! 108: case '\b': ! 109: if (col) ! 110: col--; ! 111: break; ! 112: case '\r': ! 113: col = 0; ! 114: break; ! 115: default: ! 116: col++; ! 117: break; ! 118: } ! 119: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.