|
|
1.1 root 1: #include "stdio.h"
2: #define MAX 8192
3: char tab = '\t';
4: char *line, *oline;
5: char abuf[MAX], bbuf[MAX];
6: int cnt, ocnt;
7: main()
8: { long lcnt = 0;
9: line = abuf;
10: oline = bbuf;
11: for(; !feof(stdin); ) {
12: lcnt++;
13: (void) fgets(line, MAX, stdin);
14: if(feof(stdin)) cnt = 0;
15: else cnt = strlen(line);
16: if(cnt >= MAX-1) {
17: fprintf(stderr, "line %ld too long\n", lcnt);
18: cnt = 0;
19: }
20: output();
21: }
22: exit(0);
23: }
24: output()
25: { unsigned short u;
26: char *p;
27: if(ocnt <= 1) { /* oline was used to give ooline a newline */
28: swtch();
29: return;
30: }
31: if(cnt != 1) /* line isnt a newline to be added to oline */
32: oline[--ocnt] = 0;
33: else oline[ocnt] = 0;
34: for(p = oline; *p && *p != tab; p++);
35: u = p - oline;
36: (void) fwrite((char *)&u, 1, sizeof(u), stdout);
37: (void) fwrite(oline, (int)u, 1, stdout);
38: if(*p == tab)
39: p++;
40: if(oline + ocnt - p < 0)
41: u = 0;
42: else u = oline + ocnt - p;
43: (void) fwrite((char *)&u, 1, sizeof(u), stdout);
44: (void) fwrite(p, (int)u, 1, stdout);
45: swtch();
46: }
47: swtch()
48: { char *x;
49: x = line;
50: line = oline;
51: oline = x;
52: ocnt = cnt;
53: }
54: static char VER[] = "\n80/2/13:btran.c\n";
55: /*1111100011110011*/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.