home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / sys / Termio.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-16  |  7.9 KB  |  379 lines

  1. /* Copyright (C) 1986-1994 by Digital Mars. $Revision: 1.1.1.1 $ */
  2. #if __SC__ || __RCC__
  3. #pragma once
  4. #endif
  5.  
  6. #ifndef __SYS_TERMIO_H
  7. #define __SYS_TERMIO_H 1
  8.  
  9. #if __cplusplus
  10. extern "C"
  11. {
  12. #endif
  13.  
  14. #ifndef _POSIX_VDISABLE
  15. #define _POSIX_VDISABLE 0
  16. #endif
  17.  
  18. #if !defined(_POSIX_SOURCE)
  19. #define    CTRL(c)    ((c)&037)
  20. #define IBSHIFT 16
  21.  
  22. #define    NCC    8
  23. #endif /* !defined(_POSIX_SOURCE) */ 
  24.  
  25. #define    NCCS    19
  26.  
  27. #include <unistd.h>
  28.  
  29. typedef unsigned char cc_t;
  30. typedef unsigned long speed_t;
  31. #if defined(M_ELF)
  32. typedef unsigned long tcflag_t;
  33. #else
  34. typedef unsigned short tcflag_t;
  35. #endif
  36.  
  37. /* POSIX structure */
  38. struct termios
  39.         {
  40.         tcflag_t        c_iflag;
  41.         tcflag_t        c_oflag;
  42.         tcflag_t        c_cflag;
  43.         tcflag_t        c_lflag;
  44.         cc_t            c_cc[NCCS];
  45.         };
  46.  
  47. /* termios option flags */
  48.  
  49. #define TCIFLUSH        0
  50. #define TCOFLUSH        1
  51. #define TCIOFLUSH       2
  52.  
  53. #define TCOOFF          0
  54. #define TCOON           1
  55. #define TCIOFF          2
  56. #define TCION           3
  57.  
  58. /* System V structure */
  59. #if !defined(_POSIX_SOURCE)
  60. struct termio
  61. {
  62.   unsigned short c_iflag;
  63.   unsigned short c_oflag;
  64.   unsigned short c_cflag;
  65.   unsigned short c_lflag;
  66.   char c_line;
  67.   unsigned char c_cc[NCC];
  68. };
  69.  
  70. struct winsize
  71. {
  72.     unsigned short ws_row;
  73.     unsigned short ws_col;
  74.     unsigned short ws_xpixel;
  75.     unsigned short ws_ypixel;
  76. };
  77.  
  78. #endif
  79.  
  80. /* input modes */
  81. #define IGNBRK 0x1
  82. #define BRKINT 0x2
  83. #define IGNPAR 0x4
  84. #define PARMRK 0x8
  85. #define INPCK  0x10
  86. #define ISTRIP 0x20
  87. #define INLCR  0x40
  88. #define IGNCR  0x80
  89. #define ICRNL  0x100
  90.  
  91. #if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
  92. #define IUCLC  0x200
  93. #define IXANY  0x800
  94. #define IMAXBEL 0020000
  95. #define DOSMODE 0100000
  96. #endif
  97.  
  98. #define IXON   0x400
  99. #define IXOFF  0x1000
  100.  
  101. /* output modes */
  102. #define OPOST  0x1
  103.  
  104. #if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
  105. #define OLCUC  0x2
  106. #define ONLCR  0x4
  107. #define OCRNL  0x8
  108. #define ONOCR  0x10
  109. #define ONLRET 0x20
  110. #define OFILL  0x40
  111. #define OFDEL  0x80
  112. #define NLDLY  0x100
  113. #define NL0    0
  114. #define NL1    0x100
  115. #define CRDLY  0x600
  116. #define CR0    0
  117. #define CR1    0x200
  118. #define CR2    0x400
  119. #define CR3    0x600
  120. #define TABDLY 0x1800
  121. #define TAB0   0
  122. #define TAB1   0x800
  123. #define TAB2   0x1000
  124. #define TAB3   0x1800
  125. #define XTABS  0x1800
  126. #define BSDLY  0x2000
  127. #define BS0    0
  128. #define BS1    0x2000
  129. #define VTDLY  0x4000
  130. #define VT0    0
  131. #define VT1    0x4000
  132. #define FFDLY  0x8000
  133. #define FF0    0
  134. #define FF1    0x8000
  135. #endif
  136.  
  137. #if !defined(_POSIX_SOURCE)
  138. #define PAGEOUT 0x10000
  139. #define WRAP    0x20000
  140.  
  141. /* control modes */
  142. #define CBAUD  0xF
  143. #endif
  144. #define B0     0
  145. #define B50    0x1
  146. #define B75    0x2
  147. #define B110   0x3
  148. #define B134   0x4
  149. #define B150   0x5
  150. #define B200   0x6
  151. #define B300   0x7
  152. #define B600   0x8
  153. #define B1200  0x9
  154. #define B1800  0xA
  155. #define B2400  0xB
  156. #define B4800  0xC
  157. #define B9600  0xD
  158. #define B19200 0xE
  159. #define B38400 0xF
  160. #if !defined(_POSIX_SOURCE)
  161. #define EXTA   0xE
  162. #define EXTB   0xF
  163. #endif
  164. #define CS5    0
  165. #define CS6    0x10
  166. #define CS7    0x20
  167. #define CS8    0x30
  168. #define CSIZE  0x30
  169. #define CSTOPB 0x40
  170. #define CREAD  0x80
  171. #define PARENB 0x100
  172. #define PARODD 0x200
  173. #define HUPCL  0x400
  174. #define CLOCAL 0x800
  175.  
  176. /* stdin modes */
  177. #define ISIG   0x1
  178. #define ICANON 0x2
  179.  
  180. #if !defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
  181. #define XCASE  0x4
  182. #endif
  183.  
  184. #define ECHO   0x8
  185. #define ECHOE  0x10
  186. #define ECHOK  0x20
  187. #define ECHONL 0x40
  188.  
  189. #define NOFLSH 0x80
  190. #define TOSTOP 0x100
  191.  
  192. #if !defined(_POSIX_SOURCE)
  193. #define    ECHOCTL    0001000
  194. #define    ECHOPRT    0002000
  195. #define    ECHOKE    0004000
  196. #define    DEFECHO    0010000
  197. #define    FLUSHO    0020000
  198. #define    PENDIN    0040000
  199.  
  200. #define RCV1EN  0x8000
  201. #define XMT1EN  0x10000
  202. #define LOBLK   0x20000
  203. #define XCLUDE  0x8000
  204. #define CIBAUD    03600000
  205. #define PAREXT    04000000
  206. #endif
  207.  
  208. /* control chars indexes */
  209. #define VINTR  0
  210. #define VQUIT  1
  211. #define VERASE 2
  212. #define VKILL  3
  213. #define VEOF   4
  214. #define VMIN   4
  215. #define VEOL   5
  216. #define VTIME  5
  217. #if !defined(_POSIX_SOURCE)
  218. #define VEOL2  6
  219. #define VSWTCH 7
  220. #endif
  221. #define VSTART 8
  222. #define VSTOP  9
  223. #define VSUSP  10
  224.  
  225. #if !defined(_POSIX_SOURCE) 
  226. #define VDSUSP   11
  227. #define VREPRINT 12
  228. #define VDISCARD 13
  229. #define VWERASE  14
  230. #define VLNEXT   15
  231.  
  232. #define VCEOF   NCC
  233. #define VCEOL   (NCC + 1)
  234.  
  235. #define    CNUL    0
  236. #define    CDEL    0377
  237.  
  238. /* control char values */
  239. #define CNSWTCH 0
  240. #define CEOF    4     /* EOT, cntl D */
  241. #define CERASE    8     /* BS,  cntl H */
  242. #define CKILL    0x15  /* NAK, cntl U */
  243. #define CSTART    0x11  /* DC1, cntl Q */
  244. #define CSTOP    0x13  /* DC3, cntl S */
  245. #define CSWTCH    0x1A  /* SUB, cntl Z */
  246. #define CSUSP    0x1A  /* SUB, cntl Z - POSIX default suspend character */
  247. #define CDSUSP  0x19
  248. #define CQUIT   0x1C  /* FS,  cntl \ */
  249. #define CINTR   0x7F  /* DEL  cntl ? */
  250. #define CESC    0x5C  /* escape char ('\\') */
  251. #define CEOT    04
  252. #define CEOL    0
  253. #define CEOL2   0
  254. #define CRPRNT  CTRL('r')
  255. #define    CFLUSH    CTRL('o')
  256. #define    CWERASE    CTRL('w')
  257. #define CLNEXT  CTRL('v')
  258.  
  259. /* Line discipline IOCTL's. */
  260. #define LDIOC   ('D'<<8)
  261. #define LDOPEN    (LDIOC|0)
  262. #define LDCLOSE    (LDIOC|1)
  263. #define LDCHG    (LDIOC|2)
  264. #define LDGETT    (LDIOC|8)
  265. #define LDSETT    (LDIOC|9)
  266. #define LDSMAP    (LDIOC|10)
  267. #define LDGMAP    (LDIOC|11)
  268. #define LDNMAP    (LDIOC|12)
  269.  
  270. #define DIOC        ('d'<<8)
  271. #define DIOCGETP    (DIOC|8)
  272. #define DIOCSETP    (DIOC|9)
  273.  
  274. #define FIORDCHK    (('f'<<8)|3)
  275.  
  276. /* mouse ioctls. */
  277. #define EVLD_IOC    (LDIOC)
  278. #define LDEV_SETTYPE    (EVLD_IOC|13)
  279. #define LDEV_GETEV    (EVLD_IOC|14)
  280. #define LDEV_ATTACHQ    (EVLD_IOC|15)
  281. #define LDEV_SETRATIO    (EVLD_IOC|16)
  282.  
  283. /* event driver ioctls */
  284. #define    EQIOC        ('Q'<<8)
  285. #define    EQIO_GETQP    (EQIOC|1)
  286. #define    EQIO_SETEMASK    (EQIOC|2)
  287. #define    EQIO_GETEMASK    (EQIOC|3)
  288. #define    EQIO_SUSPEND    (EQIOC|4)
  289. #define    EQIO_RESUME    (EQIOC|5)
  290. #define    EQIO_BLOCK    (EQIOC|6)
  291.  
  292. #define TIOC    ('T'<<8)
  293. #define TCGETA    (1|TIOC)
  294. #define TCSETA    (2|TIOC)
  295. #define TCSETAW    (3|TIOC)
  296. #define TCSETAF    (4|TIOC)
  297. #define TCSBRK    (5|TIOC)
  298. #define TCXONC    (6|TIOC)
  299. #define TCFLSH    (7|TIOC)
  300.  
  301. #define TIOCKBON (TIOC|8)
  302. #define TIOCKBOF (TIOC|9)
  303. #define KBENABLED (TIOC|10)
  304.  
  305. #define TCGETS  (13|TIOC)
  306. #define TCSETS  (14|TIOC)
  307.  
  308. #define TCSETSW (15|TIOC)
  309. #define TCSETSF (16|TIOC)
  310.  
  311. #if defined(M_ELF)
  312. #define TCSANOW   (14|('T'<<8))
  313. #define TCSADRAIN (15|('T'<<8))
  314. #define TCSAFLUSH (16|('T'<<8))
  315. #else
  316. #define TCSANOW    XCSETA
  317. #define TCSADRAIN  XCSETAW
  318. #define TCSAFLUSH  XCSETAF
  319. #define TCSADFLUSH XCSETAF
  320. #endif
  321.  
  322. #define IOCTYPE 0xffffff00
  323.  
  324. #define TCDSET  (32|TIOC)
  325. #define RTS_TOG (33|TIOC)
  326.  
  327. #define TIOCGWINSZ (104|TIOC)
  328. #define TIOCSWINSZ (103|TIOC)
  329.  
  330. #endif /* !defined(_POSIX_SOURCE) */
  331.  
  332. #define IEXTEN  0100000
  333.  
  334. #if defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE)
  335. #define XIOC        (('i'<<24) | ('X'<<16))
  336. #else
  337. #define    XIOC        ('x'<<8)
  338. #endif
  339. #define    O_XIOC        ('x'<<8)
  340.  
  341. #define    O_XCGETA    (O_XIOC|1)
  342. #define    O_XCSETA    (O_XIOC|2)
  343. #define    O_XCSETAW    (O_XIOC|3)
  344. #define    O_XCSETAF    (O_XIOC|4)
  345.  
  346. #define    XCGETA        (XIOC|1)
  347. #define    XCSETA        (XIOC|2)
  348. #define    XCSETAW        (XIOC|3)
  349. #define    XCSETAF        (XIOC|4)
  350.  
  351. #if !__STDC__
  352.  
  353. speed_t __cdecl cfgetispeed (const struct termios *);
  354. speed_t __cdecl cfgetospeed (const struct termios *);
  355. int __cdecl cfsetispeed (struct termios *, speed_t);
  356. int __cdecl cfsetospeed (struct termios *, speed_t);
  357.  
  358. #if !defined(_XOPEN_SOURCE) && !defined(_POSIX_SOURCE)
  359. #ifdef M_ELF
  360. #define tcgetattr(fd, termios_p)        ioctl(fd, TCGETS, termios_p)
  361. #else
  362. #define tcgetattr(fd, termios_p)        ioctl(fd, XCGETA, termios_p)
  363. #endif
  364. #define tcsetattr(fd, opt, termios_p)    ioctl(fd, opt, termios_p)
  365. #define tcflow(fd, action)        ioctl(fd, TCXONC, action)
  366. #define tcflush(fd, queue_select)    ioctl(fd, TCFLSH, queue_select)
  367. #define tcdrain(fd)            ioctl(fd, TCSBRK, 1)
  368. #define tcsendbreak(fd, duration)    ioctl(fd, TCSBRK, 0, duration)
  369. #endif
  370.  
  371. #endif /* !__STDC__ */
  372.  
  373. #if __cplusplus
  374. }
  375. #endif
  376.  
  377. #endif
  378.  
  379.