BSD 1 development
[unix-history] / s6 / list.c
CommitLineData
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 */
9int ibuf[259];
10extern fout;
11
12char nodols;
13
14main(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}