home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / sys / termios.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  10.0 KB  |  306 lines

  1. /*
  2.  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  * 
  6.  * The contents of this file constitute Original Code as defined in and
  7.  * are subject to the Apple Public Source License Version 1.1 (the
  8.  * "License").  You may not use this file except in compliance with the
  9.  * License.  Please obtain a copy of the License at
  10.  * http://www.apple.com/publicsource and read it before using this file.
  11.  * 
  12.  * This Original Code and all software distributed under the License are
  13.  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17.  * License for the specific language governing rights and limitations
  18.  * under the License.
  19.  * 
  20.  * @APPLE_LICENSE_HEADER_END@
  21.  */
  22. /* Copyright (c) 1997 Apple Computer, Inc. All Rights Reserved */
  23. /*
  24.  * Copyright (c) 1988, 1989, 1993, 1994
  25.  *    The Regents of the University of California.  All rights reserved.
  26.  *
  27.  * Redistribution and use in source and binary forms, with or without
  28.  * modification, are permitted provided that the following conditions
  29.  * are met:
  30.  * 1. Redistributions of source code must retain the above copyright
  31.  *    notice, this list of conditions and the following disclaimer.
  32.  * 2. Redistributions in binary form must reproduce the above copyright
  33.  *    notice, this list of conditions and the following disclaimer in the
  34.  *    documentation and/or other materials provided with the distribution.
  35.  * 3. All advertising materials mentioning features or use of this software
  36.  *    must display the following acknowledgement:
  37.  *      This product includes software developed by the University of
  38.  *      California, Berkeley and its contributors.
  39.  * 4. Neither the name of the University nor the names of its contributors
  40.  *    may be used to endorse or promote products derived from this software
  41.  *    without specific prior written permission.
  42.  *
  43.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  44.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  45.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  46.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  47.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  48.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  49.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  50.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  51.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  52.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  53.  * SUCH DAMAGE.
  54.  *
  55.  *    @(#)termios.h    8.3 (Berkeley) 3/28/94
  56.  */
  57.  
  58. #ifndef _SYS_TERMIOS_H_
  59. #define _SYS_TERMIOS_H_
  60.  
  61. /*
  62.  * Special Control Characters
  63.  *
  64.  * Index into c_cc[] character array.
  65.  *
  66.  *    Name         Subscript    Enabled by
  67.  */
  68. #define    VEOF        0    /* ICANON */
  69. #define    VEOL        1    /* ICANON */
  70. #ifndef _POSIX_SOURCE
  71. #define    VEOL2        2    /* ICANON together with IEXTEN */
  72. #endif
  73. #define    VERASE        3    /* ICANON */
  74. #ifndef _POSIX_SOURCE
  75. #define VWERASE     4    /* ICANON together with IEXTEN */
  76. #endif
  77. #define VKILL        5    /* ICANON */
  78. #ifndef _POSIX_SOURCE
  79. #define    VREPRINT     6    /* ICANON together with IEXTEN */
  80. #endif
  81. /*            7       spare 1 */
  82. #define VINTR        8    /* ISIG */
  83. #define VQUIT        9    /* ISIG */
  84. #define VSUSP        10    /* ISIG */
  85. #ifndef _POSIX_SOURCE
  86. #define VDSUSP        11    /* ISIG together with IEXTEN */
  87. #endif
  88. #define VSTART        12    /* IXON, IXOFF */
  89. #define VSTOP        13    /* IXON, IXOFF */
  90. #ifndef _POSIX_SOURCE
  91. #define    VLNEXT        14    /* IEXTEN */
  92. #define    VDISCARD    15    /* IEXTEN */
  93. #endif
  94. #define VMIN        16    /* !ICANON */
  95. #define VTIME        17    /* !ICANON */
  96. #ifndef _POSIX_SOURCE
  97. #define VSTATUS        18    /* ICANON together with IEXTEN */
  98. /*            19       spare 2 */
  99. #endif
  100. #define    NCCS        20
  101.  
  102. #ifndef _POSIX_VDISABLE
  103. #define    _POSIX_VDISABLE    0xff
  104. #endif
  105.  
  106. #ifndef _POSIX_SOURCE
  107. #define    CCEQ(val, c)    ((c) == (val) ? (val) != _POSIX_VDISABLE : 0)
  108. #endif
  109.  
  110. /*
  111.  * Input flags - software input processing
  112.  */
  113. #define    IGNBRK        0x00000001    /* ignore BREAK condition */
  114. #define    BRKINT        0x00000002    /* map BREAK to SIGINTR */
  115. #define    IGNPAR        0x00000004    /* ignore (discard) parity errors */
  116. #define    PARMRK        0x00000008    /* mark parity and framing errors */
  117. #define    INPCK        0x00000010    /* enable checking of parity errors */
  118. #define    ISTRIP        0x00000020    /* strip 8th bit off chars */
  119. #define    INLCR        0x00000040    /* map NL into CR */
  120. #define    IGNCR        0x00000080    /* ignore CR */
  121. #define    ICRNL        0x00000100    /* map CR to NL (ala CRMOD) */
  122. #define    IXON        0x00000200    /* enable output flow control */
  123. #define    IXOFF        0x00000400    /* enable input flow control */
  124. #ifndef _POSIX_SOURCE
  125. #define    IXANY        0x00000800    /* any char will restart after stop */
  126. #define IMAXBEL        0x00002000    /* ring bell on input queue full */
  127. #endif  /*_POSIX_SOURCE */
  128.  
  129. /*
  130.  * Output flags - software output processing
  131.  */
  132. #define    OPOST        0x00000001    /* enable following output processing */
  133. #ifndef _POSIX_SOURCE
  134. #define ONLCR        0x00000002    /* map NL to CR-NL (ala CRMOD) */
  135. #define OXTABS        0x00000004    /* expand tabs to spaces */
  136. #define ONOEOT        0x00000008    /* discard EOT's (^D) on output) */
  137. #endif  /*_POSIX_SOURCE */
  138.  
  139. /*
  140.  * Control flags - hardware control of terminal
  141.  */
  142. #ifndef _POSIX_SOURCE
  143. #define    CIGNORE        0x00000001    /* ignore control flags */
  144. #endif
  145. #define CSIZE        0x00000300    /* character size mask */
  146. #define     CS5            0x00000000        /* 5 bits (pseudo) */
  147. #define     CS6            0x00000100        /* 6 bits */
  148. #define     CS7            0x00000200        /* 7 bits */
  149. #define     CS8            0x00000300        /* 8 bits */
  150. #define CSTOPB        0x00000400    /* send 2 stop bits */
  151. #define CREAD        0x00000800    /* enable receiver */
  152. #define PARENB        0x00001000    /* parity enable */
  153. #define PARODD        0x00002000    /* odd parity, else even */
  154. #define HUPCL        0x00004000    /* hang up on last close */
  155. #define CLOCAL        0x00008000    /* ignore modem status lines */
  156. #ifndef _POSIX_SOURCE
  157. #define CCTS_OFLOW    0x00010000    /* CTS flow control of output */
  158. #define CRTSCTS        (CCTS_OFLOW | CRTS_IFLOW)
  159. #define CRTS_IFLOW    0x00020000    /* RTS flow control of input */
  160. #define    CDTR_IFLOW    0x00040000    /* DTR flow control of input */
  161. #define CDSR_OFLOW    0x00080000    /* DSR flow control of output */
  162. #define    CCAR_OFLOW    0x00100000    /* DCD flow control of output */
  163. #define    MDMBUF        0x00100000    /* old name for CCAR_OFLOW */
  164. #endif
  165.  
  166.  
  167. /*
  168.  * "Local" flags - dumping ground for other state
  169.  *
  170.  * Warning: some flags in this structure begin with
  171.  * the letter "I" and look like they belong in the
  172.  * input flag.
  173.  */
  174.  
  175. #ifndef _POSIX_SOURCE
  176. #define    ECHOKE        0x00000001    /* visual erase for line kill */
  177. #endif  /*_POSIX_SOURCE */
  178. #define    ECHOE        0x00000002    /* visually erase chars */
  179. #define    ECHOK        0x00000004    /* echo NL after line kill */
  180. #define ECHO        0x00000008    /* enable echoing */
  181. #define    ECHONL        0x00000010    /* echo NL even if ECHO is off */
  182. #ifndef _POSIX_SOURCE
  183. #define    ECHOPRT        0x00000020    /* visual erase mode for hardcopy */
  184. #define ECHOCTL      0x00000040    /* echo control chars as ^(Char) */
  185. #endif  /*_POSIX_SOURCE */
  186. #define    ISIG        0x00000080    /* enable signals INTR, QUIT, [D]SUSP */
  187. #define    ICANON        0x00000100    /* canonicalize input lines */
  188. #ifndef _POSIX_SOURCE
  189. #define ALTWERASE    0x00000200    /* use alternate WERASE algorithm */
  190. #endif  /*_POSIX_SOURCE */
  191. #define    IEXTEN        0x00000400    /* enable DISCARD and LNEXT */
  192. #define EXTPROC         0x00000800      /* external processing */
  193. #define TOSTOP        0x00400000    /* stop background jobs from output */
  194. #ifndef _POSIX_SOURCE
  195. #define FLUSHO        0x00800000    /* output being flushed (state) */
  196. #define    NOKERNINFO    0x02000000    /* no kernel output from VSTATUS */
  197. #define PENDIN        0x20000000    /* XXX retype pending input (state) */
  198. #endif  /*_POSIX_SOURCE */
  199. #define    NOFLSH        0x80000000    /* don't flush after interrupt */
  200.  
  201. typedef unsigned long    tcflag_t;
  202. typedef unsigned char    cc_t;
  203. typedef long        speed_t;    /* XXX should be unsigned long */
  204.  
  205. struct termios {
  206.     tcflag_t    c_iflag;    /* input flags */
  207.     tcflag_t    c_oflag;    /* output flags */
  208.     tcflag_t    c_cflag;    /* control flags */
  209.     tcflag_t    c_lflag;    /* local flags */
  210.     cc_t        c_cc[NCCS];    /* control chars */
  211.     speed_t        c_ispeed;    /* input speed */
  212.     speed_t        c_ospeed;    /* output speed */
  213. };
  214.  
  215. /*
  216.  * Commands passed to tcsetattr() for setting the termios structure.
  217.  */
  218. #define    TCSANOW        0        /* make change immediate */
  219. #define    TCSADRAIN    1        /* drain output, then change */
  220. #define    TCSAFLUSH    2        /* drain output, flush input */
  221. #ifndef _POSIX_SOURCE
  222. #define TCSASOFT    0x10        /* flag - don't alter h.w. state */
  223. #endif
  224.  
  225. /*
  226.  * Standard speeds
  227.  */
  228. #define B0    0
  229. #define B50    50
  230. #define B75    75
  231. #define B110    110
  232. #define B134    134
  233. #define B150    150
  234. #define B200    200
  235. #define B300    300
  236. #define B600    600
  237. #define B1200    1200
  238. #define    B1800    1800
  239. #define B2400    2400
  240. #define B4800    4800
  241. #define B9600    9600
  242. #define B19200    19200
  243. #define B38400    38400
  244. #ifndef _POSIX_SOURCE
  245. #define B7200    7200
  246. #define B14400    14400
  247. #define B28800    28800
  248. #define B57600    57600
  249. #define B76800    76800
  250. #define B115200    115200
  251. #define B230400    230400
  252. #define EXTA    19200
  253. #define EXTB    38400
  254. #endif  /* !_POSIX_SOURCE */
  255.  
  256. #ifndef KERNEL
  257.  
  258. #define    TCIFLUSH    1
  259. #define    TCOFLUSH    2
  260. #define TCIOFLUSH    3
  261. #define    TCOOFF        1
  262. #define    TCOON        2
  263. #define TCIOFF        3
  264. #define TCION        4
  265.  
  266. #include <sys/cdefs.h>
  267.  
  268. __BEGIN_DECLS
  269. speed_t    cfgetispeed __P((const struct termios *));
  270. speed_t    cfgetospeed __P((const struct termios *));
  271. int    cfsetispeed __P((struct termios *, speed_t));
  272. int    cfsetospeed __P((struct termios *, speed_t));
  273. int    tcgetattr __P((int, struct termios *));
  274. int    tcsetattr __P((int, int, const struct termios *));
  275. int    tcdrain __P((int));
  276. int    tcflow __P((int, int));
  277. int    tcflush __P((int, int));
  278. int    tcsendbreak __P((int, int));
  279.  
  280. #ifndef _POSIX_SOURCE
  281. void    cfmakeraw __P((struct termios *));
  282. int    cfsetspeed __P((struct termios *, speed_t));
  283. #endif /* !_POSIX_SOURCE */
  284. __END_DECLS
  285.  
  286. #endif /* !KERNEL */
  287.  
  288. #ifndef _POSIX_SOURCE
  289.  
  290. /*
  291.  * Include tty ioctl's that aren't just for backwards compatibility
  292.  * with the old tty driver.  These ioctl definitions were previously
  293.  * in <sys/ioctl.h>.
  294.  */
  295. #include <sys/ttycom.h>
  296. #endif
  297.  
  298. /*
  299.  * END OF PROTECTED INCLUDE.
  300.  */
  301. #endif /* !_SYS_TERMIOS_H_ */
  302.  
  303. #ifndef _POSIX_SOURCE
  304. #include <sys/ttydefaults.h>
  305. #endif
  306.