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