1 /*
2  * Dropbear - a SSH2 server
3  *
4  * Copyright (c) 2002,2003 Matt Johnston
5  * All rights reserved.
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy
8  * of this software and associated documentation files (the "Software"), to deal
9  * in the Software without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11  * copies of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in
15  * all copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE. */
24 
25 #include "includes.h"
26 #include "termcodes.h"
27 
28 const struct TermCode termcodes[MAX_TERMCODE+1] = {
29 
30 		{0, 0}, /* TTY_OP_END */
31 		{VINTR, TERMCODE_CONTROLCHAR}, /* control character codes */
32 		{VQUIT, TERMCODE_CONTROLCHAR},
33 		{VERASE, TERMCODE_CONTROLCHAR},
34 		{VKILL, TERMCODE_CONTROLCHAR},
35 		{VEOF, TERMCODE_CONTROLCHAR},
36 		{VEOL, TERMCODE_CONTROLCHAR},
37 #ifdef VEOL2
38 		{VEOL2, TERMCODE_CONTROLCHAR},
39 #else
40 		{0, 0},
41 #endif
42 		{VSTART, TERMCODE_CONTROLCHAR},
43 		{VSTOP, TERMCODE_CONTROLCHAR},
44 		{VSUSP, TERMCODE_CONTROLCHAR},
45 #ifdef VDSUSP
46 		{VDSUSP, TERMCODE_CONTROLCHAR},
47 #else
48 		{0, 0},
49 #endif
50 #ifdef VREPRINT
51 		{VREPRINT, TERMCODE_CONTROLCHAR},
52 #else
53 		{0, 0},
54 #endif
55 #ifdef AIX
56 		{CERASE, TERMCODE_CONTROLCHAR},
57 #else
58 #ifdef VWERASE
59 		{VWERASE, TERMCODE_CONTROLCHAR},
60 #else
61 		{0, 0},
62 #endif
63 #endif
64 #ifdef VLNEXT
65 		{VLNEXT, TERMCODE_CONTROLCHAR},
66 #else
67 		{0, 0},
68 #endif
69 #ifdef VFLUSH
70 		{VFLUSH, TERMCODE_CONTROLCHAR},
71 #else
72 		{0, 0},
73 #endif
74 #ifdef VSWTCH
75 		{VSWTCH, TERMCODE_CONTROLCHAR},
76 #else
77 		{0, 0},
78 #endif
79 #ifdef VSTATUS
80 		{VSTATUS, TERMCODE_CONTROLCHAR},
81 #else
82 		{0, 0},
83 #endif
84 #ifdef AIX
85 		{CKILL, TERMCODE_CONTROLCHAR},
86 #elif defined(VDISCARD)
87 		{VDISCARD, TERMCODE_CONTROLCHAR},
88 #else
89 		{0, 0},
90 #endif
91 		{0, 0}, /* 19 */
92 		{0, 0},
93 		{0, 0},
94 		{0, 0},
95 		{0, 0},
96 		{0, 0},
97 		{0, 0},
98 		{0, 0},
99 		{0, 0},
100 		{0, 0},
101 		{0, 0}, /* 29 */
102 		{IGNPAR, TERMCODE_INPUT}, /* input flags */
103 		{PARMRK, TERMCODE_INPUT},
104 		{INPCK, TERMCODE_INPUT},
105 		{ISTRIP, TERMCODE_INPUT},
106 		{INLCR, TERMCODE_INPUT},
107 		{IGNCR, TERMCODE_INPUT},
108 		{ICRNL, TERMCODE_INPUT},
109 #ifdef IUCLC
110 		{IUCLC, TERMCODE_INPUT},
111 #else
112 		{0, 0},
113 #endif
114 		{IXON, TERMCODE_INPUT},
115 		{IXANY, TERMCODE_INPUT},
116 		{IXOFF, TERMCODE_INPUT},
117 #ifdef IMAXBEL
118 		{IMAXBEL, TERMCODE_INPUT},
119 #else
120 		{0, 0},
121 #endif
122 		/* IUTF8 isn't standardised in rfc4254 but is likely soon.
123 		 * Implemented by linux and darwin */
124 #ifdef IUTF8
125 		{IUTF8, TERMCODE_INPUT},
126 #else
127 		{0, 0},
128 #endif
129 		{0, 0}, /* 43 */
130 		{0, 0},
131 		{0, 0},
132 		{0, 0},
133 		{0, 0},
134 		{0, 0},
135 		{0, 0}, /* 49 */
136 		{ISIG, TERMCODE_LOCAL}, /* local flags */
137 		{ICANON, TERMCODE_LOCAL},
138 #ifdef XCASE
139 		{XCASE, TERMCODE_LOCAL},
140 #else
141 		{0, 0},
142 #endif
143 		{ECHO, TERMCODE_LOCAL},
144 		{ECHOE, TERMCODE_LOCAL},
145 		{ECHOK, TERMCODE_LOCAL},
146 		{ECHONL, TERMCODE_LOCAL},
147 		{NOFLSH, TERMCODE_LOCAL},
148 		{TOSTOP, TERMCODE_LOCAL},
149 		{IEXTEN, TERMCODE_LOCAL},
150 #ifdef ECHOCTL
151 		{ECHOCTL, TERMCODE_LOCAL},
152 #else
153 		{0, 0},
154 #endif
155 #ifdef ECHOKE
156 		{ECHOKE, TERMCODE_LOCAL},
157 #else
158 		{0, 0},
159 #endif
160 #ifdef PENDIN
161 		{PENDIN, TERMCODE_LOCAL},
162 #else
163 		{0, 0},
164 #endif
165 		{0, 0}, /* 63 */
166 		{0, 0},
167 		{0, 0},
168 		{0, 0},
169 		{0, 0},
170 		{0, 0},
171 		{0, 0}, /* 69 */
172 		{OPOST, TERMCODE_OUTPUT}, /* output flags */
173 #ifdef OLCUC
174 		{OLCUC, TERMCODE_OUTPUT},
175 #else
176 		{0, 0},
177 #endif
178 		{ONLCR, TERMCODE_OUTPUT},
179 #ifdef OCRNL
180 		{OCRNL, TERMCODE_OUTPUT},
181 #else
182 		{0, 0},
183 #endif
184 #ifdef ONOCR
185 		{ONOCR, TERMCODE_OUTPUT},
186 #else
187 		{0, 0},
188 #endif
189 #ifdef ONLRET
190 		{ONLRET, TERMCODE_OUTPUT},
191 #else
192 		{0, 0},
193 #endif
194 		{0, 0}, /* 76 */
195 		{0, 0},
196 		{0, 0},
197 		{0, 0},
198 		{0, 0},
199 		{0, 0},
200 		{0, 0},
201 		{0, 0},
202 		{0, 0},
203 		{0, 0},
204 		{0, 0},
205 		{0, 0},
206 		{0, 0},
207 		{0, 0}, /* 89 */
208 		{CS7, TERMCODE_CONTROL},
209 		{CS8, TERMCODE_CONTROL},
210 		{PARENB, TERMCODE_CONTROL},
211 		{PARODD, TERMCODE_CONTROL}
212 		/* 94 */
213 };
214