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