|
|
1.1 root 1: #include <stdio.h>
2: #define STDIN (char *)0
3: int col=0;
4: int lastc=0;
5: int nprintfiles=0;
6: int sflag=0;
7: int tflag=0;
8: main(argc, argv)
9: char *argv[];
10: {
11: while(argc > 1) {
12: --argc; argv++;
13: if(argv[0][0] == '-'){
14: switch(argv[0][1]){
15: case 's':
16: sflag++;
17: break;
18: case 't':
19: tflag++;
20: break;
21: }
22: }else{
23: printfile(argv[0]);
24: nprintfiles++;
25: }
26: }
27: if(nprintfiles == 0)
28: printfile(STDIN);
29: }
30: printfile(s)
31: register char *s;
32: {
33: register c;
34: register FILE *f=s? fopen(s, "r"): stdin;
35: if(f == NULL){
36: perror(s);
37: return;
38: }
39: while((c=getc(f)) != EOF)
40: if(sflag)
41: sput(c);
42: else
43: put(c);
44: fclose(f);
45: }
46: sput(c)
47: register c;
48: {
49: if((c>=' ' && c<='~') || c=='\t' || c=='\n')
50: putchar(c);
51: }
52: put(c)
53: register c;
54: {
55: register inc=c;
56: if (c=='\n') {
57: if(lastc == ' ') {
58: putchar('\\');
59: putchar('n');
60: }
61: } else {
62: if (col >= (72-4-2)) {
63: putchar('\\');
64: putchar('\n');
65: putchar('\t');
66: col = 8;
67: }
68: if(tflag && c=='\t')
69: col |= 7;
70: else if (c=='\b' || c=='\\' || c=='\t') {
71: putchar('\\');
72: c = c=='\b'? 'b' : c=='\t'? 't' : '\\';
73: col++;
74: } else if ((c&0200) || c<' ' || c=='\177') {
75: putchar('\\');
76: putchar(((c>>6)&03)+'0');
77: putchar(((c>>3)&07)+'0');
78: c = ( c &07)+'0';
79: col += 3;
80: }
81: col++;
82: }
83: putchar(c);
84: if(c == '\n')
85: col=0;
86: lastc=inc;
87: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.