|
|
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.