Commit | Line | Data |
---|---|---|
6a956020 BJ |
1 | #include <stdio.h> |
2 | ||
3 | /* | |
4 | * see - a cat like program which prints like the ex "print" command. | |
5 | * It always prints backspaces as "^H". | |
6 | * | |
7 | * Bill Joy UCB July 13, 1978 | |
8 | * | |
9 | */ | |
10 | int noeol; | |
11 | ||
12 | main(argc, argv) | |
13 | int argc; | |
14 | char *argv[]; | |
15 | { | |
16 | register c; | |
17 | char obuf[BUFSIZ]; | |
18 | ||
19 | setbuf(stdout, obuf); | |
20 | argc--, argv++; | |
21 | if (argc > 0 && argv[0][0] == '-') | |
22 | noeol++, argc--, argv++; | |
23 | do { | |
24 | if (argc > 0) { | |
25 | if (freopen(argv[0], "r", stdin) == 0) { | |
26 | perror(argv[0]); | |
27 | exit(1); | |
28 | } | |
29 | argc--, argv++; | |
30 | } | |
31 | for (;;) { | |
32 | c = getchar(); | |
33 | if (c == -1) | |
34 | break; | |
35 | c &= 0177; | |
36 | if (c == 0177) | |
37 | putchar('^'), c = '?'; | |
38 | if (c == 033) | |
39 | c = '$'; | |
40 | if (c < ' ') | |
41 | switch (c) { | |
42 | ||
43 | case '\n': | |
44 | break; | |
45 | ||
46 | default: | |
47 | putchar('^'); | |
48 | c |= 0100; | |
49 | } | |
50 | if (c == '\n' && !noeol) | |
51 | putchar('$'); | |
52 | putchar(c); | |
53 | if (c == '\n') | |
54 | fflush(stdout); | |
55 | } | |
56 | } while (argc > 0); | |
57 | exit(0); | |
58 | } |