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