|
|
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: fprintf(stderr, "vis: can't open %s\n", s);
38: return;
39: }
40: while((c=getc(f)) != EOF)
41: if(sflag)
42: sput(c);
43: else
44: put(c);
45: fclose(f);
46: }
47: sput(c)
48: register c;
49: {
50: if((c>=' ' && c<='~') || c=='\t' || c=='\n')
51: putchar(c);
52: }
53: put(c)
54: register c;
55: {
56: register inc=c;
57: if (c=='\n') {
58: if(lastc == ' ') {
59: putchar('\\');
60: putchar('n');
61: }
62: } else {
63: if (col >= (72-4-2)) {
64: putchar('\\');
65: putchar('\n');
66: putchar('\t');
67: col = 8;
68: }
69: if(tflag && c=='\t')
70: col |= 7;
71: else if (c=='\b' || c=='\\' || c=='\t') {
72: putchar('\\');
73: c = c=='\b'? 'b' : c=='\t'? 't' : '\\';
74: col++;
75: } else if ((c&0200) || c<' ' || c=='\177') {
76: putchar('\\');
77: putchar(((c>>6)&03)+'0');
78: putchar(((c>>3)&07)+'0');
79: c = ( c &07)+'0';
80: col += 3;
81: }
82: col++;
83: }
84: putchar(c);
85: if(c == '\n')
86: col=0;
87: lastc=inc;
88: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.