Commit | Line | Data |
---|---|---|
987467a7 BJ |
1 | # |
2 | /* | |
3 | * list - a cat like program which prints lines like the editor 'list' command | |
4 | * | |
5 | * Bill Joy UCB June 18, 1977 | |
6 | * | |
7 | * Option - suppresses $ at end of line | |
8 | */ | |
9 | int ibuf[259]; | |
10 | extern fout; | |
11 | ||
12 | char nodols; | |
13 | ||
14 | main(argc, argv) | |
15 | int argc; | |
16 | char *argv[]; | |
17 | { | |
18 | register c; | |
19 | ||
20 | fout = dup(1); | |
21 | argc--, argv++; | |
22 | if (argc > 1 && argv[0][0] == '-') | |
23 | nodols++, argc--, argv++; | |
24 | do { | |
25 | if (argc > 0) { | |
26 | if (fopen(argv[0], ibuf) < 0) { | |
27 | flush(); | |
28 | perror(argv[0]); | |
29 | flush(); | |
30 | exit(1); | |
31 | } | |
32 | argc--, argv++; | |
33 | } | |
34 | for (;;) { | |
35 | c = getc(ibuf); | |
36 | if (c == -1) | |
37 | break; | |
38 | if (c < ' ') | |
39 | switch (c) { | |
40 | case '\n': | |
41 | if (!nodols) | |
42 | putchar('$'); | |
43 | break; | |
44 | case '\t': | |
45 | c = '>'; | |
46 | break; | |
47 | case '\b': | |
48 | c = '<'; | |
49 | break; | |
50 | default: | |
51 | putchar('\\'); | |
52 | putchar((c >> 3) | '0'); | |
53 | c =& 07; | |
54 | c =| '0'; | |
55 | break; | |
56 | } | |
57 | putchar(c); | |
58 | } | |
59 | } while (argc > 0); | |
60 | flush(); | |
61 | exit(0); | |
62 | } |