Blame


1 c42a1d3d 2006-02-21 devnull #include "a.h"
2 c42a1d3d 2006-02-21 devnull
3 c42a1d3d 2006-02-21 devnull /*
4 c42a1d3d 2006-02-21 devnull * 10. Input and Output Conventions and Character Translation.
5 c42a1d3d 2006-02-21 devnull */
6 c42a1d3d 2006-02-21 devnull
7 c42a1d3d 2006-02-21 devnull /* set escape character */
8 c42a1d3d 2006-02-21 devnull void
9 c42a1d3d 2006-02-21 devnull r_ec(int argc, Rune **argv)
10 c42a1d3d 2006-02-21 devnull {
11 c42a1d3d 2006-02-21 devnull if(argc == 1)
12 c42a1d3d 2006-02-21 devnull backslash = '\\';
13 c42a1d3d 2006-02-21 devnull else
14 c42a1d3d 2006-02-21 devnull backslash = argv[1][0];
15 c42a1d3d 2006-02-21 devnull }
16 c42a1d3d 2006-02-21 devnull
17 c42a1d3d 2006-02-21 devnull /* turn off escape character */
18 c42a1d3d 2006-02-21 devnull void
19 c42a1d3d 2006-02-21 devnull r_eo(int argc, Rune **argv)
20 c42a1d3d 2006-02-21 devnull {
21 c42a1d3d 2006-02-21 devnull USED(argc);
22 c42a1d3d 2006-02-21 devnull USED(argv);
23 c42a1d3d 2006-02-21 devnull backslash = -2;
24 c42a1d3d 2006-02-21 devnull }
25 c42a1d3d 2006-02-21 devnull
26 c42a1d3d 2006-02-21 devnull /* continuous underline (same as ul in troff) for the next N lines */
27 c42a1d3d 2006-02-21 devnull /* set underline font */
28 c42a1d3d 2006-02-21 devnull void
29 c42a1d3d 2006-02-21 devnull g_uf(int argc, Rune **argv)
30 c42a1d3d 2006-02-21 devnull {
31 c42a1d3d 2006-02-21 devnull USED(argc);
32 c42a1d3d 2006-02-21 devnull USED(argv);
33 c42a1d3d 2006-02-21 devnull }
34 c42a1d3d 2006-02-21 devnull
35 c42a1d3d 2006-02-21 devnull /* set control character */
36 c42a1d3d 2006-02-21 devnull void
37 c42a1d3d 2006-02-21 devnull r_cc(int argc, Rune **argv)
38 c42a1d3d 2006-02-21 devnull {
39 c42a1d3d 2006-02-21 devnull if(argc == 1)
40 c42a1d3d 2006-02-21 devnull dot = '.';
41 c42a1d3d 2006-02-21 devnull else
42 c42a1d3d 2006-02-21 devnull dot = argv[1][0];
43 c42a1d3d 2006-02-21 devnull }
44 c42a1d3d 2006-02-21 devnull
45 c42a1d3d 2006-02-21 devnull /* set no-break control character */
46 c42a1d3d 2006-02-21 devnull void
47 c42a1d3d 2006-02-21 devnull r_c2(int argc, Rune **argv)
48 c42a1d3d 2006-02-21 devnull {
49 c42a1d3d 2006-02-21 devnull if(argc == 1)
50 c42a1d3d 2006-02-21 devnull tick = '\'';
51 c42a1d3d 2006-02-21 devnull else
52 c42a1d3d 2006-02-21 devnull tick = argv[1][0];
53 c42a1d3d 2006-02-21 devnull }
54 c42a1d3d 2006-02-21 devnull
55 c42a1d3d 2006-02-21 devnull /* output translation */
56 c42a1d3d 2006-02-21 devnull
57 c42a1d3d 2006-02-21 devnull int
58 c42a1d3d 2006-02-21 devnull e_bang(void)
59 c42a1d3d 2006-02-21 devnull {
60 c42a1d3d 2006-02-21 devnull Rune *line;
61 fa325e9b 2020-01-10 cross
62 c42a1d3d 2006-02-21 devnull line = readline(CopyMode);
63 c42a1d3d 2006-02-21 devnull out(line);
64 c42a1d3d 2006-02-21 devnull outrune('\n');
65 c42a1d3d 2006-02-21 devnull free(line);
66 c42a1d3d 2006-02-21 devnull return 0;
67 c42a1d3d 2006-02-21 devnull }
68 c42a1d3d 2006-02-21 devnull
69 c42a1d3d 2006-02-21 devnull int
70 c42a1d3d 2006-02-21 devnull e_X(void)
71 c42a1d3d 2006-02-21 devnull {
72 d3e79f5b 2008-11-11 rsc int c, c1;
73 fa325e9b 2020-01-10 cross
74 d3e79f5b 2008-11-11 rsc c1 = getrune();
75 d3e79f5b 2008-11-11 rsc if(c1 < 0 || c1 == '\n') {
76 d3e79f5b 2008-11-11 rsc c = c1;
77 d3e79f5b 2008-11-11 rsc c1 = 0;
78 d3e79f5b 2008-11-11 rsc } else {
79 d3e79f5b 2008-11-11 rsc while((c = getrune()) >= 0 && c != c1 && c != '\n')
80 d3e79f5b 2008-11-11 rsc ;
81 d3e79f5b 2008-11-11 rsc }
82 c42a1d3d 2006-02-21 devnull if(c == '\n'){
83 c42a1d3d 2006-02-21 devnull warn("newline in %CX'...'", backslash);
84 c42a1d3d 2006-02-21 devnull outrune(c);
85 c42a1d3d 2006-02-21 devnull }
86 c42a1d3d 2006-02-21 devnull if(c < 0)
87 c42a1d3d 2006-02-21 devnull warn("eof in %CX'...'", backslash);
88 c42a1d3d 2006-02-21 devnull return 0;
89 c42a1d3d 2006-02-21 devnull }
90 c42a1d3d 2006-02-21 devnull
91 c42a1d3d 2006-02-21 devnull int
92 c42a1d3d 2006-02-21 devnull e_quote(void)
93 c42a1d3d 2006-02-21 devnull {
94 c42a1d3d 2006-02-21 devnull int c;
95 c42a1d3d 2006-02-21 devnull
96 c42a1d3d 2006-02-21 devnull if(inputmode&ArgMode){
97 c42a1d3d 2006-02-21 devnull /* Leave \" around for argument parsing */
98 c42a1d3d 2006-02-21 devnull ungetrune('"');
99 c42a1d3d 2006-02-21 devnull return '\\';
100 c42a1d3d 2006-02-21 devnull }
101 c42a1d3d 2006-02-21 devnull while((c = getrune()) >= 0 && c != '\n')
102 c42a1d3d 2006-02-21 devnull ;
103 c42a1d3d 2006-02-21 devnull return '\n';
104 c42a1d3d 2006-02-21 devnull }
105 c42a1d3d 2006-02-21 devnull
106 c42a1d3d 2006-02-21 devnull int
107 c42a1d3d 2006-02-21 devnull e_newline(void)
108 c42a1d3d 2006-02-21 devnull {
109 c42a1d3d 2006-02-21 devnull return 0;
110 c42a1d3d 2006-02-21 devnull }
111 c42a1d3d 2006-02-21 devnull
112 c42a1d3d 2006-02-21 devnull int
113 c42a1d3d 2006-02-21 devnull e_e(void)
114 c42a1d3d 2006-02-21 devnull {
115 c42a1d3d 2006-02-21 devnull return backslash;
116 c42a1d3d 2006-02-21 devnull }
117 c42a1d3d 2006-02-21 devnull
118 c42a1d3d 2006-02-21 devnull void
119 c42a1d3d 2006-02-21 devnull r_comment(Rune *name)
120 c42a1d3d 2006-02-21 devnull {
121 c42a1d3d 2006-02-21 devnull int c;
122 fa325e9b 2020-01-10 cross
123 c42a1d3d 2006-02-21 devnull USED(name);
124 c42a1d3d 2006-02-21 devnull while((c = getrune()) >= 0 && c != '\n')
125 c42a1d3d 2006-02-21 devnull ;
126 c42a1d3d 2006-02-21 devnull }
127 c42a1d3d 2006-02-21 devnull
128 c42a1d3d 2006-02-21 devnull void
129 c42a1d3d 2006-02-21 devnull t10init(void)
130 c42a1d3d 2006-02-21 devnull {
131 c42a1d3d 2006-02-21 devnull addreq(L("ec"), r_ec, -1);
132 c42a1d3d 2006-02-21 devnull addreq(L("eo"), r_eo, 0);
133 c42a1d3d 2006-02-21 devnull addreq(L("lg"), r_nop, -1);
134 c42a1d3d 2006-02-21 devnull addreq(L("cc"), r_cc, -1);
135 c42a1d3d 2006-02-21 devnull addreq(L("c2"), r_c2, -1);
136 c42a1d3d 2006-02-21 devnull addreq(L("tr"), r_warn, -1);
137 c42a1d3d 2006-02-21 devnull addreq(L("ul"), r_nop, -1);
138 c42a1d3d 2006-02-21 devnull addraw(L("\\\""), r_comment);
139 fa325e9b 2020-01-10 cross
140 c42a1d3d 2006-02-21 devnull addesc('!', e_bang, 0);
141 c42a1d3d 2006-02-21 devnull addesc('X', e_X, 0);
142 c42a1d3d 2006-02-21 devnull addesc('\"', e_quote, CopyMode|ArgMode);
143 c42a1d3d 2006-02-21 devnull addesc('\n', e_newline, CopyMode|ArgMode|HtmlMode);
144 c42a1d3d 2006-02-21 devnull addesc('e', e_e, 0);
145 c42a1d3d 2006-02-21 devnull }