termcodes.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. #include "includes.h"
  25. #include "termcodes.h"
  26. const struct TermCode termcodes[MAX_TERMCODE+1] = {
  27. {0, 0}, /* TTY_OP_END */
  28. {VINTR, TERMCODE_CONTROLCHAR}, /* control character codes */
  29. {VQUIT, TERMCODE_CONTROLCHAR},
  30. {VERASE, TERMCODE_CONTROLCHAR},
  31. {VKILL, TERMCODE_CONTROLCHAR},
  32. {VEOF, TERMCODE_CONTROLCHAR},
  33. {VEOL, TERMCODE_CONTROLCHAR},
  34. {VEOL2, TERMCODE_CONTROLCHAR},
  35. {VSTART, TERMCODE_CONTROLCHAR},
  36. {VSTOP, TERMCODE_CONTROLCHAR},
  37. {VSUSP, TERMCODE_CONTROLCHAR},
  38. #ifdef VDSUSP
  39. {VDSUSP, TERMCODE_CONTROLCHAR},
  40. #else
  41. {0, 0},
  42. #endif
  43. #ifdef VREPRINT
  44. {VREPRINT, TERMCODE_CONTROLCHAR},
  45. #else
  46. {0, 0},
  47. #endif
  48. #ifdef AIX
  49. {CERASE, TERMCODE_CONTROLCHAR},
  50. #else
  51. {VWERASE, TERMCODE_CONTROLCHAR},
  52. #endif
  53. {VLNEXT, TERMCODE_CONTROLCHAR},
  54. #ifdef VFLUSH
  55. {VFLUSH, TERMCODE_CONTROLCHAR},
  56. #else
  57. {0, 0},
  58. #endif
  59. #ifdef VSWTCH
  60. {VSWTCH, TERMCODE_CONTROLCHAR},
  61. #else
  62. {0, 0},
  63. #endif
  64. #ifdef VSTATUS
  65. {VSTATUS, TERMCODE_CONTROLCHAR},
  66. #else
  67. {0, 0},
  68. #endif
  69. #ifdef AIX
  70. {CKILL, TERMCODE_CONTROLCHAR},
  71. #elif defined(VDISCARD)
  72. {VDISCARD, TERMCODE_CONTROLCHAR},
  73. #else
  74. {0, 0},
  75. #endif
  76. {0, 0}, /* 19 */
  77. {0, 0},
  78. {0, 0},
  79. {0, 0},
  80. {0, 0},
  81. {0, 0},
  82. {0, 0},
  83. {0, 0},
  84. {0, 0},
  85. {0, 0},
  86. {0, 0}, /* 29 */
  87. {IGNPAR, TERMCODE_INPUT}, /* input flags */
  88. {PARMRK, TERMCODE_INPUT},
  89. {INPCK, TERMCODE_INPUT},
  90. {ISTRIP, TERMCODE_INPUT},
  91. {INLCR, TERMCODE_INPUT},
  92. {IGNCR, TERMCODE_INPUT},
  93. {ICRNL, TERMCODE_INPUT},
  94. #ifdef IUCLC
  95. {IUCLC, TERMCODE_INPUT},
  96. #else
  97. {0, 0},
  98. #endif
  99. {IXON, TERMCODE_INPUT},
  100. {IXANY, TERMCODE_INPUT},
  101. {IXOFF, TERMCODE_INPUT},
  102. #ifdef IMAXBEL
  103. {IMAXBEL, TERMCODE_INPUT},
  104. #else
  105. {0, 0},
  106. #endif
  107. /* IUTF8 isn't standardised in rfc4254 but is likely soon.
  108. * Implemented by linux and darwin */
  109. #ifdef IUTF8
  110. {IUTF8, TERMCODE_INPUT},
  111. #else
  112. {0, 0},
  113. #endif
  114. {0, 0}, /* 43 */
  115. {0, 0},
  116. {0, 0},
  117. {0, 0},
  118. {0, 0},
  119. {0, 0},
  120. {0, 0}, /* 49 */
  121. {ISIG, TERMCODE_LOCAL}, /* local flags */
  122. {ICANON, TERMCODE_LOCAL},
  123. #ifdef XCASE
  124. {XCASE, TERMCODE_LOCAL},
  125. #else
  126. {0, 0},
  127. #endif
  128. {ECHO, TERMCODE_LOCAL},
  129. {ECHOE, TERMCODE_LOCAL},
  130. {ECHOK, TERMCODE_LOCAL},
  131. {ECHONL, TERMCODE_LOCAL},
  132. {NOFLSH, TERMCODE_LOCAL},
  133. {TOSTOP, TERMCODE_LOCAL},
  134. {IEXTEN, TERMCODE_LOCAL},
  135. {ECHOCTL, TERMCODE_LOCAL},
  136. {ECHOKE, TERMCODE_LOCAL},
  137. #ifdef PENDIN
  138. {PENDIN, TERMCODE_LOCAL},
  139. #else
  140. {0, 0},
  141. #endif
  142. {0, 0}, /* 63 */
  143. {0, 0},
  144. {0, 0},
  145. {0, 0},
  146. {0, 0},
  147. {0, 0},
  148. {0, 0}, /* 69 */
  149. {OPOST, TERMCODE_OUTPUT}, /* output flags */
  150. #ifdef OLCUC
  151. {OLCUC, TERMCODE_OUTPUT},
  152. #else
  153. {0, 0},
  154. #endif
  155. {ONLCR, TERMCODE_OUTPUT},
  156. #ifdef OCRNL
  157. {OCRNL, TERMCODE_OUTPUT},
  158. #else
  159. {0, 0},
  160. #endif
  161. #ifdef ONOCR
  162. {ONOCR, TERMCODE_OUTPUT},
  163. #else
  164. {0, 0},
  165. #endif
  166. #ifdef ONLRET
  167. {ONLRET, TERMCODE_OUTPUT},
  168. #else
  169. {0, 0},
  170. #endif
  171. {0, 0}, /* 76 */
  172. {0, 0},
  173. {0, 0},
  174. {0, 0},
  175. {0, 0},
  176. {0, 0},
  177. {0, 0},
  178. {0, 0},
  179. {0, 0},
  180. {0, 0},
  181. {0, 0},
  182. {0, 0},
  183. {0, 0},
  184. {0, 0}, /* 89 */
  185. {CS7, TERMCODE_CONTROL},
  186. {CS8, TERMCODE_CONTROL},
  187. {PARENB, TERMCODE_CONTROL},
  188. {PARODD, TERMCODE_CONTROL}
  189. /* 94 */
  190. };