home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / termios.h < prev    next >
C/C++ Source or Header  |  2004-01-30  |  8KB  |  336 lines

  1. /* sys/termios.h
  2.  
  3.    Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc.
  4.  
  5. This file is part of Cygwin.
  6.  
  7. This software is a copyrighted work licensed under the terms of the
  8. Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
  9. details. */
  10.  
  11. /* sys/termios.h */
  12.  
  13. #ifndef    _SYS_TERMIOS_H
  14. #define _SYS_TERMIOS_H
  15.  
  16. #define    TIOCMGET    0x5415
  17. #define    TIOCMSET    0x5418
  18. #define    TIOCINQ        0x541B    
  19.  
  20. /* TIOCINQ is utilized instead of FIONREAD which has been
  21. accupied for other purposes under CYGWIN.
  22. Other UNIX ioctl requests has been omited because
  23. effects of their work one can achive by standard
  24. POSIX commands */
  25.  
  26.  
  27. #define    TIOCM_DTR    0x002
  28. #define    TIOCM_RTS    0x004
  29. #define    TIOCM_CTS    0x020
  30. #define    TIOCM_CAR    0x040
  31. #define    TIOCM_RNG    0x080
  32. #define    TIOCM_DSR    0x100
  33. #define    TIOCM_CD    TIOCM_CAR
  34. #define    TIOCM_RI    TIOCM_RNG
  35.  
  36. #define TCOOFF        0
  37. #define TCOON        1
  38. #define TCIOFF        2
  39. #define TCION        3
  40.  
  41. #define TCGETA    5
  42. #define TCSETA    6
  43. #define TCSETAW        7
  44. #define TCSETAF        8
  45.  
  46. #define TCIFLUSH    0
  47. #define TCOFLUSH    1
  48. #define TCIOFLUSH    2
  49. #define TCFLSH          3
  50.  
  51. #define TCSAFLUSH    1
  52. #define TCSANOW        2
  53. #define TCSADRAIN    3
  54. #define TCSADFLUSH    4
  55.  
  56. #define TIOCPKT        6
  57.  
  58. #define TIOCPKT_DATA         0
  59. #define TIOCPKT_FLUSHREAD     1
  60. #define TIOCPKT_FLUSHWRITE     2
  61. #define TIOCPKT_STOP         4
  62. #define TIOCPKT_START         8
  63. #define TIOCPKT_NOSTOP        16
  64. #define TIOCPKT_DOSTOP        32
  65.  
  66. #define FIONBIO 0x8004667e /* To be compatible with socket version */
  67.  
  68. #define CTRL(ch)    ((ch)&0x1F)
  69.  
  70. #define CNUL    0
  71. #define CDEL    0x0007f
  72. #define CESC    '\\'
  73. #define CINTR    CTRL('C')
  74. #define CQUIT    0x0001c
  75. #define CERASE    CTRL('H')
  76. #define CKILL    CTRL('U')
  77. #define CEOT    CTRL('D')
  78. #define CEOL    0
  79. #define CEOL2    0
  80. #define CEOF    CTRL('D')
  81. #define CSTART    CTRL('Q')
  82. #define CSTOP    CTRL('S')
  83. #define CSWTCH    0x0001a
  84. #define NSWTCH    0
  85. #define CSUSP    CTRL('Z')
  86. #define CDSUSP    CTRL('Y')
  87. #define CRPRNT    CTRL('R')
  88. #define CFLUSH    CTRL('O')
  89. #define CWERASE    CTRL('W')
  90. #define CLNEXT    CTRL('V')
  91.  
  92. /* iflag bits */
  93. #define IGNBRK    0x00001
  94. #define BRKINT    0x00002
  95. #define IGNPAR    0x00004
  96. #define IMAXBEL    0x00008
  97. #define INPCK    0x00010
  98. #define ISTRIP    0x00020
  99. #define INLCR    0x00040
  100. #define IGNCR    0x00080
  101. #define ICRNL    0x00100
  102. #define IXON    0x00400
  103. #define IXOFF    0x01000
  104. #define IUCLC    0x04000
  105. #define IXANY    0x08000
  106. #define PARMRK    0x10000
  107.  
  108. /* oflag bits */
  109.  
  110. #define OPOST    0x00001
  111. #define OLCUC    0x00002
  112. #define OCRNL    0x00004
  113. #define ONLCR    0x00008
  114. #define ONOCR    0x00010
  115. #define ONLRET    0x00020
  116. #define OFILL    0x00040
  117. #define CRDLY    0x00180
  118. #define CR0    0x00000
  119. #define CR1    0x00080
  120. #define CR2    0x00100
  121. #define CR3    0x00180
  122. #define NLDLY    0x00200
  123. #define NL0    0x00000
  124. #define NL1    0x00200
  125. #define BSDLY    0x00400
  126. #define BS0    0x00000
  127. #define BS1    0x00400
  128. #define TABDLY    0x01800
  129. #define TAB0    0x00000
  130. #define TAB1    0x00800
  131. #define TAB2    0x01000
  132. #define TAB3    0x01800
  133. #define XTABS    0x01800
  134. #define VTDLY    0x02000
  135. #define VT0    0x00000
  136. #define VT1    0x02000
  137. #define FFDLY    0x04000
  138. #define FF0    0x00000
  139. #define FF1    0x04000
  140. #define OFDEL    0x08000
  141.  
  142. /* cflag bits */
  143.  
  144. /* Baud rate values.  These must fit in speed_t, which is unsigned
  145.    char.  See also the extended baud rates below.  These baud rates
  146.    set an additional bit. */
  147. #define CBAUD     0x0100f
  148. #define B0     0x00000
  149. #define B50     0x00001
  150. #define B75     0x00002
  151. #define B110     0x00003
  152. #define B134     0x00004
  153. #define B150     0x00005
  154. #define B200     0x00006
  155. #define B300     0x00007
  156. #define B600     0x00008
  157. #define B1200     0x00009
  158. #define B1800     0x0000a
  159. #define B2400     0x0000b
  160. #define B4800     0x0000c
  161. #define B9600     0x0000d
  162. #define B19200     0x0000e
  163. #define B38400     0x0000f
  164.  
  165. #define CSIZE     0x00030
  166. #define CS5     0x00000
  167. #define CS6     0x00010
  168. #define CS7     0x00020
  169. #define CS8     0x00030
  170. #define CSTOPB     0x00040
  171. #define CREAD     0x00080
  172. #define PARENB     0x00100
  173. #define PARODD     0x00200
  174. #define HUPCL     0x00400
  175. #define CLOCAL     0x00800
  176. #define CBAUDEX     0x0100f
  177. #define B57600     0x01001
  178. #define B115200     0x01002
  179. #define B128000     0x01003
  180. #define B230400  0x01004
  181. #define B256000     0x01005
  182. #define CRTSXOFF 0x04000
  183. #define CRTSCTS     0x08000
  184.  
  185. /* lflag bits */
  186. #define ISIG    0x0001
  187. #define ICANON    0x0002
  188. #define ECHO    0x0004
  189. #define ECHOE    0x0008
  190. #define ECHOK    0x0010
  191. #define ECHONL    0x0020
  192. #define NOFLSH    0x0040
  193. #define TOSTOP    0x0080
  194. #define IEXTEN    0x0100
  195. #define FLUSHO    0x0200
  196. #define ECHOKE    0x0400
  197. #define ECHOCTL    0x0800
  198.  
  199. #define VDISCARD    1
  200. #define VEOL        2
  201. #define VEOL2        3
  202. #define VEOF        4
  203. #define VERASE        5
  204. #define VINTR        6
  205. #define VKILL        7
  206. #define VLNEXT        8
  207. #define VMIN        9
  208. #define VQUIT        10
  209. #define VREPRINT    11
  210. #define VSTART        12
  211. #define VSTOP        13
  212. #define VSUSP        14
  213. #define VSWTC        15
  214. #define VTIME        16
  215. #define VWERASE    17
  216.  
  217. #define NCCS        18
  218.  
  219. /* `c_cc' member of 'struct termios' structure can be disabled by
  220.    using the value _POSIX_VDISABLE.  */
  221. #define    _POSIX_VDISABLE    '\0'
  222.  
  223. /* Compare a character C to a value VAL from the `c_cc' array in a
  224.    `struct termios'.  If VAL is _POSIX_VDISABLE, no character can match it.  */
  225. #define CCEQ(val, c)    ((c) == (val) && (val) != _POSIX_VDISABLE)
  226.  
  227. typedef unsigned char cc_t;
  228. typedef unsigned int  tcflag_t;
  229. typedef unsigned int  speed_t;
  230. typedef unsigned short otcflag_t;
  231. typedef unsigned char ospeed_t;
  232.  
  233. struct __oldtermios {
  234.     otcflag_t    c_iflag;
  235.     otcflag_t    c_oflag;
  236.     otcflag_t    c_cflag;
  237.     otcflag_t    c_lflag;
  238.     char        c_line;
  239.     cc_t        c_cc[NCCS];
  240.     ospeed_t    c_ispeed;
  241.     ospeed_t    c_ospeed;
  242. };
  243.  
  244. struct termios {
  245.     tcflag_t    c_iflag;
  246.     tcflag_t    c_oflag;
  247.     tcflag_t    c_cflag;
  248.     tcflag_t    c_lflag;
  249.     char        c_line;
  250.     cc_t        c_cc[NCCS];
  251.     speed_t        c_ispeed;
  252.     speed_t        c_ospeed;
  253. };
  254.  
  255. #ifdef CYGWIN_VERSION_DLL_IS_OLD_TERMIOS
  256. #ifdef __GNUC__
  257. # define __tonew_termios(ti) \
  258.   ({ \
  259.     struct termios *__newti; \
  260.    \
  261.     if (!CYGWIN_VERSION_DLL_IS_OLD_TERMIOS) \
  262.       __newti = (struct termios *) ti; \
  263.     else \
  264.       { \
  265.     __newti = (struct termios *) alloca(sizeof(struct termios)); \
  266.     __newti->c_iflag = ((struct __oldtermios *)ti)->c_iflag; \
  267.     __newti->c_oflag = ((struct __oldtermios *)ti)->c_oflag; \
  268.     __newti->c_cflag = ((struct __oldtermios *)ti)->c_cflag; \
  269.     __newti->c_lflag = ((struct __oldtermios *)ti)->c_lflag; \
  270.     __newti->c_line = ((struct __oldtermios *)ti)->c_line; \
  271.     __newti->c_ispeed = ((struct __oldtermios *)ti)->c_ispeed; \
  272.     __newti->c_ospeed = ((struct __oldtermios *)ti)->c_ospeed; \
  273.     memcpy (__newti->c_cc, ((struct __oldtermios *)ti)->c_cc, sizeof(__newti->c_cc)); \
  274.       } \
  275.     __newti; \
  276.   })
  277.  
  278. # define __makenew_termios(ti) \
  279.   (CYGWIN_VERSION_DLL_IS_OLD_TERMIOS ? \
  280.    (struct termios *) alloca (sizeof (struct termios)) : (ti))
  281.  
  282. # define __toapp_termios(toti, fromti) \
  283.   ({ \
  284.     if (!CYGWIN_VERSION_DLL_IS_OLD_TERMIOS) \
  285.       toti = fromti; \
  286.     else \
  287.       { \
  288.     ((struct __oldtermios *)toti)->c_iflag = fromti->c_iflag; \
  289.     ((struct __oldtermios *)toti)->c_oflag = fromti->c_oflag; \
  290.     ((struct __oldtermios *)toti)->c_cflag = fromti->c_cflag; \
  291.     ((struct __oldtermios *)toti)->c_lflag = fromti->c_lflag; \
  292.     ((struct __oldtermios *)toti)->c_line = fromti->c_line; \
  293.     ((struct __oldtermios *)toti)->c_ispeed = fromti->c_ispeed; \
  294.     ((struct __oldtermios *)toti)->c_ospeed = fromti->c_ospeed; \
  295.     memcpy (((struct __oldtermios*)toti)->c_cc, fromti->c_cc, sizeof(fromti->c_cc)); \
  296.       } \
  297.     toti; \
  298.   })
  299. #endif /*__GNUC__*/
  300. #endif
  301.  
  302. #define termio termios
  303.  
  304. #define cfgetospeed(tp)        ((tp)->c_ospeed)
  305. #define cfgetispeed(tp)        ((tp)->c_ispeed)
  306. #define cfsetospeed(tp,s)    (((tp)->c_ospeed = (s)), 0)
  307. #define cfsetispeed(tp,s)    (((tp)->c_ispeed = (s)), 0)
  308.  
  309. #ifdef __cplusplus
  310. extern "C" {
  311. #endif
  312.  
  313. int tcgetattr (int, struct termios *);
  314. int tcsetattr (int, int, const struct termios *);
  315. int tcsendbreak (int, int);
  316. int tcdrain (int);
  317. int tcflush (int, int);
  318. int tcflow (int, int);
  319.  
  320. #ifdef __cplusplus
  321. }
  322. #endif
  323.  
  324. /* Extra stuff to make porting stuff easier.  */
  325. struct winsize
  326. {
  327.   unsigned short ws_row, ws_col;
  328.   unsigned short ws_xpixel, ws_ypixel;
  329. };
  330.  
  331. #define TIOCGWINSZ (('T' << 8) | 1)
  332. #define TIOCSWINSZ (('T' << 8) | 2)
  333. #define TIOCLINUX  (('T' << 8) | 3)
  334.  
  335. #endif    /* _SYS_TERMIOS_H */
  336.