termcodes.c 4.3 KB

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