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