Print this page
10560 Convert termio(7I) to mandoc

Split Close
Expand all
Collapse all
          --- old/usr/src/man/man7i/termio.7i
          +++ new/usr/src/man/man7i/termio.7i
   1      -'\" te
   2    1  .\" Copyright (c) 2005, Sun Microsystems, Inc.  All Rights Reserved.
   3      -.\" Copyright (c) 2014, Joyent, Inc.  All Rights Reserved.
        2 +.\" Copyright 2019, Joyent, Inc.  All Rights Reserved.
   4    3  .\" Copyright 1989 AT&T
   5      -.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
   6      -.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
   7      -.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
   8      -.TH TERMIO 7I "Dec 30, 2016"
   9      -.SH NAME
  10      -termio \- general terminal interface
  11      -.SH SYNOPSIS
  12      -.LP
  13      -.nf
  14      -#include <termio.h>
  15      -
  16      -\fB\fR\fBioctl\fR(\fBint\fR \fIfildes\fR, \fBint\fR \fIrequest\fR, \fBstruct termio *\fR\fIarg\fR);
  17      -.fi
  18      -
  19      -.LP
  20      -.nf
  21      -\fB\fR\fBioctl\fR(\fBint\fR \fIfildes\fR, \fBint\fR \fIrequest\fR, \fBint\fR \fIarg\fR);
  22      -.fi
  23      -
  24      -.LP
  25      -.nf
  26      -#include <termios.h>
  27      -
  28      -\fB\fR\fBioctl\fR(\fBint\fR \fIfildes\fR, \fBint\fR \fIrequest\fR, \fBstruct termios *\fR\fIarg\fR);
  29      -.fi
  30      -
  31      -.SH DESCRIPTION
  32      -.LP
        4 +.\" The contents of this file are subject to the terms of the
        5 +.\" Common Development and Distribution License (the "License").
        6 +.\" You may not use this file except in compliance with the License.
        7 +.\"
        8 +.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
        9 +.\" or http://www.opensolaris.org/os/licensing.
       10 +.\" See the License for the specific language governing permissions
       11 +.\" and limitations under the License.
       12 +.\"
       13 +.\" When distributing Covered Code, include this CDDL HEADER in each
       14 +.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
       15 +.\" If applicable, add the following below this CDDL HEADER, with the
       16 +.\" fields enclosed by brackets "[]" replaced with your own identifying
       17 +.\" information: Portions Copyright [yyyy] [name of copyright owner]
       18 +.Dd March 17, 2019
       19 +.Dt TERMIO 7I
       20 +.Os
       21 +.Sh NAME
       22 +.Nm termio
       23 +.Nd general terminal interface
       24 +.Sh SYNOPSIS
       25 +.In termio.h
       26 +.Fn ioctl "int fildes" "int request" "struct termio *arg"
       27 +.Fn ioctl "int fildes" "int request" "int arg"
       28 +.Pp
       29 +.In termios.h
       30 +.Fn ioctl "int fildes" "int request" "struct termios *arg"
       31 +.Sh DESCRIPTION
  33   32  This release supports a general interface for asynchronous communications ports
  34      -that is hardware-independent. The user interface to this functionality is using
  35      -function calls (the preferred interface) described in \fBtermios\fR(3C) or
  36      -\fBioctl\fR commands described in this section. This section also discusses the
  37      -common features of the  terminal subsystem which are relevant with both user
       33 +that is hardware-independent.
       34 +The user interface to this functionality is using
       35 +function calls (the preferred interface) described in
       36 +.Xr termios 3C
       37 +or
       38 +.Fn ioctl
       39 +commands described in this section.
       40 +This section also discusses the
       41 +common features of the terminal subsystem which are relevant with both user
  38   42  interfaces.
  39      -.sp
  40      -.LP
       43 +.Pp
  41   44  When a terminal file is opened, it normally causes the process to wait until a
  42      -connection is established. In practice, user programs seldom open terminal
       45 +connection is established.
       46 +In practice, user programs seldom open terminal
  43   47  files; they are opened by the system and become a user's standard input,
  44      -output, and error files. The first terminal file opened by the session leader
       48 +output, and error files.
       49 +The first terminal file opened by the session leader
  45   50  that is not already associated with a session becomes the controlling terminal
  46      -for that session. The controlling terminal plays a special role in handling
  47      -quit and interrupt signals, as discussed below. The controlling terminal is
  48      -inherited by a child process during a \fBfork\fR(2). A process can break this
  49      -association by changing its session using \fBsetsid()\fR (see \fBsetsid\fR(2)).
  50      -.sp
  51      -.LP
       51 +for that session.
       52 +The controlling terminal plays a special role in handling
       53 +quit and interrupt signals, as discussed below.
       54 +The controlling terminal is
       55 +inherited by a child process during a
       56 +.Xr fork 2 .
       57 +A process can break this
       58 +association by changing its session using
       59 +.Xr setsid 2 .
       60 +.Pp
  52   61  A terminal associated with one of these files ordinarily operates in
  53      -full-duplex mode. Characters may be typed at any time, even while output is
       62 +full-duplex mode.
       63 +Characters may be typed at any time, even while output is
  54   64  occurring, and are only lost when the character input buffers of the system
  55      -become completely full, which is rare. For example, the number of characters in
  56      -the line discipline buffer may exceed {\fBMAX_CANON\fR}  and  \fBIMAXBEL\fR
  57      -(see below) is not set, or the user may accumulate { \fBMAX_INPUT\fR} number of
  58      -input characters that have not yet been read by some program. When the input
       65 +become completely full, which is rare.
       66 +For example, the number of characters in
       67 +the line discipline buffer may exceed
       68 +.Brq Dv MAX_CANON
       69 +and
       70 +.Dv IMAXBEL
       71 +(see below) is not set, or the user may accumulate
       72 +.Brq Dv MAX_INPUT
       73 +number of input characters that have not yet been read by some program.
       74 +When the input
  59   75  limit is reached, all the characters saved in the buffer up to that point are
  60   76  thrown away without notice.
  61      -.SS "Session Management (Job Control)"
  62      -.LP
       77 +.Ss "Session Management (Job Control)"
  63   78  A control terminal will distinguish one of the process groups in the session
  64      -associated with it to be the  foreground process group. All other process
  65      -groups in the session are designated as background process groups. This
  66      -foreground process group plays a special role in handling signal-generating
  67      -input characters, as discussed below. By default, when a controlling terminal
  68      -is allocated, the controlling process's process group is assigned  as
       79 +associated with it to be the foreground process group.
       80 +All other process
       81 +groups in the session are designated as background process groups.
       82 +This foreground process group plays a special role in handling signal-generating
       83 +input characters, as discussed below.
       84 +By default, when a controlling terminal
       85 +is allocated, the controlling process's process group is assigned as
  69   86  foreground process group.
  70      -.sp
  71      -.LP
       87 +.Pp
  72   88  Background process groups in the controlling process's session are subject to a
  73   89  job control line discipline when they attempt to access their controlling
  74      -terminal. Process groups can be sent signals that will cause them to stop,
  75      -unless they have made other arrangements. An exception is made for members of
       90 +terminal.
       91 +Process groups can be sent signals that will cause them to stop,
       92 +unless they have made other arrangements.
       93 +An exception is made for members of
  76   94  orphaned process groups.
  77      -.sp
  78      -.LP
  79      -An orphaned process group is one where the process group (see \fBgetpgid\fR(2))
       95 +.Pp
       96 +An orphaned process group is one where the process group (see
       97 +.Xr getpgid 2 )
  80   98  has no members with a parent in a different process group but sharing the same
  81      -controlling terminal. When a member of an orphaned process group attempts to
       99 +controlling terminal.
      100 +When a member of an orphaned process group attempts to
  82  101  access its controlling terminal, EIO is returned because there would be no way
  83  102  to restart the process if it were stopped on one of these signals.
  84      -.sp
  85      -.LP
      103 +.Pp
  86  104  If a member of a background process group attempts to read its controlling
  87      -terminal, its process group will be sent a  \fBSIGTTIN\fR signal, which will
  88      -normally cause the members of that process group to stop. If, however, the
  89      -process is ignoring or holding \fBSIGTTIN\fR, or is a member of an orphaned
  90      -process group, the read will fail with \fBerrno\fR set to  \fBEIO\fR, and no
  91      -signal is sent.
  92      -.sp
  93      -.LP
      105 +terminal, its process group will be sent a
      106 +.Dv SIGTTIN
      107 +signal, which will
      108 +normally cause the members of that process group to stop.
      109 +If, however, the
      110 +process is ignoring or holding
      111 +.Dv SIGTTIN ,
      112 +or is a member of an orphaned
      113 +process group, the read will fail with
      114 +.Va errno
      115 +set to
      116 +.Er EIO ,
      117 +and no signal is sent.
      118 +.Pp
  94  119  If a member of a background process group attempts to write its controlling
  95      -terminal and the \fBTOSTOP\fR bit is set in the \fBc_lflag\fR field, its
  96      -process group is sent a \fBSIGTTOU\fR signal, which will normally cause the
  97      -members of that process group to stop. If, however, the process is ignoring or
  98      -holding \fBSIGTTOU\fR, the write will succeed. If the process is not ignoring
  99      -or holding \fBSIGTTOU\fR and is a member of an orphaned process group, the
 100      -write will fail with  \fBerrno\fR set to  \fBEIO\fR, and no signal will be
 101      -sent.
 102      -.sp
 103      -.LP
 104      -If \fBTOSTOP\fR is set and a member of a background process group attempts  to
 105      -\fBioctl\fR its controlling terminal, and that \fBioctl\fR will modify terminal
 106      -parameters (for example, \fBTCSETA\fR, \fBTCSETAW\fR, \fBTCSETAF\fR, or
 107      -\fBTIOCSPGRP)\fR, its process group will be sent a \fBSIGTTOU\fR signal, which
 108      -will normally cause the members of that process group to stop. If, however, the
 109      -process is ignoring or holding \fBSIGTTOU\fR, the ioctl will succeed. If the
 110      -process is not ignoring or holding \fBSIGTTOU\fR and is a member of an orphaned
 111      -process group, the write will fail with  \fBerrno\fR set to \fBEIO\fR, and no
 112      -signal will be sent.
 113      -.SS "Canonical Mode Input Processing"
 114      -.LP
 115      -Normally, terminal input is processed in units of lines. A line is delimited by
 116      -a newline (\fBASCII LF\fR) character, an end-of-file (\fBASCII EOT\fR)
 117      -character, or an end-of-line character. This means that a program attempting to
 118      -read will block until an entire line has been typed. Also, no matter how many
      120 +terminal and the
      121 +.Dv TOSTOP
      122 +bit is set in the
      123 +.Fa c_lflag
      124 +field, its process group is sent a
      125 +.Dv SIGTTOU
      126 +signal, which will normally cause the
      127 +members of that process group to stop.
      128 +If, however, the process is ignoring or
      129 +holding
      130 +.Dv SIGTTOU ,
      131 +the write will succeed.
      132 +If the process is not ignoring
      133 +or holding
      134 +.Dv SIGTTOU
      135 +and is a member of an orphaned process group, the
      136 +write will fail with
      137 +.Va errno
      138 +set to
      139 +.Er EIO ,
      140 +and no signal will be sent.
      141 +.Pp
      142 +If
      143 +.Dv TOSTOP
      144 +is set and a member of a background process group attempts to
      145 +.Fn ioctl
      146 +its controlling terminal, and that
      147 +.Fn ioctl
      148 +will modify terminal parameters (for example,
      149 +.Dv TCSETA ,
      150 +.Dv TCSETAW ,
      151 +.Dv TCSETAF ,
      152 +or
      153 +.Dv TIOCSPGRP ) ,
      154 +its process group will be sent a
      155 +.Dv SIGTTOU
      156 +signal, which will normally cause the members of that process group to stop.
      157 +If, however, the process is ignoring or holding
      158 +.Dv SIGTTOU ,
      159 +the ioctl will succeed.
      160 +If the process is not ignoring or holding
      161 +.Dv SIGTTOU
      162 +and is a member of an orphaned
      163 +process group, the write will fail with
      164 +.Va errno
      165 +set to
      166 +.Er EIO ,
      167 +and no signal will be sent.
      168 +.Ss "Canonical Mode Input Processing"
      169 +Normally, terminal input is processed in units of lines.
      170 +A line is delimited by
      171 +a newline
      172 +.Po
      173 +.Sy ASCII LF
      174 +.Pc
      175 +character, an end-of-file
      176 +.Po
      177 +.Sy ASCII EOT
      178 +.Pc
      179 +character, or an end-of-line character.
      180 +This means that a program attempting to
      181 +read will block until an entire line has been typed.
      182 +Also, no matter how many
 119  183  characters are requested in the read call, at most one line will be returned.
 120  184  It is not necessary, however, to read a whole line at once; any number of
 121  185  characters may be requested in a read, even one, without losing information.
 122      -.sp
 123      -.LP
 124      -During input, erase, erase2, and kill processing is normally done. The
 125      -\fBERASE\fR and \fBERASE2\fR character (by default, the character \fBDEL\fR for \fBERASE\fR and \fBControl-h\fR for \fBERASE2\fR) erases the last character
 126      -typed. The \fBWERASE\fR character (the character  \fBControl-w\fR) erases the
      186 +.Pp
      187 +During input, erase, erase2, and kill processing is normally done.
      188 +The
      189 +.Sy ERASE
      190 +and
      191 +.Sy ERASE2
      192 +character (by default, the character
      193 +.Sy DEL
      194 +for
      195 +.Sy ERASE
      196 +and
      197 +.Sy Control-h
      198 +for
      199 +.Sy ERASE2 )
      200 +erases the last character typed.
      201 +The
      202 +.Sy WERASE
      203 +character (the character
      204 +.Sy Control-w )
      205 +erases the
 127  206  last "word" typed in the current input line (but not any preceding spaces or
 128      -tabs). A "word" is defined as a sequence of non-blank characters, with tabs
 129      -counted as blanks. None of \fBERASE\fR or \fBERASE2\fR or \fBWERASE\fR will
 130      -erase beyond the beginning of the line.  The \fBKILL\fR character (by default,
 131      -the character \fBNAK\fR) kills (deletes) the entire input line, and optionally
 132      -outputs a newline character. All these characters operate on a key stroke basis,
 133      -independent of any backspacing or tabbing that may have been done. The
 134      -\fBREPRINT\fR character (the character Control-r) prints a newline followed by
 135      -all characters that have not been read. Reprinting also occurs automatically if
      207 +tabs).
      208 +A
      209 +.Dq word
      210 +is defined as a sequence of non-blank characters, with tabs counted as blanks.
      211 +None of
      212 +.Sy ERASE
      213 +or
      214 +.Sy ERASE2
      215 +or
      216 +.Sy WERASE
      217 +will erase beyond the beginning of the line.
      218 +The
      219 +.Sy KILL
      220 +character (by default,
      221 +the character
      222 +.Sy NAK )
      223 +kills (deletes) the entire input line, and optionally
      224 +outputs a newline character.
      225 +All these characters operate on a key stroke basis,
      226 +independent of any backspacing or tabbing that may have been done.
      227 +The
      228 +.Sy REPRINT
      229 +character (the character
      230 +.Sy Control-r )
      231 +prints a newline followed by all characters that have not been read.
      232 +Reprinting also occurs automatically if
 136  233  characters that would normally be erased from the screen are fouled by program
 137      -output. The characters are reprinted as if they were being echoed;
 138      -consequencely, if \fBECHO\fR is not set, they are not printed.
 139      -.sp
 140      -.LP
 141      -The \fBERASE\fR, \fBERASE2\fR, and \fBKILL\fR characters may be entered
 142      -literally by preceding them with the escape character. In this case, the
 143      -escape character is not read.  The erase, erase2, and kill characters may be
 144      -changed.
 145      -.SS "Non-canonical Mode Input Processing"
 146      -.LP
      234 +output.
      235 +The characters are reprinted as if they were being echoed;
      236 +consequencely, if
      237 +.Dv ECHO
      238 +is not set, they are not printed.
      239 +.Pp
      240 +The
      241 +.Sy ERASE ,
      242 +.Sy ERASE2 ,
      243 +and
      244 +.Sy KILL
      245 +characters may be entered literally by preceding them with the escape character.
      246 +In this case, the escape character is not read.
      247 +The erase, erase2, and kill characters may be changed.
      248 +.Ss "Non-canonical Mode Input Processing"
 147  249  In non-canonical mode input processing, input characters are not assembled into
 148      -lines, and erase and kill processing does not occur. The \fBMIN\fR and
 149      -\fBTIME\fR values are used to determine how to process the characters received.
 150      -.sp
 151      -.LP
 152      -\fBMIN\fR represents the minimum number of characters that should be received
      250 +lines, and erase and kill processing does not occur.
      251 +The
      252 +.Sy MIN
      253 +and
      254 +.Sy TIME
      255 +values are used to determine how to process the characters received.
      256 +.Pp
      257 +.Sy MIN
      258 +represents the minimum number of characters that should be received
 153  259  when the read is satisfied (that is, when the characters are returned to the
 154      -user). \fBTIME\fR is a timer of 0.10-second granularity that is used to timeout
 155      -bursty and short-term data transmissions. The four possible values for
 156      -\fBMIN\fR and \fBTIME\fR and their interactions are described below.
 157      -.sp
 158      -.ne 2
 159      -.na
 160      -\fBCase A: MIN > 0, TIME > 0\fR
 161      -.ad
 162      -.RS 29n
 163      -In this case, \fBTIME\fR serves as an intercharacter timer and is activated
 164      -after the first character is received.  Since it is an intercharacter timer, it
 165      -is reset after a character is received. The interaction between \fBMIN\fR and
 166      -\fBTIME\fR is as follows: as soon as one character is received, the
 167      -intercharacter timer is started. If  \fBMIN\fR characters are received before
      260 +user).
      261 +.Sy TIME
      262 +is a timer of 0\&.10-second granularity that is used to timeout
      263 +bursty and short-term data transmissions.
      264 +The four possible values for
      265 +.Sy MIN
      266 +and
      267 +.Sy TIME
      268 +and their interactions are described below.
      269 +.Bl -tag -width "Case A: Min > 0, Time > 0"
      270 +.It Sy Case A: MIN > 0, TIME > 0
      271 +In this case,
      272 +.Sy TIME
      273 +serves as an intercharacter timer and is activated
      274 +after the first character is received.
      275 +Since it is an intercharacter timer, it
      276 +is reset after a character is received.
      277 +The interaction between
      278 +.Sy MIN
      279 +and
      280 +.Sy TIME
      281 +is as follows: as soon as one character is received, the
      282 +intercharacter timer is started.
      283 +If
      284 +.Sy MIN
      285 +characters are received before
 168  286  the intercharacter timer expires (note that the timer is reset upon receipt of
 169      -each character), the read is satisfied.  If the timer expires before \fBMIN\fR
      287 +each character), the read is satisfied.
      288 +If the timer expires before
      289 +.Sy MIN
 170  290  characters are received, the characters received to that point are returned to
 171      -the user. Note that if  \fBTIME\fR expires, at least one character will be
 172      -returned because  the timer would not have been enabled unless a character was
 173      -received. In this case (MIN > 0, TIME > 0), the read sleeps until the \fBMIN\fR
 174      -and \fBTIME\fR mechanisms are activated by the receipt of the first character.
      291 +the user.
      292 +Note that if
      293 +.Sy TIME
      294 +expires, at least one character will be
      295 +returned because the timer would not have been enabled unless a character was
      296 +received.
      297 +In this case (MIN > 0, TIME > 0), the read sleeps until the
      298 +.Sy MIN
      299 +and
      300 +.Sy TIME
      301 +mechanisms are activated by the receipt of the first character.
 175  302  If the number of characters read is less than the number of characters
 176  303  available, the timer is not reactivated and the subsequent read is satisfied
 177  304  immediately.
 178      -.RE
 179      -
 180      -.sp
 181      -.ne 2
 182      -.na
 183      -\fBCase B: MIN > 0, TIME = 0\fR
 184      -.ad
 185      -.RS 29n
 186      -In this case, since the value of \fBTIME\fR is zero, the timer plays no role
 187      -and only \fBMIN\fR is significant.  A pending read is not satisfied until
 188      -\fBMIN\fR characters are received (the pending read sleeps until  \fBMIN\fR
 189      -characters are received). A program that uses this case to read record based
 190      -terminal \fBI/O\fR may block indefinitely in the read operation.
 191      -.RE
 192      -
 193      -.sp
 194      -.ne 2
 195      -.na
 196      -\fBCase C: MIN = 0, TIME > 0\fR
 197      -.ad
 198      -.RS 29n
 199      -In this case, since \fBMIN\fR = 0,  \fBTIME\fR no longer represents an
      305 +.It Sy Case B: MIN > 0, TIME = 0
      306 +In this case, since the value of
      307 +.Sy TIME
      308 +is zero, the timer plays no role
      309 +and only
      310 +.Sy MIN
      311 +is significant.
      312 +A pending read is not satisfied until
      313 +.Sy MIN
      314 +characters are received (the pending read sleeps until
      315 +.Sy MIN
      316 +characters are received).
      317 +A program that uses this case to read record based
      318 +terminal
      319 +.Sy I/O
      320 +may block indefinitely in the read operation.
      321 +.It Sy Case C: MIN = 0, TIME > 0
      322 +In this case, since
      323 +.Sy MIN
      324 +0,
      325 +.Sy TIME
      326 +no longer represents an
 200  327  intercharacter timer: it now serves as a read timer that is activated as soon
 201      -as a \fBread\fR is done.  A read is satisfied as soon as a single character is
 202      -received or the read timer expires. Note that, in this case, if the timer
 203      -expires, no character is returned. If the timer does not expire, the only way
 204      -the read can be satisfied is if a  character is received. In this case, the
      328 +as a
      329 +.Xr read  2
      330 +is done.
      331 +A read is satisfied as soon as a single character is
      332 +received or the read timer expires.
      333 +Note that, in this case, if the timer
      334 +expires, no character is returned.
      335 +If the timer does not expire, the only way
      336 +the read can be satisfied is if a character is received.
      337 +In this case, the
 205  338  read will not block indefinitely waiting for a character; if no character is
 206      -received within \fBTIME\fR *.10 seconds after the read is initiated, the read
      339 +received within
      340 +.Sy TIME
      341 +*\&.10 seconds after the read is initiated, the read
 207  342  returns with zero characters.
 208      -.RE
 209      -
 210      -.sp
 211      -.ne 2
 212      -.na
 213      -\fBCase D: MIN = 0, TIME = 0\fR
 214      -.ad
 215      -.RS 29n
 216      -In this case, return is immediate. The minimum of either the number of
      343 +.It Sy Case D: MIN = 0, TIME = 0
      344 +In this case, return is immediate.
      345 +The minimum of either the number of
 217  346  characters requested or the number of characters currently available is
 218  347  returned without waiting for more characters to be input.
 219      -.RE
 220      -
 221      -.SS "Comparing Different Cases of MIN, TIME Interaction"
 222      -.LP
 223      -Some points to note about  \fBMIN\fR and  \fBTIME\fR :
 224      -.RS +4
 225      -.TP
 226      -.ie t \(bu
 227      -.el o
 228      -In the following explanations, note that the interactions of \fBMIN\fR and
 229      -\fBTIME\fR are not symmetric.  For example, when  \fBMIN\fR > 0 and  \fBTIME\fR
 230      -= 0,  \fBTIME\fR has no effect. However, in the opposite case, where  \fBMIN\fR
 231      -= 0 and \fBTIME\fR > 0, both  \fBMIN\fR and  \fBTIME\fR play a role in that
 232      -\fBMIN\fR is satisfied with the receipt of a single character.
 233      -.RE
 234      -.RS +4
 235      -.TP
 236      -.ie t \(bu
 237      -.el o
 238      -Also note that in case A (\fBMIN\fR > 0, \fBTIME\fR > 0), \fBTIME\fR represents
 239      -an intercharacter timer,  whereas in case C ( \fBMIN\fR = 0, \fBTIME\fR > 0),
 240      -\fBTIME\fR represents a read timer.
 241      -.RE
 242      -.sp
 243      -.LP
 244      -These two points highlight the dual purpose of the  \fBMIN/TIME\fR feature.
 245      -Cases A and B, where  \fBMIN\fR > 0, exist to handle burst mode activity (for
      348 +.El
      349 +.Ss "Comparing Different Cases of MIN, TIME Interaction"
      350 +Some points to note about
      351 +.Sy MIN
      352 +and
      353 +.Sy TIME :
      354 +.Bl -bullet -offset 2n
      355 +.It
      356 +In the following explanations, note that the interactions of
      357 +.Sy MIN
      358 +and
      359 +.Sy TIME
      360 +are not symmetric.
      361 +For example, when
      362 +.Sy MIN
      363 +> 0 and
      364 +.Sy TIME
      365 += 0,
      366 +.Sy TIME
      367 +has no effect.
      368 +However, in the opposite case, where
      369 +.Sy MIN
      370 += 0 and
      371 +.Sy TIME
      372 +> 0, both
      373 +.Sy MIN
      374 +and
      375 +.Sy TIME
      376 +play a role in that
      377 +.Sy MIN
      378 +is satisfied with the receipt of a single character.
      379 +.It
      380 +Also note that in case A
      381 +.Po
      382 +.Sy MIN
      383 +> 0,
      384 +.Sy TIME
      385 +> 0
      386 +.Pc ,
      387 +.Sy TIME
      388 +represents
      389 +an intercharacter timer, whereas in case C
      390 +.Po
      391 +.Sy MIN
      392 += 0,
      393 +.Sy TIME
      394 +> 0
      395 +.Pc ,
      396 +.Sy TIME
      397 +represents a read timer.
      398 +.El
      399 +.Pp
      400 +These two points highlight the dual purpose of the
      401 +.Sy MIN/TIME
      402 +feature.
      403 +Cases A and B, where
      404 +.Sy MIN
      405 +> 0, exist to handle burst mode activity (for
 246  406  example, file transfer programs), where a program would like to process at
 247      -least \fBMIN\fR characters at a time. In case A, the intercharacter timer is
      407 +least
      408 +.Sy MIN
      409 +characters at a time.
      410 +In case A, the inteercharacter timer is
 248  411  activated by a user as a safety measure; in case B, the timer is turned off.
 249      -.sp
 250      -.LP
 251      -Cases C and D exist to handle single character, timed transfers. These cases
      412 +.Pp
      413 +Cases C and D exist to handle single character, timed transfers.
      414 +These cases
 252  415  are readily adaptable to screen-based applications that need to know if a
 253      -character is present in the input queue before refreshing the screen. In case
      416 +character is present in the input queue before refreshing the screen.
      417 +In case
 254  418  C, the read is timed, whereas in case D, it is not.
 255      -.sp
 256      -.LP
 257      -Another important note is that \fBMIN\fR is always just a minimum.  It does not
 258      -denote a record length. For example, if a program does a read of 20 bytes,
 259      -\fBMIN\fR is 10, and 25 characters are present, then 20 characters will be
      419 +.Pp
      420 +Another important note is that
      421 +.Sy MIN
      422 +is always just a minimum.
      423 +It does not
      424 +denote a record length.
      425 +For example, if a program does a read of 20 bytes,
      426 +.Sy MIN
      427 +is 10, and 25 characters are present, then 20 characters will be
 260  428  returned to the user.
 261      -.SS "Writing Characters"
 262      -.LP
      429 +.Ss "Writing Characters"
 263  430  When one or more characters are written, they are transmitted to the terminal
 264      -as soon as previously written characters have finished typing. Input characters
 265      -are echoed as they are typed if echoing has been enabled. If a process produces
      431 +as soon as previously written characters have finished typing.
      432 +nputt characters
      433 +are echoed as they are typed if echoing has been enabled.
      434 +If a process produces
 266  435  characters more rapidly than they can be typed, it will be suspended when its
 267      -output queue exceeds some limit. When the queue is drained down to some
      436 +output queue exceeds some limit.
      437 +When the queue is drained down to some
 268  438  threshold, the program is resumed.
 269      -.SS "Special Characters"
 270      -.LP
 271      -Certain characters have special functions on input. These functions and their
 272      -default character values are summarized as follows:
 273      -.sp
 274      -.ne 2
 275      -.na
 276      -\fB\fBINTR\fR\fR
 277      -.ad
 278      -.RS 11n
 279      -(Control-c or \fBASCII ETX\fR) generates a \fBSIGINT\fR signal. \fBSIGINT\fR is
 280      -sent to all foreground processes associated with the controlling terminal.
      439 +.Ss "Special Characters"
      440 +Certain characters have special functions on input.
      441 +These functions and their default character values are summarized as follows:
      442 +.Bl -tag -width REPRINT
      443 +.It Sy INTR
      444 +(Control-c or
      445 +.Sy ASCII ETX )
      446 +generates a
      447 +.Dv SIGINT
      448 +signal.
      449 +.Dv SIGINT
      450 +is sent to all foreground processes associated with the controlling terminal.
 281  451  Normally, each such process is forced to terminate, but arrangements may be
 282  452  made either to ignore the signal or to receive a trap to an agreed upon
 283      -location. (See  \fBsignal.h\fR(3HEAD)).
 284      -.RE
 285      -
 286      -.sp
 287      -.ne 2
 288      -.na
 289      -\fB\fBQUIT\fR\fR
 290      -.ad
 291      -.RS 11n
 292      -(Control-| or \fBASCII FS\fR) generates a \fBSIGQUIT\fR signal.  Its treatment
      453 +location.
      454 +(See
      455 +.Xr signal.h 3HEAD ) .
      456 +.It Sy QUIT
      457 +(Control-| or
      458 +.Sy ASCII FS )
      459 +generates a
      460 +.Dv SIGQUIT
      461 +signal.
      462 +Its treatment
 293  463  is identical to the interrupt signal except that, unless a receiving process
 294  464  has made other arrangements, it will not only be terminated but a core image
 295      -file (called  \fBcore\fR) will be created in the current working directory.
 296      -.RE
 297      -
 298      -.sp
 299      -.ne 2
 300      -.na
 301      -\fB\fBERASE\fR\fR
 302      -.ad
 303      -.RS 11n
 304      -(DEL) erases the preceding character. It does not erase beyond
 305      -the start of a line, as delimited by a \fBNL\fR, \fBEOF\fR, \fBEOL\fR, or
 306      -\fBEOL2\fR character.
 307      -.RE
 308      -
 309      -.sp
 310      -.ne 2
 311      -.na
 312      -\fB\fBERASE2\fR\fR
 313      -.ad
 314      -.RS 11n
 315      -(Control-h or \fBASCII BS\fR) erases the preceding character, with behaviour
 316      -identical to that of ERASE.
 317      -.RE
 318      -
 319      -.sp
 320      -.ne 2
 321      -.na
 322      -\fB\fBWERASE\fR\fR
 323      -.ad
 324      -.RS 11n
 325      -(Control-w or \fBASCII ETX\fR) erases the preceding "word". It does not erase
 326      -beyond the start of a line, as delimited by a \fBNL\fR, \fBEOF\fR, \fBEOL\fR,
 327      -or \fBEOL2\fR character.
 328      -.RE
 329      -
 330      -.sp
 331      -.ne 2
 332      -.na
 333      -\fB\fBKILL\fR\fR
 334      -.ad
 335      -.RS 11n
 336      -(Control-u or \fBASCII NAK\fR) deletes the entire line, as delimited by a
 337      -\fBNL\fR, \fBEOF\fR, \fBEOL\fR, or \fBEOL2\fR character.
 338      -.RE
 339      -
 340      -.sp
 341      -.ne 2
 342      -.na
 343      -\fB\fBREPRINT\fR\fR
 344      -.ad
 345      -.RS 11n
 346      -(Control-r or \fBASCII DC2\fR) reprints all characters, preceded by a newline,
 347      -that have not been read.
 348      -.RE
 349      -
 350      -.sp
 351      -.ne 2
 352      -.na
 353      -\fB\fBEOF\fR\fR
 354      -.ad
 355      -.RS 11n
 356      -(Control-d or \fBASCII EOT\fR) may be used to generate an end-of-file  from a
 357      -terminal. When received, all the characters waiting to be read are immediately
 358      -passed to the program, without waiting for a newline, and the \fBEOF\fR is
 359      -discarded.  Thus, if no characters are waiting (that is, the \fBEOF\fR occurred
      465 +file (called
      466 +.Pa core )
      467 +will be created in the current working directory.
      468 +.It Sy ERASE
      469 +(DEL) erases the preceding character.
      470 +It does not erase beyond
      471 +the start of a line, as delimited by a
      472 +.Sy NL ,
      473 +.Sy EOF ,
      474 +.Sy EOL ,
      475 +or
      476 +.Sy EOL2
      477 +character.
      478 +.It Sy ERASE2
      479 +(Control-h or
      480 +.Sy ASCII BS )
      481 +erases the preceding character, with behaviour identical to that of ERASE.
      482 +.It Sy WERASE
      483 +(Control-w or
      484 +.Sy ASCII ETX )
      485 +erases the preceding
      486 +.Dq word .
      487 +It does not erase beyond the start of a line, as delimited by a
      488 +.Sy NL ,
      489 +.Sy EOF ,
      490 +.Sy EOL ,
      491 +or
      492 +.Sy EOL2
      493 +character.
      494 +.It Sy KILL
      495 +(Control-u or
      496 +.Sy ASCII NAK )
      497 +deletes the entire line, as delimited by a
      498 +.Sy NL ,
      499 +.Sy EOF ,
      500 +.Sy EOL ,
      501 +or
      502 +.Sy EOL2
      503 +character.
      504 +.It Sy REPRINT
      505 +(Control-r or
      506 +.Sy ASCII DC2 )
      507 +reprints all characters, preceded by a newline, that have not been read.
      508 +.It Sy EOF
      509 +(Control-d or
      510 +.Sy ASCII EOT )
      511 +may be used to generate an end-of-file from a terminal.
      512 +When received, all the characters waiting to be read are immediately
      513 +passed to the program, without waiting for a newline, and the
      514 +.Sy EOF
      515 +is discarded.
      516 +Thus, if no characters are waiting (that is, the
      517 +.Sy EOF
      518 +occurred
 360  519  at the beginning of a line) zero characters are passed back, which is the
 361      -standard end-of-file indication. Unless escaped, the \fBEOF\fR character is not
 362      -echoed. Because \fBEOT\fR is the default \fBEOF\fR character, this prevents
 363      -terminals that respond to \fBEOT\fR from hanging up.
 364      -.RE
 365      -
 366      -.sp
 367      -.ne 2
 368      -.na
 369      -\fB\fBNL\fR\fR
 370      -.ad
 371      -.RS 11n
 372      -(ASCII LF) is the normal line delimiter. It cannot be changed or escaped.
 373      -.RE
 374      -
 375      -.sp
 376      -.ne 2
 377      -.na
 378      -\fB\fBEOL\fR\fR
 379      -.ad
 380      -.RS 11n
 381      -(ASCII NULL) is an additional line delimiter, like \fBNL\fR . It is not
 382      -normally used.
 383      -.RE
 384      -
 385      -.sp
 386      -.ne 2
 387      -.na
 388      -\fB\fBEOL2\fR\fR
 389      -.ad
 390      -.RS 11n
      520 +standard end-of-file indication.
      521 +Unless escaped, the
      522 +.Sy EOF
      523 +character is not
      524 +echoed.
      525 +Because
      526 +.Sy EOT
      527 +is the default
      528 +.Sy EOF
      529 +character, this prevents
      530 +terminals that respond to
      531 +.Sy EOT
      532 +from hanging up.
      533 +.It Sy NL
      534 +.Pq Sy ASCII LF
      535 +is the normal line delimiter.
      536 +It cannot be changed or escaped.
      537 +.It Sy EOL
      538 +.Pq Sy ASCII NULL
      539 +is an additional line delimiter, like
      540 +.Sy NL .
      541 +It is not normally used.
      542 +.It Sy EOL2
 391  543  is another additional line delimiter.
 392      -.RE
 393      -
 394      -.sp
 395      -.ne 2
 396      -.na
 397      -\fB\fBSWTCH\fR\fR
 398      -.ad
 399      -.RS 11n
 400      -(Control-z or \fBASCII EM\fR) Header file symbols related to this special
      544 +.It Sy SWTCH
      545 +(Control-z or
      546 +.Sy ASCII EM )
      547 +Header file symbols related to this special
 401  548  character are present for compatibility purposes only and the kernel takes no
 402  549  special action on matching SWTCH (except to discard the character).
 403      -.RE
 404      -
 405      -.sp
 406      -.ne 2
 407      -.na
 408      -\fB\fBSUSP\fR\fR
 409      -.ad
 410      -.RS 11n
 411      -(Control-z or \fBASCII SUB\fR) generates a  \fBSIGTSTP\fR signal. \fBSIGTSTP\fR
      550 +.It Sy SUSP
      551 +(Control-z or
      552 +.Sy ASCII SUB )
      553 +generates a
      554 +.Dv SIGTSTP
      555 +signal.
      556 +.Dv SIGTSTP
 412  557  stops all processes in the foreground process group for that terminal.
 413      -.RE
 414      -
 415      -.sp
 416      -.ne 2
 417      -.na
 418      -\fB\fBDSUSP\fR\fR
 419      -.ad
 420      -.RS 11n
 421      -(Control-y or \fBASCII EM\fR). It generates a \fBSIGTSTP\fR signal as
 422      -\fBSUSP\fR does, but the signal is sent when a process in the foreground
 423      -process group attempts to read the \fBDSUSP\fR character, rather than when it
 424      -is typed.
 425      -.RE
 426      -
 427      -.sp
 428      -.ne 2
 429      -.na
 430      -\fB\fBSTOP\fR\fR
 431      -.ad
 432      -.RS 11n
 433      -(Control-s or \fBASCII DC3\fR) can be used to suspend output temporarily. It is
 434      -useful with \fBCRT\fR terminals to prevent output from disappearing before it
 435      -can be read. While output is suspended, \fBSTOP\fR characters are ignored and
      558 +.It Sy DSUSP
      559 +(Control-y or
      560 +.Sy ASCII EM ) .
      561 +It generates a
      562 +.Dv SIGTSTP
      563 +signal as
      564 +.Sy SUSP
      565 +does, but the signal is sent when a process in the foreground
      566 +process group attempts to read the
      567 +.Sy DSUSP
      568 +character, rather than when it is typed.
      569 +.It Sy STOP
      570 +(Control-s or
      571 +.Sy ASCII DC3 )
      572 +can be used to suspend output temporarily.
      573 +It is useful with
      574 +.Sy CRT
      575 +terminals to prevent output from disappearing before it can be read.
      576 +While output is suspended,
      577 +.Sy STOP
      578 +characters are ignored and
 436  579  not read.
 437      -.RE
 438      -
 439      -.sp
 440      -.ne 2
 441      -.na
 442      -\fB\fBSTART\fR\fR
 443      -.ad
 444      -.RS 11n
 445      -(Control-q or \fBASCII DC1\fR) is used to resume output. Output has been
 446      -suspended by a \fBSTOP\fR character.  While output is not suspended,
 447      -\fBSTART\fR characters are ignored and not read.
 448      -.RE
 449      -
 450      -.sp
 451      -.ne 2
 452      -.na
 453      -\fB\fBDISCARD\fR\fR
 454      -.ad
 455      -.RS 11n
 456      -(Control-o or \fBASCII SI\fR) causes subsequent output to be discarded. Output
 457      -is discarded until another \fBDISCARD\fR character is typed, more input
      580 +.It Sy START
      581 +(Control-q or
      582 +.Sy ASCII DC1 )
      583 +is used to resume output.
      584 +Output has been suspended by a
      585 +.Sy STOP
      586 +character.
      587 +While output is not suspended,
      588 +.Sy START
      589 +characters are ignored and not read.
      590 +.It Sy DISCARD
      591 +(Control-o or
      592 +.Sy ASCII SI )
      593 +causes subsequent output to be discarded.
      594 +Output is discarded until another
      595 +.Sy DISCARD
      596 +character is typed, more input
 458  597  arrives, or the condition is cleared by a program.
 459      -.RE
 460      -
 461      -.sp
 462      -.ne 2
 463      -.na
 464      -\fB\fBSTATUS\fR\fR
 465      -.ad
 466      -.RS 11n
 467      -(Control-t or \fBASCII DC4\fR) generates a \fBSIGINFO\fR signal. Processes with
 468      -a handler will output status information when they receive \fBSIGINFO\fR, for
 469      -example, \fBdd\fR(1M). If a process does not have a \fBSIGINFO\fR handler, the
      598 +.It Sy STATUS
      599 +(Control-t or
      600 +.Sy ASCII DC4 )
      601 +generates a
      602 +.Dv SIGINFO
      603 +signal.
      604 +Processes with a handler will output status information when they receive
      605 +.Dv SIGINFO ,
      606 +for
      607 +example,
      608 +.Xr dd 1M .
      609 +If a process does not have a
      610 +.Dv SIGINFO
      611 +handler, the
 470  612  signal will be ignored.
 471      -.RE
 472      -
 473      -.sp
 474      -.ne 2
 475      -.na
 476      -\fB\fBLNEXT\fR\fR
 477      -.ad
 478      -.RS 11n
 479      -(Control-v or \fBASCII SYN\fR) causes the special meaning of the next character
 480      -to be ignored.  This works for all the special characters mentioned above. It
      613 +.It Sy LNEXT
      614 +(Control-v or
      615 +.Sy ASCII SYN )
      616 +causes the special meaning of the next character to be ignored.
      617 +This works for all the special characters mentioned above.
      618 +It
 481  619  allows characters to be input that would otherwise be interpreted by the system
 482      -(for example \fBKILL, QUIT\fR).  The character values for \fBINTR\fR,
 483      -\fBQUIT\fR, \fBERASE\fR, \fBERASE2\fR, \fBWERASE\fR, \fBKILL\fR, \fBREPRINT\fR,
 484      -\fBEOF\fR, \fBEOL\fR, \fBEOL2\fR, \fBSWTCH\fR, \fBSUSP\fR, \fBDSUSP\fR,
 485      -\fBSTOP\fR, \fBSTART\fR, \fBDISCARD\fR, \fBSTATUS\fR, and \fBLNEXT\fR may be
 486      -changed to suit individual tastes. If the value of a special control character
 487      -is _POSIX_VDISABLE (0), the function of that special control character is
 488      -disabled.
 489      -The \fBERASE\fR, \fBERASE2\fR, \fBKILL\fR, and \fBEOF\fR characters may be
      620 +(for example
      621 +.Sy KILL ,
      622 +.Sy QUIT ) .
      623 +The character values for
      624 +.Sy INTR ,
      625 +.Sy QUIT ,
      626 +.Sy ERASE ,
      627 +.Sy ERASE2 ,
      628 +.Sy WERASE ,
      629 +.Sy KILL ,
      630 +.Sy REPRINT ,
      631 +.Sy EOF ,
      632 +.Sy EOL ,
      633 +.Sy EOL2 ,
      634 +.Sy SWTCH ,
      635 +.Sy SUSP ,
      636 +.Sy DSUSP ,
      637 +.Sy STOP ,
      638 +.Sy START ,
      639 +.Sy DISCARD ,
      640 +.Sy STATUS ,
      641 +and
      642 +.Sy LNEXT
      643 +may be changed to suit individual tastes.
      644 +If the value of a special control character
      645 +is
      646 +.Dv _POSIX_VDISABLE
      647 +(0), the function of that special control character is disabled.
      648 +The
      649 +.Sy ERASE ,
      650 +.Sy ERASE2 ,
      651 +.Sy KILL ,
      652 +and
      653 +.Sy EOF
      654 +characters may be
 490  655  escaped by a preceding backslash (\e) character, in which case no special
 491  656  function is done.
 492      -Any of the special characters may be preceded by the \fBLNEXT\fR character, in
      657 +Any of the special characters may be preceded by the
      658 +.Sy LNEXT
      659 +character, in
 493  660  which case no special function is done.
 494      -.RE
 495      -
 496      -.SS "Modem Disconnect"
 497      -.LP
 498      -When a modem disconnect is detected, a \fBSIGHUP\fR signal is sent to the
 499      -terminal's controlling process. Unless other arrangements have been made, these
 500      -signals cause the process to terminate. If  \fBSIGHUP\fR is ignored or caught,
      661 +.El
      662 +.Ss "Modem Disconnect"
      663 +When a modem disconnect is detected, a
      664 +.Dv SIGHUP
      665 +signal is sent to the
      666 +terminal's controlling process.
      667 +Unless other arrangements have been made, these
      668 +signals cause the process to terminate.
      669 +If
      670 +.Dv SIGHUP
      671 +is ignored or caught,
 501  672  any subsequent read returns with an end-of-file indication until the terminal
 502  673  is closed.
 503      -.sp
 504      -.LP
 505      -If the controlling process is not in the  foreground process group of the
 506      -terminal, a \fBSIGTSTP\fR is sent to the terminal's foreground process group.
      674 +.Pp
      675 +If the controlling process is not in the foreground process group of the
      676 +terminal, a
      677 +.Dv SIGTSTP
      678 +is sent to the terminal's foreground process group.
 507  679  Unless other arrangements have been made, these signals cause the processes to
 508  680  stop.
 509      -.sp
 510      -.LP
      681 +.Pp
 511  682  Processes in background process groups that attempt to access the controlling
 512  683  terminal after modem disconnect while the terminal is still allocated to the
 513      -session will receive  appropriate \fBSIGTTOU\fR and  \fBSIGTTIN\fR signals.
 514      -Unless other arrangements have  been made, this signal causes the processes to
      684 +session will receive appropriate
      685 +.Dv SIGTTOU
      686 +and
      687 +.Dv SIGTTIN
      688 +signals.
      689 +Unless other arrangements have been made, this signal causes the processes to
 515  690  stop.
 516      -.sp
 517      -.LP
 518      -The controlling terminal will remain in this state until it is  reinitialized
 519      -with a successful open by the controlling process, or deallocated by the
      691 +.Pp
      692 +The controlling terminal will remain in this state until it is reinitialized
      693 +ithh a successful open by the controlling process, or deallocated by the
 520  694  controlling process.
 521      -.SS "Terminal Parameters"
 522      -.LP
      695 +.Ss "Terminal Parameters"
 523  696  The parameters that control the behavior of devices and modules providing the
 524      -\fBtermios\fR interface are specified by the \fBtermios\fR structure defined by
 525      -\fBtermios.h\fR. Several  \fBioctl\fR(2) system calls that fetch or change
      697 +.Vt termios
      698 +interface are specified by the
      699 +.Vt termios
      700 +structure defined by
      701 +.In termios.h .
      702 +Several
      703 +.Xr ioctl 2
      704 +system calls that fetch or change
 526  705  these parameters use this structure that contains the following members:
 527      -.sp
 528      -.in +2
 529      -.nf
 530      - tcflag_t c_iflag;  /* input modes */
 531      -        tcflag_t        c_oflag;  /* output modes */
 532      -        tcflag_t        c_cflag;  /* control modes */
 533      -        tcflag_t        c_lflag;  /* local modes */
 534      -        cc_t  c_cc[NCCS];  /* control chars */
 535      -.fi
 536      -.in -2
 537      -
 538      -.sp
 539      -.LP
 540      -The special control characters are defined by the array \fBc_cc\fR. The
 541      -symbolic name \fBNCCS\fR is the size of the Control-character array and is also
 542      -defined by \fB<termios.h>\fR\&. The relative positions, subscript names, and
 543      -typical default values  for each function are as follows:
 544      -.sp
 545      -
 546      -.sp
 547      -.TS
 548      -box;
 549      -c | c | c
 550      -l | l | l .
 551      -Relative Position       Subscript Name  Typical Default Value
 552      -_
 553      -0       VINTR   ETX
 554      -_
 555      -1       VQUIT   FS
 556      -_
 557      -2       VERASE  DEL
 558      -_
 559      -3       VKILL   NAK
 560      -_
 561      -4       VEOF    EOT
 562      -_
 563      -5       VEOL    NUL
 564      -_
 565      -6       VEOL2   NUL
 566      -_
 567      -7       VWSTCH  NUL
 568      -_
 569      -8       VSTART  NUL
 570      -_
 571      -9       VSTOP   DC3
 572      -_
 573      -10      VSUSP   SUB
 574      -_
 575      -11      VDSUSP  EM
 576      -_
 577      -12      VREPRINT        DC2
 578      -_
 579      -13      VDISCARD        SI
 580      -_
 581      -14      VWERASE ETB
 582      -_
 583      -15      VLNEXT  SYN
 584      -_
 585      -16      VSTATUS DC4
 586      -_
 587      -17      VERASE2 BS
 588      -_
 589      -18-19   Reserved
 590      -.TE
 591      -
 592      -.SS "Input Modes"
 593      -.LP
 594      -The \fBc_iflag\fR field describes the basic terminal input control:
 595      -.sp
 596      -.ne 2
 597      -.na
 598      -\fB\fBIGNBRK\fR\fR
 599      -.ad
 600      -.RS 11n
 601      - Ignore break condition.
 602      -.RE
 603      -
 604      -.sp
 605      -.ne 2
 606      -.na
 607      -\fB\fBBRKINT\fR\fR
 608      -.ad
 609      -.RS 11n
      706 +.Bd -literal -offset 2n
      707 +tcflag_t        c_iflag;        /* input modes */
      708 +tcflag_t        c_oflag;        /* output modes */
      709 +tcflag_t        c_cflag;        /* control modes */
      710 +tcflag_t        c_lflag;        /* local modes */
      711 +cc_t            c_cc[NCCS];     /* control chars */
      712 +.Ed
      713 +.Pp
      714 +The special control characters are defined by the array
      715 +.Fa c_cc .
      716 +The symbolic name
      717 +.Dv NCCS
      718 +is the size of the Control-character array and is also
      719 +defined by
      720 +.In termios.h .
      721 +The relative positions, subscript names, and
      722 +typical default values for each function are as follows:
      723 +.Bl -column "Relative Position" "Subscript Name" "Typical Default Value"
      724 +.It Relative Position Ta Subscript Name Ta Typical Default Value
      725 +.It 0 Ta Dv VINTR Ta Sy ETX
      726 +.It 1 Ta Dv VQUIT Ta Sy FS
      727 +.It 2 Ta Dv VERASE Ta Sy DEL
      728 +.It 3 Ta Dv VKILL Ta Sy NAK
      729 +.It 4 Ta Dv VEOF Ta Sy EOT
      730 +.It 5 Ta Dv VEOL Ta Sy NUL
      731 +.It 6 Ta Dv VEOL2 Ta Sy NUL
      732 +.It 7 Ta Dv VWSTCH Ta Sy NUL
      733 +.It 8 Ta Dv VSTART Ta Sy NUL
      734 +.It 9 Ta Dv VSTOP Ta Sy DC3
      735 +.It 10 Ta Dv VSUSP Ta Sy SUB
      736 +.It 11 Ta Dv VDSUSP Ta Sy EM
      737 +.It 12 Ta Dv VREPRINT Ta Sy DC2
      738 +.It 13 Ta Dv VDISCARD Ta Sy SI
      739 +.It 14 Ta Dv VWERASE Ta Sy ETB
      740 +.It 15 Ta Dv VLNEXT Ta Sy SYN
      741 +.It 16 Ta Dv VSTATUS Ta Sy DC4
      742 +.It 17 Ta Dv VERASE2 Ta Sy BS
      743 +.It 18-19 Ta Reserved Ta
      744 +.El
      745 +.Ss "Input Modes"
      746 +The
      747 +.Fa c_iflag
      748 +field describes the basic terminal input control:
      749 +.Pp
      750 +.Bl -tag -width "IMAXBEL" -offset 2n -compact
      751 +.It Dv IGNBRK
      752 +Ignore break condition.
      753 +.It Dv BRKINT
 610  754  Signal interrupt on break.
 611      -.RE
 612      -
 613      -.sp
 614      -.ne 2
 615      -.na
 616      -\fB\fBIGNPAR\fR\fR
 617      -.ad
 618      -.RS 11n
      755 +.It Dv IGNPAR
 619  756  Ignore characters with parity errors.
 620      -.RE
 621      -
 622      -.sp
 623      -.ne 2
 624      -.na
 625      -\fB\fBPARMRK\fR\fR
 626      -.ad
 627      -.RS 11n
      757 +.It Dv PARMRK
 628  758  Mark parity errors.
 629      -.RE
 630      -
 631      -.sp
 632      -.ne 2
 633      -.na
 634      -\fB\fBINPCK\fR\fR
 635      -.ad
 636      -.RS 11n
      759 +.It Dv INPCK
 637  760  Enable input parity check.
 638      -.RE
 639      -
 640      -.sp
 641      -.ne 2
 642      -.na
 643      -\fB\fBISTRIP\fR\fR
 644      -.ad
 645      -.RS 11n
      761 +.It Dv ISTRIP
 646  762  Strip character.
 647      -.RE
 648      -
 649      -.sp
 650      -.ne 2
 651      -.na
 652      -\fB\fBINLCR\fR\fR
 653      -.ad
 654      -.RS 11n
      763 +.It Dv INLCR
 655  764  Map NL to CR on input.
 656      -.RE
 657      -
 658      -.sp
 659      -.ne 2
 660      -.na
 661      -\fB\fBIGNCR\fR\fR
 662      -.ad
 663      -.RS 11n
      765 +.It Dv IGNCR
 664  766  Ignore CR.
 665      -.RE
 666      -
 667      -.sp
 668      -.ne 2
 669      -.na
 670      -\fB\fBICRNL\fR\fR
 671      -.ad
 672      -.RS 11n
      767 +.It Dv ICRNL
 673  768  Map CR to NL on input.
 674      -.RE
 675      -
 676      -.sp
 677      -.ne 2
 678      -.na
 679      -\fB\fBIUCLC\fR\fR
 680      -.ad
 681      -.RS 11n
      769 +.It Dv IUCLC
 682  770  Map upper-case to lower-case on input.
 683      -.RE
 684      -
 685      -.sp
 686      -.ne 2
 687      -.na
 688      -\fB\fBIXON\fR\fR
 689      -.ad
 690      -.RS 11n
      771 +.It Dv IXON
 691  772  Enable start/stop output control.
 692      -.RE
 693      -
 694      -.sp
 695      -.ne 2
 696      -.na
 697      -\fB\fBIXANY\fR\fR
 698      -.ad
 699      -.RS 11n
      773 +.It Dv IXANY
 700  774  Enable any character to restart output.
 701      -.RE
 702      -
 703      -.sp
 704      -.ne 2
 705      -.na
 706      -\fB\fBIXOFF\fR\fR
 707      -.ad
 708      -.RS 11n
      775 +.It Dv IXOFF
 709  776  Enable start/stop input control.
 710      -.RE
 711      -
 712      -.sp
 713      -.ne 2
 714      -.na
 715      -\fB\fBIMAXBEL\fR\fR
 716      -.ad
 717      -.RS 11n
 718      -Echo  \fBBEL\fR on input line too long.
 719      -.RE
 720      -
 721      -.sp
 722      -.LP
 723      -If \fBIGNBRK\fR is set, a break condition (a character framing error with data
      777 +.It Dv IMAXBEL
      778 +Echo
      779 +.Sy BEL
      780 +on input line too long.
      781 +.El
      782 +.Pp
      783 +If
      784 +.Dv IGNBRK
      785 +is set, a break condition (a character framing error with data
 724  786  all zeros) detected on input is ignored, that is, not put on the input queue
 725      -and therefore not read by any process. If \fBIGNBRK\fR is not set and
 726      -\fBBRKINT\fR is set, the break condition shall flush the input and output
      787 +and therefore not read by any process.
      788 +If
      789 +.Dv IGNBRK
      790 +is not set and
      791 +.Dv BRKINT
      792 +is set, the break condition shall flush the input and output
 727  793  queues and if the terminal is the controlling terminal of a foreground process
 728      -group, the break condition generates a single \fBSIGINT\fR signal to that
 729      -foreground process group. If neither \fBIGNBRK\fR nor \fBBRKINT\fR is set, a
 730      -break condition is read as a single '\e0' (\fBASCII NULL\fR) character, or if
 731      -\fBPARMRK\fR is set, as '\e377', '\e0', c, where '\e377' is a single character
 732      -with value 377 octal (0xff hex, 255 decimal), '\e0' is a single character with
 733      -value 0, and c is the errored character received.
 734      -.sp
 735      -.LP
 736      -If  \fBIGNPAR\fR is set, a byte with framing or parity errors (other than
 737      -break)  is ignored.
 738      -.sp
 739      -.LP
 740      -If \fBPARMRK\fR is set, and \fBIGNPAR\fR is not set, a byte with a framing or
      794 +group, the break condition generates a single
      795 +.Dv SIGINT
      796 +signal to that
      797 +foreground process group.
      798 +If neither
      799 +.Dv IGNBRK
      800 +nor
      801 +.Dv BRKINT
      802 +is set, a
      803 +break condition is read as a single
      804 +.Ql \e0
      805 +.Pq Sy ASCII NULL
      806 +character, or if
      807 +.Dv PARMRK
      808 +is set, as
      809 +.Ql \e377 ,
      810 +.Ql \e0 ,
      811 +.Em c ,
      812 +where
      813 +.Ql \e377
      814 +is a single character
      815 +with value 377 octal (0xff hex, 255 decimal),
      816 +.Ql \e0
      817 +is a single character with value
      818 +.Sy 0 ,
      819 +and
      820 +.Em c
      821 +is the errored character received.
      822 +.Pp
      823 +If
      824 +.Dv IGNPAR
      825 +is set, a byte with framing or parity errors (other than
      826 +break) is ignored.
      827 +.Pp
      828 +If
      829 +.Dv PARMRK
      830 +is set, and
      831 +.Dv IGNPAR
      832 +is not set, a byte with a framing or
 741  833  parity error (other than break) is given to the application as the
 742      -three-character sequence: '\e377', '\e0', c, where '\e377' is a single
 743      -character with value 377 octal (0xff hex, 255 decimal), '\e0' is a single
 744      -character with value 0, and c is the errored character received. To avoid
 745      -ambiguity in this case, if \fBISTRIP\fR is not set, a valid character
 746      -of '\e377' is given to the  application as `\e377.' If neither \fBIGNPAR\fR nor
 747      -\fBPARMRK\fR is set, a framing or parity error (other than break) is given to
 748      -the application as a single '\e0' (\fBASCII NULL\fR) character.
 749      -.sp
 750      -.LP
 751      -If \fBINPCK\fR is set, input parity checking is enabled. If \fBINPCK\fR is not
 752      -set, input parity checking is disabled. This allows output parity generation
 753      -without input parity errors.  Note that whether input parity checking is
      834 +three-character sequence:
      835 +.Ql \e377 ,
      836 +.Ql \e0 ,
      837 +c, where
      838 +.Ql \e377
      839 +is a single character with value 377 octal (0xff hex, 255 decimal),
      840 +.Ql \e0
      841 +is a single character with value 0, and c is the errored character received.
      842 +To avoid ambiguity in this case, if
      843 +.Dv ISTRIP
      844 +is not set, a valid character
      845 +of
      846 +.Ql \e377
      847 +is given to the application as
      848 +.Ql \e377 .
      849 +If neither
      850 +.Dv IGNPAR
      851 +nor
      852 +.Dv PARMRK
      853 +is set, a framing or parity error (other than break) is given to
      854 +the application as a single
      855 +.Ql \e0
      856 +.Po
      857 +.Sy ASCII NULL
      858 +.Pc
      859 +character.
      860 +.Pp
      861 +If
      862 +.Dv INPCK
      863 +is set, input parity checking is enabled.
      864 +If
      865 +.Dv INPCK
      866 +is not
      867 +set, input parity checking is disabled.
      868 +This allows output parity generation
      869 +without input parity errors.
      870 +Note that whether input parity checking is
 754  871  enabled or disabled is independent of whether parity detection is enabled or
 755      -disabled.  If parity detection is enabled but input parity checking is
      872 +disabled.
      873 +If parity detection is enabled but input parity checking is
 756  874  disabled, the hardware to which the terminal is connected will recognize the
 757  875  parity bit, but the terminal special file will not check whether this is set
 758  876  correctly or not.
 759      -.sp
 760      -.LP
 761      -If \fBISTRIP\fR is set, valid input characters are first stripped to seven
      877 +.Pp
      878 +If
      879 +.Dv ISTRIP
      880 +is set, valid input characters are first stripped to seven
 762  881  bits, otherwise all eight bits are processed.
 763      -.sp
 764      -.LP
 765      -If \fBINLCR\fR is set, a received \fBNL\fR character is translated into a
 766      -\fBCR\fR character.  If  \fBIGNCR\fR is set, a received \fBCR\fR character is
 767      -ignored (not read).  Otherwise, if \fBICRNL\fR is set, a received \fBCR\fR
 768      -character is translated into a \fBNL\fR character.
 769      -.sp
 770      -.LP
 771      -If \fBIUCLC\fR is set, a received upper case, alphabetic character is
      882 +.Pp
      883 +If
      884 +.Dv INLCR
      885 +is set, a received
      886 +.Sy NL
      887 +character is translated into a
      888 +.Sy CR
      889 +character.
      890 +If
      891 +.Dv IGNCR
      892 +is set, a received
      893 +.Sy CR
      894 +character is ignored (not read).
      895 +Otherwise, if
      896 +.Dv ICRNL
      897 +is set, a received
      898 +.Sy CR
      899 +character is translated into a
      900 +.Sy NL
      901 +character.
      902 +.Pp
      903 +If
      904 +.Dv IUCLC
      905 +is set, a received upper case, alphabetic character is
 772  906  translated into the corresponding lower case character.
 773      -.sp
 774      -.LP
 775      -If \fBIXON\fR is set, start/stop output control is enabled. A received
 776      -\fBSTOP\fR character suspends output and a received \fBSTART\fR character
 777      -restarts output. The \fBSTOP\fR and \fBSTART\fR characters will not be read,
 778      -but will merely perform  flow control functions. If \fBIXANY\fR is set, any
      907 +.Pp
      908 +If
      909 +.Dv IXON
      910 +is set, start/stop output control is enabled.
      911 +A received
      912 +.Sy STOP
      913 +character suspends output and a received
      914 +.Sy START
      915 +character
      916 +restarts output.
      917 +The
      918 +.Sy STOP
      919 +and
      920 +.Sy START
      921 +characters will not be read,
      922 +but will merely perform flow control functions.
      923 +If
      924 +.Dv IXANY
      925 +is set, any
 779  926  input character restarts output that has been suspended.
 780      -.sp
 781      -.LP
 782      -If \fBIXOFF\fR is set, the system transmits a \fBSTOP\fR character when the
 783      -input queue is nearly full, and a \fBSTART\fR character when enough input has
      927 +.Pp
      928 +If
      929 +.Dv IXOFF
      930 +is set, the system transmits a
      931 +.Sy STOP
      932 +character when the
      933 +input queue is nearly full, and a
      934 +.Sy START
      935 +character when enough input has
 784  936  been read so that the input queue is nearly empty again.
 785      -.sp
 786      -.LP
 787      -If \fBIMAXBEL\fR is set, the \fBASCII BEL\fR character is echoed if the input
 788      -stream overflows. Further input is not stored, but any input already present in
 789      -the input stream is not disturbed.  If  \fBIMAXBEL\fR is not set, no \fBBEL\fR
      937 +.Pp
      938 +If
      939 +.Dv IMAXBEL
      940 +is set, the
      941 +.Sy ASCII BEL
      942 +character is echoed if the input stream overflows.
      943 +Further input is not stored, but any input already present in
      944 +the input stream is not disturbed.
      945 +If
      946 +.Dv IMAXBEL
      947 +is not set, no
      948 +.Sy BEL
 790  949  character is echoed, and all input present in the input queue is discarded if
 791  950  the input stream overflows.
 792      -.SS "Output Modes"
 793      -.LP
 794      -The  \fBc_oflag\fR field specifies the  system treatment of output:
 795      -.sp
 796      -.ne 2
 797      -.na
 798      -\fB\fBOPOST\fR\fR
 799      -.ad
 800      -.RS 10n
      951 +.Ss "Output Modes"
      952 +The
      953 +.Fa c_oflag
      954 +field specifies the system treatment of output:
      955 +.Pp
      956 +.Bl -tag -width ONLRET -offset 2n -compact
      957 +.It Dv OPOST
 801  958  Post-process output.
 802      -.RE
 803      -
 804      -.sp
 805      -.ne 2
 806      -.na
 807      -\fB\fBOLCUC\fR\fR
 808      -.ad
 809      -.RS 10n
      959 +.It Dv OLCUC
 810  960  Map lower case to upper on output.
 811      -.RE
 812      -
 813      -.sp
 814      -.ne 2
 815      -.na
 816      -\fB\fBONLCR\fR\fR
 817      -.ad
 818      -.RS 10n
      961 +.It Dv ONLCR
 819  962  Map NL to CR-NL on output.
 820      -.RE
 821      -
 822      -.sp
 823      -.ne 2
 824      -.na
 825      -\fB\fBOCRNL\fR\fR
 826      -.ad
 827      -.RS 10n
      963 +.It Dv OCRNL
 828  964  Map CR to NL on output.
 829      -.RE
 830      -
 831      -.sp
 832      -.ne 2
 833      -.na
 834      -\fB\fBONOCR\fR\fR
 835      -.ad
 836      -.RS 10n
 837      -No \fBCR\fR output at column 0.
 838      -.RE
 839      -
 840      -.sp
 841      -.ne 2
 842      -.na
 843      -\fB\fBONLRET\fR\fR
 844      -.ad
 845      -.RS 10n
 846      -\fBNL\fR performs \fBCR\fR function.
 847      -.RE
 848      -
 849      -.sp
 850      -.ne 2
 851      -.na
 852      -\fB\fBOFILL\fR\fR
 853      -.ad
 854      -.RS 10n
      965 +.It Dv ONOCR
      966 +No
      967 +.Sy CR
      968 +output at column 0.
      969 +.It Dv ONLRET
      970 +.Sy NL
      971 +performs
      972 +.Sy CR
      973 +function.
      974 +.It Dv OFILL
 855  975  Use fill characters for delay.
 856      -.RE
 857      -
 858      -.sp
 859      -.ne 2
 860      -.na
 861      -\fB\fBOFDEL\fR\fR
 862      -.ad
 863      -.RS 10n
 864      -Fill is \fBDEL\fR, else \fINULL\fR.
 865      -.RE
 866      -
 867      -.sp
 868      -.ne 2
 869      -.na
 870      -\fB\fBNLDLY\fR\fR
 871      -.ad
 872      -.RS 10n
      976 +.It Dv OFDEL
      977 +Fill is
      978 +.Sy DEL ,
      979 +else
      980 +.Sy INULL .
      981 +.It Dv NLDLY
 873  982  Select newline delays:
 874      -.br
 875      -.in +2
 876      -\fBNL0\fR
 877      -.in -2
 878      -.br
 879      -.in +2
 880      -\fBNL1\fR
 881      -.in -2
 882      -.RE
 883      -
 884      -.sp
 885      -.ne 2
 886      -.na
 887      -\fB\fBCRDLY\fR\fR
 888      -.ad
 889      -.RS 10n
      983 +.Bl -tag -width NL0 -compact -offset 2n
      984 +.It Sy NL0
      985 +.It Sy NL1
      986 +.El
      987 +.It Dv CRDLY
 890  988  Select carriage-return delays:
 891      -.br
 892      -.in +2
 893      -\fBCR0\fR
 894      -.in -2
 895      -.br
 896      -.in +2
 897      -\fBCR1\fR
 898      -.in -2
 899      -.br
 900      -.in +2
 901      -\fBCR2\fR
 902      -.in -2
 903      -.br
 904      -.in +2
 905      -\fBCR3\fR
 906      -.in -2
 907      -.RE
 908      -
 909      -.sp
 910      -.ne 2
 911      -.na
 912      -\fB\fBTABDLY\fR\fR
 913      -.ad
 914      -.RS 10n
      989 +.Bl -tag -width CR0 -compact -offset 2n
      990 +.It Dv CR0
      991 +.It Dv CR1
      992 +.It Dv CR2
      993 +.It Dv CR3
      994 +.El
      995 +.It Dv TABDLY
 915  996  Select horizontal tab delays or tab expansion:
 916      -.sp
 917      -.ne 2
 918      -.na
 919      -\fB\fBTAB0\fR\fR
 920      -.ad
 921      -.RS 9n
 922      -
 923      -.RE
 924      -
 925      -.sp
 926      -.ne 2
 927      -.na
 928      -\fB\fBTAB1\fR\fR
 929      -.ad
 930      -.RS 9n
 931      -
 932      -.RE
 933      -
 934      -.sp
 935      -.ne 2
 936      -.na
 937      -\fB\fBTAB2\fR\fR
 938      -.ad
 939      -.RS 9n
 940      -
 941      -.RE
 942      -
 943      -.sp
 944      -.ne 2
 945      -.na
 946      -\fB\fBTAB3\fR\fR
 947      -.ad
 948      -.RS 9n
      997 +.Bl -tag -width XTABS -compact -offset 2n
      998 +.It Dv TAB0
      999 +.It Dv TAB1
     1000 +.It Dv TAB2
     1001 +.It Dv TAB3
 949 1002  Expand tabs to spaces
 950      -.RE
 951      -
 952      -.sp
 953      -.ne 2
 954      -.na
 955      -\fB\fBXTABS\fR\fR
 956      -.ad
 957      -.RS 9n
     1003 +.It Dv XTABS
 958 1004  Expand tabs to spaces
 959      -.RE
 960      -
 961      -.RE
 962      -
 963      -.sp
 964      -.ne 2
 965      -.na
 966      -\fB\fBBSDLY\fR\fR
 967      -.ad
 968      -.RS 10n
     1005 +.El
     1006 +.It Dv BSDLY
 969 1007  Select backspace delays:
 970      -.br
 971      -.in +2
 972      -\fBBS0\fR
 973      -.in -2
 974      -.br
 975      -.in +2
 976      -\fBBS1\fR
 977      -.in -2
 978      -.RE
 979      -
 980      -.sp
 981      -.ne 2
 982      -.na
 983      -\fB\fBVTDLY\fR\fR
 984      -.ad
 985      -.RS 10n
     1008 +.Bl -tag -width BS0 -offset 2n -compact
     1009 +.It Dv BS0
     1010 +.It Dv BS1
     1011 +.El
     1012 +.It Dv VTDLY
 986 1013  Select vertical tab delays:
 987      -.br
 988      -.in +2
 989      -\fBVT0\fR
 990      -.in -2
 991      -.br
 992      -.in +2
 993      -\fBVT1\fR
 994      -.in -2
 995      -.RE
 996      -
 997      -.sp
 998      -.ne 2
 999      -.na
1000      -\fB\fBFFDLY\fR\fR
1001      -.ad
1002      -.RS 10n
     1014 +.Bl -tag -width VT0 -offset 2n -compact
     1015 +.It Dv VT0
     1016 +.It Dv VT1
     1017 +.El
     1018 +.It Dv FFDLY
1003 1019  Select form feed delays:
1004      -.br
1005      -.in +2
1006      -\fBFF0\fR
1007      -.in -2
1008      -.br
1009      -.in +2
1010      -\fBFF1\fR
1011      -.in -2
1012      -.RE
1013      -
1014      -.sp
1015      -.LP
1016      -If \fBOPOST\fR is set, output characters are post-processed as indicated by the
     1020 +.Bl -tag -width FF0 -offset 2n -compact
     1021 +.It Dv FF0
     1022 +.It Dv FF1
     1023 +.El
     1024 +.El
     1025 +.Pp
     1026 +If
     1027 +.Dv OPOST
     1028 +is set, output characters are post-processed as indicated by the
1017 1029  remaining flags; otherwise, characters are transmitted without change.
1018      -.sp
1019      -.LP
1020      -If \fBOLCUC\fR is set, a lower case alphabetic character is transmitted as the
1021      -corresponding upper case character. This function is often used in conjunction
1022      -with \fBIUCLC.\fR
1023      -.sp
1024      -.LP
1025      -If \fBONLCR\fR is set, the \fBNL\fR character is transmitted as the \fBCR-NL\fR
1026      -character pair.  If  \fBOCRNL\fR is set, the \fBCR\fR character is transmitted
1027      -as the \fBNL\fR character.  If \fBONOCR\fR is set, no \fBCR\fR character is
1028      -transmitted when at column 0 (first position). If  \fBONRET\fR is set, the
1029      -\fBNL\fR character is assumed to do the carriage-return function; the column
1030      -pointer is set to 0 and the delays specified for \fBCR\fR are used.  Otherwise,
1031      -the \fBNL\fR character is assumed to do just the line-feed function; the column
1032      -pointer remains unchanged. The column pointer is also set to 0 if the \fBCR\fR
     1030 +.Pp
     1031 +If
     1032 +.Dv OLCUC
     1033 +is set, a lower case alphabetic character is transmitted as the
     1034 +corresponding upper case character.
     1035 +This function is often used in conjunction
     1036 +with
     1037 +.Dv IUCLC .
     1038 +.Pp
     1039 +If
     1040 +.Dv ONLCR
     1041 +is set, the
     1042 +.Sy NL
     1043 +character is transmitted as the
     1044 +.Sy CR-NL
     1045 +character pair.
     1046 +If
     1047 +.Dv OCRNL
     1048 +is set, the
     1049 +.Sy CR
     1050 +character is transmitted as the
     1051 +.Sy NL
     1052 +character.
     1053 +If
     1054 +.Dv ONOCR
     1055 +is set, no
     1056 +.Sy CR
     1057 +character is transmitted when at column 0 (first position).
     1058 +If
     1059 +.Dv ONRET
     1060 +is set, the
     1061 +.Sy NL
     1062 +character is assumed to do the carriage-return function; the column
     1063 +pointer is set to 0 and the delays specified for
     1064 +.Sy CR
     1065 +are used.
     1066 +Otherwise, the
     1067 +.Sy NL
     1068 +character is assumed to do just the line-feed function; the column
     1069 +pointer remains unchanged.
     1070 +The column pointer is also set to 0 if the
     1071 +.Sy CR
1033 1072  character is actually transmitted.
1034      -.sp
1035      -.LP
     1073 +.Pp
1036 1074  The delay bits specify how long transmission stops to allow for mechanical or
1037      -other movement when certain characters are sent to the terminal. In all cases,
1038      -a value of 0 indicates no delay. If  \fBOFILL\fR is set, fill characters are
1039      -transmitted for delay instead of a timed delay. This is useful for high baud
1040      -rate terminals that need only a minimal delay.  If  \fBOFDEL\fR is set, the
1041      -fill character is \fBDEL\fR ; otherwise it is  \fINULL\fR.
1042      -.sp
1043      -.LP
     1075 +other movement when certain characters are sent to the terminal.
     1076 +In all cases, a value of 0 indicates no delay.
     1077 +If
     1078 +.Dv OFILL
     1079 +is set, fill characters are transmitted for delay instead of a timed delay.
     1080 +This is useful for high baud rate terminals that need only a minimal delay.
     1081 +If
     1082 +.Dv OFDEL
     1083 +is set, the
     1084 +fill character is
     1085 +.Sy DEL ;
     1086 +otherwise it is
     1087 +.Sy NULL .
     1088 +.Pp
1044 1089  If a form-feed or vertical-tab delay is specified, it lasts for about 2
1045 1090  seconds.
1046      -.sp
1047      -.LP
1048      -Newline delay lasts about 0.10 seconds. If \fBONLRET\fR is set, the
1049      -carriage-return delays are used instead of the newline delays. If \fBOFILL\fR
     1091 +.Pp
     1092 +Newline delay lasts about 0\&.10 seconds.
     1093 +If
     1094 +.Dv ONLRET
     1095 +is set, the carriage-return delays are used instead of the newline delays.
     1096 +If
     1097 +.Dv OFILL
1050 1098  is set, two fill characters are transmitted.
1051      -.sp
1052      -.LP
     1099 +.Pp
1053 1100  Carriage-return delay type 1 is dependent on the current column position, type
1054      -2 is about 0.10 seconds, and type 3 is about 0.15 seconds. If  \fBOFILL\fR is
1055      -set, delay type 1 transmits two fill characters, and type 2 transmits four fill
1056      -characters.
1057      -.sp
1058      -.LP
1059      -Horizontal-tab delay type 1 is dependent on the current column position. Type 2
1060      -is about 0.10 seconds. Type 3 specifies that tabs are to be expanded into
1061      -spaces. If \fBOFILL\fR is set, two fill characters are transmitted for any
1062      -delay.
1063      -.sp
1064      -.LP
1065      -Backspace delay lasts about 0.05 seconds. If  \fBOFILL\fR is set, one fill
1066      -character is transmitted.
1067      -.sp
1068      -.LP
     1101 +2 is about 0\&.10 seconds, and type 3 is about 0\&.15 seconds.
     1102 +If
     1103 +.Dv OFILL
     1104 +is set, delay type 1 transmits two fill characters, and type 2 transmits four
     1105 +fill characters.
     1106 +.Pp
     1107 +Horizontal-tab delay type 1 is dependent on the current column position.
     1108 +Type 2 is about 0\&.10 seconds.
     1109 +Type 3 specifies that tabs are to be expanded into spaces.
     1110 +If
     1111 +.Dv OFILL
     1112 +is set, two fill characters are transmitted for any delay.
     1113 +.Pp
     1114 +Backspace delay lasts about 0\&.05 seconds.
     1115 +If
     1116 +.Dv OFILL
     1117 +is set, one fill character is transmitted.
     1118 +.Pp
1069 1119  The actual delays depend on line speed and system load.
1070      -.SS "Control Modes"
1071      -.LP
1072      -The \fBc_cflag\fR field describes the hardware control of the terminal:
1073      -.sp
1074      -.ne 2
1075      -.na
1076      -\fB\fBCBAUD\fR\fR
1077      -.ad
1078      -.RS 13n
     1120 +.Ss "Control Modes"
     1121 +The
     1122 +.Fa c_cflag
     1123 +field describes the hardware control of the terminal:
     1124 +.Bl -tag -width CIBAUDEXT -offset 2n
     1125 +.It Dv CBAUD
1079 1126  Baud rate:
1080      -.RE
1081      -
1082      -.sp
1083      -.ne 2
1084      -.na
1085      -\fB\fBB0\fR\fR
1086      -.ad
1087      -.RS 13n
     1127 +.Bl -tag -width B460800 -compact
     1128 +.It Dv B0
1088 1129  Hang up
1089      -.RE
1090      -
1091      -.sp
1092      -.ne 2
1093      -.na
1094      -\fB\fBB50\fR\fR
1095      -.ad
1096      -.RS 13n
     1130 +.It Dv B50
1097 1131  50 baud
1098      -.RE
1099      -
1100      -.sp
1101      -.ne 2
1102      -.na
1103      -\fB\fBB75\fR\fR
1104      -.ad
1105      -.RS 13n
     1132 +.It Dv B75
1106 1133  75 baud
1107      -.RE
1108      -
1109      -.sp
1110      -.ne 2
1111      -.na
1112      -\fB\fBB110\fR\fR
1113      -.ad
1114      -.RS 13n
     1134 +.It Dv B110
1115 1135  110 baud
1116      -.RE
1117      -
1118      -.sp
1119      -.ne 2
1120      -.na
1121      -\fB\fBB134\fR\fR
1122      -.ad
1123      -.RS 13n
     1136 +.It Dv B134
1124 1137  134 baud
1125      -.RE
1126      -
1127      -.sp
1128      -.ne 2
1129      -.na
1130      -\fB\fBB150\fR\fR
1131      -.ad
1132      -.RS 13n
     1138 +.It Dv B150
1133 1139  150 baud
1134      -.RE
1135      -
1136      -.sp
1137      -.ne 2
1138      -.na
1139      -\fB\fBB200\fR\fR
1140      -.ad
1141      -.RS 13n
     1140 +.It Dv B200
1142 1141  200 baud
1143      -.RE
1144      -
1145      -.sp
1146      -.ne 2
1147      -.na
1148      -\fB\fBB300\fR\fR
1149      -.ad
1150      -.RS 13n
     1142 +.It Dv B300
1151 1143  300 baud
1152      -.RE
1153      -
1154      -.sp
1155      -.ne 2
1156      -.na
1157      -\fB\fBB600\fR\fR
1158      -.ad
1159      -.RS 13n
     1144 +.It Dv B600
1160 1145  600 baud
1161      -.RE
1162      -
1163      -.sp
1164      -.ne 2
1165      -.na
1166      -\fB\fBB1200\fR\fR
1167      -.ad
1168      -.RS 13n
     1146 +.It Dv B1200
1169 1147  1200 baud
1170      -.RE
1171      -
1172      -.sp
1173      -.ne 2
1174      -.na
1175      -\fB\fBB1800\fR\fR
1176      -.ad
1177      -.RS 13n
     1148 +.It Dv B1800
1178 1149  1800 baud
1179      -.RE
1180      -
1181      -.sp
1182      -.ne 2
1183      -.na
1184      -\fB\fBB2400\fR\fR
1185      -.ad
1186      -.RS 13n
     1150 +.It Dv B2400
1187 1151  2400 baud
1188      -.RE
1189      -
1190      -.sp
1191      -.ne 2
1192      -.na
1193      -\fB\fBB4800\fR\fR
1194      -.ad
1195      -.RS 13n
     1152 +.It Dv B4800
1196 1153  4800 baud
1197      -.RE
1198      -
1199      -.sp
1200      -.ne 2
1201      -.na
1202      -\fB\fBB9600\fR\fR
1203      -.ad
1204      -.RS 13n
     1154 +.It Dv B9600
1205 1155  9600 baud
1206      -.RE
1207      -
1208      -.sp
1209      -.ne 2
1210      -.na
1211      -\fB\fBB19200\fR\fR
1212      -.ad
1213      -.RS 13n
     1156 +.It Dv B19200
1214 1157  19200 baud
1215      -.RE
1216      -
1217      -.sp
1218      -.ne 2
1219      -.na
1220      -\fB\fBEXTA\fR\fR
1221      -.ad
1222      -.RS 13n
     1158 +.It Dv EXTA
1223 1159  External A
1224      -.RE
1225      -
1226      -.sp
1227      -.ne 2
1228      -.na
1229      -\fB\fBB38400\fR\fR
1230      -.ad
1231      -.RS 13n
     1160 +.It Dv B38400
1232 1161  38400 baud
1233      -.RE
1234      -
1235      -.sp
1236      -.ne 2
1237      -.na
1238      -\fB\fBEXTB\fR\fR
1239      -.ad
1240      -.RS 13n
     1162 +.It Dv EXTB
1241 1163  External B
1242      -.RE
1243      -
1244      -.sp
1245      -.ne 2
1246      -.na
1247      -\fB\fBB57600\fR\fR
1248      -.ad
1249      -.RS 13n
     1164 +.It Dv B57600
1250 1165  57600 baud
1251      -.RE
1252      -
1253      -.sp
1254      -.ne 2
1255      -.na
1256      -\fB\fBB76800\fR\fR
1257      -.ad
1258      -.RS 13n
     1166 +.It Dv B76800
1259 1167  76800 baud
1260      -.RE
1261      -
1262      -.sp
1263      -.ne 2
1264      -.na
1265      -\fB\fBB115200\fR\fR
1266      -.ad
1267      -.RS 13n
     1168 +.It Dv B115200
1268 1169  115200 baud
1269      -.RE
1270      -
1271      -.sp
1272      -.ne 2
1273      -.na
1274      -\fB\fBB153600\fR\fR
1275      -.ad
1276      -.RS 13n
     1170 +.It Dv B153600
1277 1171  153600 baud
1278      -.RE
1279      -
1280      -.sp
1281      -.ne 2
1282      -.na
1283      -\fB\fBB230400\fR\fR
1284      -.ad
1285      -.RS 13n
     1172 +.It Dv B230400
1286 1173  230400 baud
1287      -.RE
1288      -
1289      -.sp
1290      -.ne 2
1291      -.na
1292      -\fB\fBB307200\fR\fR
1293      -.ad
1294      -.RS 13n
     1174 +.It Dv B307200
1295 1175  307200 baud
1296      -.RE
1297      -
1298      -.sp
1299      -.ne 2
1300      -.na
1301      -\fB\fBB460800\fR\fR
1302      -.ad
1303      -.RS 13n
     1176 +.It Dv B460800
1304 1177  460800 baud
1305      -.RE
1306      -
1307      -.sp
1308      -.ne 2
1309      -.na
1310      -\fB\fBCSIZE\fR\fR
1311      -.ad
1312      -.RS 13n
     1178 +.El
     1179 +.It Dv CSIZE
1313 1180  Character size:
1314      -.RE
1315      -
1316      -.sp
1317      -.ne 2
1318      -.na
1319      -\fB\fBCS5\fR\fR
1320      -.ad
1321      -.RS 13n
     1181 +.Bl -tag -width CIBAUDEXT -compact
     1182 +.It Dv CS5
1322 1183  5 bits
1323      -.RE
1324      -
1325      -.sp
1326      -.ne 2
1327      -.na
1328      -\fB\fBCS6\fR\fR
1329      -.ad
1330      -.RS 13n
     1184 +.It Dv CS6
1331 1185  6 bits
1332      -.RE
1333      -
1334      -.sp
1335      -.ne 2
1336      -.na
1337      -\fB\fBCS7\fR\fR
1338      -.ad
1339      -.RS 13n
     1186 +.It Dv CS7
1340 1187  7 bits
1341      -.RE
1342      -
1343      -.sp
1344      -.ne 2
1345      -.na
1346      -\fB\fBCS8\fR\fR
1347      -.ad
1348      -.RS 13n
     1188 +.It Dv CS8
1349 1189  8 bits
1350      -.RE
1351      -
1352      -.sp
1353      -.ne 2
1354      -.na
1355      -\fB\fBCSTOPB\fR\fR
1356      -.ad
1357      -.RS 13n
     1190 +.It Dv CSTOPB
1358 1191  Send two stop bits, else one
1359      -.RE
1360      -
1361      -.sp
1362      -.ne 2
1363      -.na
1364      -\fB\fBCREAD\fR\fR
1365      -.ad
1366      -.RS 13n
     1192 +.It Dv CREAD
1367 1193  Enable receiver
1368      -.RE
1369      -
1370      -.sp
1371      -.ne 2
1372      -.na
1373      -\fB\fBPARENB\fR\fR
1374      -.ad
1375      -.RS 13n
     1194 +.It Dv PARENB
1376 1195  Parity enable
1377      -.RE
1378      -
1379      -.sp
1380      -.ne 2
1381      -.na
1382      -\fB\fBPARODD\fR\fR
1383      -.ad
1384      -.RS 13n
     1196 +.It Dv PARODD
1385 1197  Odd parity, else even
1386      -.RE
1387      -
1388      -.sp
1389      -.ne 2
1390      -.na
1391      -\fB\fBHUPCL\fR\fR
1392      -.ad
1393      -.RS 13n
     1198 +.It Dv HUPCL
1394 1199  Hang up on last close
1395      -.RE
1396      -
1397      -.sp
1398      -.ne 2
1399      -.na
1400      -\fB\fBCLOCAL\fR\fR
1401      -.ad
1402      -.RS 13n
     1200 +.It Dv CLOCAL
1403 1201  Local line, else dial-up
1404      -.RE
1405      -
1406      -.sp
1407      -.ne 2
1408      -.na
1409      -\fB\fBCIBAUD\fR\fR
1410      -.ad
1411      -.RS 13n
     1202 +.It Dv CIBAUD
1412 1203  Input baud rate, if different from output rate
1413      -.RE
1414      -
1415      -.sp
1416      -.ne 2
1417      -.na
1418      -\fB\fBPAREXT\fR\fR
1419      -.ad
1420      -.RS 13n
     1204 +.It Dv PAREXT
1421 1205  Extended parity for mark and space parity
1422      -.RE
1423      -
1424      -.sp
1425      -.ne 2
1426      -.na
1427      -\fB\fBCRTSXOFF\fR\fR
1428      -.ad
1429      -.RS 13n
     1206 +.It Dv CRTSXOFF
1430 1207  Enable inbound hardware flow control
1431      -.RE
1432      -
1433      -.sp
1434      -.ne 2
1435      -.na
1436      -\fB\fBCRTSCTS\fR\fR
1437      -.ad
1438      -.RS 13n
     1208 +.It Dv CRTSCTS
1439 1209  Enable outbound hardware flow control
1440      -.RE
1441      -
1442      -.sp
1443      -.ne 2
1444      -.na
1445      -\fB\fBCBAUDEXT\fR\fR
1446      -.ad
1447      -.RS 13n
     1210 +.It Dv CBAUDEXT
1448 1211  Bit to indicate output speed > B38400
1449      -.RE
1450      -
1451      -.sp
1452      -.ne 2
1453      -.na
1454      -\fB\fBCIBAUDEXT\fR\fR
1455      -.ad
1456      -.RS 13n
     1212 +.It Dv CIBAUDEXT
1457 1213  Bit to indicate input speed > B38400
1458      -.RE
1459      -
1460      -.sp
1461      -.LP
1462      -The \fBCBAUD\fR bits together with the \fBCBAUDEXT\fR bit specify the output
1463      -baud rate. To retrieve the output speed from the \fBtermios\fR structure
1464      -pointed to by \fBtermios_p\fR see the following code segment.
1465      -.sp
1466      -.in +2
1467      -.nf
     1214 +.El
     1215 +.El
     1216 +.Pp
     1217 +The
     1218 +.Dv CBAUD
     1219 +bits together with the
     1220 +.Dv CBAUDEXT
     1221 +bit specify the output baud rate.
     1222 +To retrieve the output speed from the
     1223 +.Vt termios
     1224 +structure pointed to by
     1225 +.Fa termios_p
     1226 +see the following code segment.
     1227 +.Bd -literal -offset 2n
1468 1228  speed_t ospeed;
1469 1229  if (termios_p->c_cflag & CBAUDEXT)
1470      -   ospeed = (termios_p->c_cflag & CBAUD) + CBAUD + 1;
     1230 + ospeed = (termios_p->c_cflag & CBAUD) + CBAUD + 1;
1471 1231  else
1472      -   ospeed = termios_p->c_cflag & CBAUD;
1473      -.fi
1474      -.in -2
1475      -
1476      -.sp
1477      -.LP
     1232 + ospeed = termios_p->c_cflag & CBAUD;
     1233 +.Ed
     1234 +.Pp
1478 1235  To store the output speed in the termios structure pointed to by
1479      -\fBtermios_p\fR see the following code segment.
1480      -.sp
1481      -.in +2
1482      -.nf
     1236 +.Fa termios_p
     1237 +see the following code segment.
     1238 +.Bd -literal -offset 2n
1483 1239  speed_t ospeed;
1484 1240  if (ospeed > CBAUD) {
1485      -   termios_p->c_cflag |= CBAUDEXT;
1486      -   ospeed -= (CBAUD + 1);
1487      -} else
1488      -   termios_p->c_cflag &= ~CBAUDEXT;
1489      - termios_p->c_cflag =
1490      -        (termios_p->c_cflag & ~CBAUD) | (ospeed & CBAUD);
1491      -.fi
1492      -.in -2
1493      -
1494      -.sp
1495      -.LP
1496      -The zero baud rate, B0, is used to hang up the connection. If B0 is specified,
1497      -the data-terminal-ready signal is not asserted. Normally, this disconnects the
1498      -line.
1499      -.sp
1500      -.LP
1501      -If the \fBCIBAUDEXT\fR or \fBCIBAUD\fR bits are not zero, they specify the
1502      -input baud rate, with the \fBCBAUDEXT\fR and \fBCBAUD\fR bits specifying the
1503      -output baud rate; otherwise, the output and input baud rates are both specified
1504      -by the \fBCBAUDEXT\fR and  \fBCBAUD\fR bits.  The values for the \fBCIBAUD\fR
1505      -bits are the same as the values for the \fBCBAUD\fR bits, shifted left
1506      -\fBIBSHIFT\fR bits. For any particular hardware, impossible speed changes are
1507      -ignored. To retrieve the input speed in the  \fBtermios\fR structure pointed to
1508      -by  \fBtermios_p\fR see the following code segment.
1509      -.sp
1510      -.in +2
1511      -.nf
     1241 + termios_p->c_cflag |= CBAUDEXT;
     1242 + ospeed -= (CBAUD + 1);
     1243 +} else {
     1244 + termios_p->c_cflag &= ~CBAUDEXT;
     1245 +}
     1246 +termios_p->c_cflag =
     1247 +  (termios_p->c_cflag & ~CBAUD) | (ospeed & CBAUD);
     1248 +.Ed
     1249 +.Pp
     1250 +The zero baud rate,
     1251 +.Dv B0 ,
     1252 +is used to hang up the connection.
     1253 +If
     1254 +.Dv B0
     1255 +is specified, the data-terminal-ready signal is not asserted.
     1256 +Normally, this disconnects the line.
     1257 +.Pp
     1258 +If the
     1259 +.Dv CIBAUDEXT
     1260 +or
     1261 +.Dv CIBAUD
     1262 +bits are not zero, they specify the input baud rate, with the
     1263 +.Dv CBAUDEXT
     1264 +and
     1265 +.Dv CBAUD
     1266 +bits specifying the output baud rate; otherwise, the output and input baud
     1267 +rates are both specified by the
     1268 +.Dv CBAUDEXT
     1269 +and
     1270 +.Dv CBAUD
     1271 +bits.
     1272 +The values for the
     1273 +.Dv CIBAUD
     1274 +bits are the same as the values for the
     1275 +.Dv CBAUD
     1276 +bits, shifted left
     1277 +.Dv IBSHIFT
     1278 +bits.
     1279 +For any particular hardware, impossible speed changes are
     1280 +ignored.
     1281 +To retrieve the input speed in the
     1282 +.Vt termios
     1283 +structure pointed to
     1284 +by
     1285 +.Fa termios_p
     1286 +see the following code segment.
     1287 +.Bd -literal -offset 2n
1512 1288  speed_t ispeed;
1513      -if (termios_p->c_cflag & CIBAUDEXT)
1514      -   ispeed = ((termios_p->c_cflag & CIBAUD) >> IBSHIFT)
1515      -   + (CIBAUD >> IBSHIFT) + 1;
1516      -else
1517      -   ispeed = (termios_p->c_cflag & CIBAUD) >> IBSHIFT;
1518      -.fi
1519      -.in -2
1520      -
1521      -.sp
1522      -.LP
1523      -To store the input speed in the  \fBtermios\fR structure pointed to by
1524      -\fBtermios_p\fR see the following code segment.
1525      -.sp
1526      -.in +2
1527      -.nf
     1289 +if (termios_p->c_cflag & CIBAUDEXT) {
     1290 + ispeed = ((termios_p->c_cflag & CIBAUD) >> IBSHIFT)
     1291 + + (CIBAUD >> IBSHIFT) + 1;
     1292 +} else {
     1293 + ispeed = (termios_p->c_cflag & CIBAUD) >> IBSHIFT;
     1294 +}
     1295 +.Ed
     1296 +.Pp
     1297 +To store the input speed in the
     1298 +.Vt termios
     1299 +structure pointed to by
     1300 +.Fa termios_p
     1301 +see the following code segment.
     1302 +.Bd -literal -offset 2n
1528 1303  speed_t ispeed;
1529 1304  if (ispeed == 0) {
1530      -   ispeed = termios_p->c_cflag & CBAUD;
1531      -if (termios_p->c_cflag & CBAUDEXT)
1532      -   ispeed += (CBAUD + 1);
     1305 + ispeed = termios_p->c_cflag & CBAUD;
     1306 + if (termios_p->c_cflag & CBAUDEXT)
     1307 +     ispeed += (CBAUD + 1);
1533 1308  }
1534      - if ((ispeed << IBSHIFT) > CIBAUD) {
1535      -    termios_p->c_cflag |= CIBAUDEXT;
1536      -    ispeed -= ((CIBAUD >> IBSHIFT) + 1);
1537      -} else
1538      -    termios_p->c_cflag &= ~CIBAUDEXT;
1539      -    termios_p->c_cflag =
1540      -    (termios_p->c_cflag & ~CIBAUD) |
1541      -           ((ispeed << IBSHIFT) & CIBAUD);
1542      -.fi
1543      -.in -2
1544      -
1545      -.sp
1546      -.LP
1547      -The \fBCSIZE\fR bits specify the character size in bits for both transmission
1548      -and reception. This size does not include the parity bit, if any. If
1549      -\fBCSTOPB\fR is set, two stop bits are used; otherwise, one stop bit is used.
     1309 +if ((ispeed << IBSHIFT) > CIBAUD) {
     1310 +  termios_p->c_cflag |= CIBAUDEXT;
     1311 +  ispeed -= ((CIBAUD >> IBSHIFT) + 1);
     1312 +} else {
     1313 +  termios_p->c_cflag &= ~CIBAUDEXT;
     1314 +}
     1315 +termios_p->c_cflag =
     1316 +  (termios_p->c_cflag & ~CIBAUD) | ((ispeed << IBSHIFT) & CIBAUD);
     1317 +.Ed
     1318 +.Pp
     1319 +The
     1320 +.Dv CSIZE
     1321 +bits specify the character size in bits for both transmission and reception.
     1322 +This size does not include the parity bit, if any.
     1323 +If
     1324 +.Dv CSTOPB
     1325 +is set, two stop bits are used; otherwise, one stop bit is used.
1550 1326  For example, at 110 baud, two stops bits are required.
1551      -.sp
1552      -.LP
1553      -If \fBPARENB\fR is set, parity generation and detection is enabled, and a
1554      -parity bit is added to each character. If parity is enabled, the \fBPARODD\fR
     1327 +.Pp
     1328 +If
     1329 +.Dv PARENB
     1330 +is set, parity generation and detection is enabled, and a
     1331 +parity bit is added to each character.
     1332 +If parity is enabled, the
     1333 +.Dv PARODD
1555 1334  flag specifies odd parity if set; otherwise, even parity is used.
1556      -.sp
1557      -.LP
1558      -If \fBCREAD\fR is set, the receiver is enabled. Otherwise, no characters are
1559      -received.
1560      -.sp
1561      -.LP
1562      -If \fBHUPCL\fR is set, the line is disconnected when the last process with the
1563      -line open closes it or terminates. That is, the data-terminal-ready signal is
1564      -not asserted.
1565      -.sp
1566      -.LP
1567      -If \fBCLOCAL\fR is set, the line is assumed to be a local, direct connection
     1335 +.Pp
     1336 +If
     1337 +.Dv CREAD
     1338 +is set, the receiver is enabled.
     1339 +Otherwise, no characters are received.
     1340 +.Pp
     1341 +If
     1342 +.Dv HUPCL
     1343 +is set, the line is disconnected when the last process with the
     1344 +line open closes it or terminates.
     1345 +That is, the data-terminal-ready signal is not asserted.
     1346 +.Pp
     1347 +If
     1348 +.Dv CLOCAL
     1349 +is set, the line is assumed to be a local, direct connection
1568 1350  with no modem control; otherwise, modem control is assumed.
1569      -.sp
1570      -.LP
1571      -If \fBCRTSXOFF\fR is set, inbound hardware flow control is enabled.
1572      -.sp
1573      -.LP
1574      -If  \fBCRTSCTS\fR is set, outbound hardware flow control is enabled.
1575      -.sp
1576      -.LP
1577      -The four possible combinations for the state of \fBCRTSCTS\fR and
1578      -\fBCRTSXOFF\fR bits and their interactions are described below.
1579      -.sp
1580      -.ne 2
1581      -.na
1582      -\fBCase A:\fR
1583      -.ad
1584      -.RS 11n
1585      -\fBCRTSCTS\fR off, \fBCRTSXOFF\fR off. In this case the hardware flow control
1586      -is disabled.
1587      -.RE
1588      -
1589      -.sp
1590      -.ne 2
1591      -.na
1592      -\fBCase B:\fR
1593      -.ad
1594      -.RS 11n
1595      -\fBCRTSCTS\fR on, \fBCRTSXOFF\fR off. In this case only outbound hardware flow
1596      -control is enabled. The state of CTS signal is used to do outbound flow
1597      -control. It is expected that output will be suspended if CTS is low and resumed
     1351 +.Pp
     1352 +If
     1353 +.Dv CRTSXOFF
     1354 +is set, inbound hardware flow control is enabled.
     1355 +.Pp
     1356 +If
     1357 +.Dv CRTSCTS
     1358 +is set, outbound hardware flow control is enabled.
     1359 +.Pp
     1360 +The four possible combinations for the state of
     1361 +.Dv CRTSCTS
     1362 +and
     1363 +.Dv CRTSXOFF
     1364 +bits and their interactions are described below.
     1365 +.Bl -tag -width "Case C:"
     1366 +.It Sy Case A :
     1367 +.Dv CRTSCTS
     1368 +off,
     1369 +.Dv CRTSXOFF
     1370 +off.
     1371 +In this case the hardware flow control is disabled.
     1372 +.It Sy Case B :
     1373 +.Dv CRTSCTS
     1374 +on,
     1375 +.Dv CRTSXOFF
     1376 +off.
     1377 +In this case only outbound hardware flow control is enabled.
     1378 +The state of CTS signal is used to do outbound flow control.
     1379 +It is expected that output will be suspended if CTS is low and resumed
1598 1380  when CTS is high.
1599      -.RE
1600      -
1601      -.sp
1602      -.ne 2
1603      -.na
1604      -\fBCase C:\fR
1605      -.ad
1606      -.RS 11n
1607      -\fBCRTSCTS\fR off, \fBCRTSXOFF\fR on. In this case only inbound hardware flow
1608      -control is enabled. The state of RTS signal is used to do inbound flow control.
     1381 +.It Sy Case C :
     1382 +.Dv CRTSCTS
     1383 +off,
     1384 +.Dv CRTSXOFF
     1385 +on.
     1386 +In this case only inbound hardware flow control is enabled.
     1387 +The state of RTS signal is used to do inbound flow control.
1609 1388  It is expected that input will be suspended if RTS is low and resumed when RTS
1610 1389  is high.
1611      -.RE
1612      -
1613      -.sp
1614      -.ne 2
1615      -.na
1616      -\fBCase D:\fR
1617      -.ad
1618      -.RS 11n
1619      -\fBCRTSCTS\fR on, \fBCRTSXOFF\fR on. In this case both inbound and outbound
1620      -hardware flow control are enabled. Uses the state of CTS signal to do outbound
     1390 +.It Sy Case D :
     1391 +.Dv CRTSCTS
     1392 +on,
     1393 +.Dv CRTSXOFF
     1394 +on.
     1395 +In this case both inbound and outbound hardware flow control are enabled.
     1396 +Uses the state of CTS signal to do outbound
1621 1397  flow control and RTS signal to do inbound flow control.
1622      -.RE
1623      -
1624      -.SS "Local Modes"
1625      -.LP
1626      -The \fBc_lflag\fR field of the argument structure is used by the line
1627      -discipline to control terminal functions. The basic line discipline provides
1628      -the following:
1629      -.sp
1630      -.ne 2
1631      -.na
1632      -\fB\fBISIG\fR\fR
1633      -.ad
1634      -.RS 11n
1635      - Enable signals.
1636      -.RE
1637      -
1638      -.sp
1639      -.ne 2
1640      -.na
1641      -\fB\fBICANON\fR\fR
1642      -.ad
1643      -.RS 11n
     1398 +.El
     1399 +.Ss "Local Modes"
     1400 +The
     1401 +.Fa c_lflag
     1402 +field of the argument structure is used by the line
     1403 +discipline to control terminal functions.
     1404 +The basic line discipline provides the following:
     1405 +.Pp
     1406 +.Bl -tag -offset 2n -width SIGTTOU -compact
     1407 +.It Dv ISIG
     1408 +Enable signals.
     1409 +.It Dv ICANON
1644 1410  Canonical input (erase and kill processing).
1645      -.RE
1646      -
1647      -.sp
1648      -.ne 2
1649      -.na
1650      -\fB\fBXCASE\fR\fR
1651      -.ad
1652      -.RS 11n
     1411 +.It Dv XCASE
1653 1412  Canonical upper/lower presentation.
1654      -.RE
1655      -
1656      -.sp
1657      -.ne 2
1658      -.na
1659      -\fB\fBECHO\fR\fR
1660      -.ad
1661      -.RS 11n
     1413 +.It Dv ECHO
1662 1414  Enable echo.
1663      -.RE
1664      -
1665      -.sp
1666      -.ne 2
1667      -.na
1668      -\fB\fBECHOE\fR\fR
1669      -.ad
1670      -.RS 11n
1671      -Echo erase character as \fBBS-SP-BS\fR &.
1672      -.RE
1673      -
1674      -.sp
1675      -.ne 2
1676      -.na
1677      -\fB\fBECHOK\fR\fR
1678      -.ad
1679      -.RS 11n
1680      -Echo  \fBNL\fR after kill character.
1681      -.RE
1682      -
1683      -.sp
1684      -.ne 2
1685      -.na
1686      -\fB\fBECHONL\fR\fR
1687      -.ad
1688      -.RS 11n
1689      -Echo  \fBNL\fR .
1690      -.RE
1691      -
1692      -.sp
1693      -.ne 2
1694      -.na
1695      -\fB\fBNOFLSH\fR\fR
1696      -.ad
1697      -.RS 11n
     1415 +.It Dv ECHOE
     1416 +Echo erase character as
     1417 +.Sy BS Ns - Ns Sy SP Ns - Ns Sy BS
     1418 +&.
     1419 +.It Dv ECHOK
     1420 +Echo
     1421 +.Sy NL
     1422 +after kill character.
     1423 +.It Dv ECHONL
     1424 +Echo
     1425 +.Sy NL .
     1426 +.It Dv NOFLSH
1698 1427  Disable flush after interrupt or quit.
1699      -.RE
1700      -
1701      -.sp
1702      -.ne 2
1703      -.na
1704      -\fB\fBTOSTOP\fR\fR
1705      -.ad
1706      -.RS 11n
1707      -Send  \fBSIGTTOU\fR for background output.
1708      -.RE
1709      -
1710      -.sp
1711      -.ne 2
1712      -.na
1713      -\fB\fBECHOCTL\fR\fR
1714      -.ad
1715      -.RS 11n
1716      -Echo control characters as  \fIchar,\fR delete as ^?.
1717      -.RE
1718      -
1719      -.sp
1720      -.ne 2
1721      -.na
1722      -\fB\fBECHOPRT\fR\fR
1723      -.ad
1724      -.RS 11n
     1428 +.It Dv TOSTOP
     1429 +Send
     1430 +.It Dv SIGTTOU
     1431 +for background output.
     1432 +.It Dv ECHOCTL
     1433 +Echo control characters as
     1434 +.Em char ,
     1435 +delete as ^?.
     1436 +.It Dv ECHOPRT
1725 1437  Echo erase character as character erased.
1726      -.RE
1727      -
1728      -.sp
1729      -.ne 2
1730      -.na
1731      -\fB\fBECHOKE\fR\fR
1732      -.ad
1733      -.RS 11n
1734      -\fBBS-SP-BS\fR erase entire line on line kill.
1735      -.RE
1736      -
1737      -.sp
1738      -.ne 2
1739      -.na
1740      -\fB\fBFLUSHO\fR\fR
1741      -.ad
1742      -.RS 11n
     1438 +.It Dv ECHOKE
     1439 +.Sy BS Ns - Ns Sy SP Ns - Ns Sy BS
     1440 +erase entire line on line kill.
     1441 +.It Dv FLUSHO
1743 1442  Output is being flushed.
1744      -.RE
1745      -
1746      -.sp
1747      -.ne 2
1748      -.na
1749      -\fB\fBPENDIN\fR\fR
1750      -.ad
1751      -.RS 11n
1752      -Retype pending input at next read or  input character.
1753      -.RE
1754      -
1755      -.sp
1756      -.ne 2
1757      -.na
1758      -\fB\fBIEXTEN\fR\fR
1759      -.ad
1760      -.RS 11n
     1443 +.It Dv PENDIN
     1444 +Retype pending input at next read or input character.
     1445 +.It Dv IEXTEN
1761 1446  Enable extended (implementation-defined) functions.
1762      -.RE
1763      -
1764      -.sp
1765      -.LP
1766      -If \fBISIG\fR is set, each input character is checked against the special
1767      -control characters INTR, QUIT, SWTCH,  SUSP, STATUS, and \fBDSUSP\fR. If an
1768      -input character matches one of these control characters, the function
1769      -associated with that character is performed. (Note: If SWTCH is set and the
1770      -character matches, the character is simply discarded. No other action is
1771      -taken.) If \fBISIG\fR is not set, no checking is done.  Thus, these special
1772      -input functions are possible only if \fBISIG\fR is set.
1773      -.sp
1774      -.LP
1775      -If \fBICANON\fR is set, canonical processing is enabled. This enables the erase
     1447 +.El
     1448 +.Pp
     1449 +If
     1450 +.Dv ISIG
     1451 +is set, each input character is checked against the special
     1452 +control characters
     1453 +.Sy INTR ,
     1454 +.Sy QUIT ,
     1455 +.Sy SWTCH ,
     1456 +.Sy SUSP ,
     1457 +.Sy STATUS ,
     1458 +and
     1459 +.Sy DSUSP .
     1460 +If an input character matches one of these control characters, the function
     1461 +associated with that character is performed.
     1462 +.Po
     1463 +Note: If
     1464 +.Sy SWTCH
     1465 +is set and the character matches, the character is simply discarded.
     1466 +No other action is taken.
     1467 +.Pc
     1468 +If
     1469 +.Dv ISIG
     1470 +is not set, no checking is done.
     1471 +Thus, these special
     1472 +input functions are possible only if
     1473 +.Dv ISIG
     1474 +is set.
     1475 +.Pp
     1476 +If
     1477 +.Dv ICANON
     1478 +is set, canonical processing is enabled.
     1479 +This enables the erase
1776 1480  and kill edit functions, and the assembly of input characters into lines
1777      -delimited by \fBNL-c\fR, \fBEOF\fR, \fBEOL\fR, and \fBEOL\fR . If  \fBICANON\fR
1778      -is not set, read requests are satisfied directly from the input queue. A read
1779      -is not satisfied until at least \fBMIN\fR characters have been  received or the
1780      -timeout value \fBTIME\fR has expired between characters. This allows fast
1781      -bursts of input to be read efficiently while still allowing single character
1782      -input. The time value represents tenths of seconds.
1783      -.sp
1784      -.LP
1785      -If  \fBXCASE\fR is set and \fBICANON\fR is set, an upper case letter is
1786      -accepted on input if preceded by a backslash \fB(\e)\fR character, and is
1787      -output preceded by a  backslash \fB(\e)\fR character. In this mode, the
     1481 +delimited by
     1482 +.Sy NL-c ,
     1483 +.Sy EOF ,
     1484 +.Sy EOL ,
     1485 +and
     1486 +.Sy EOL .
     1487 +If
     1488 +.Dv ICANON
     1489 +is not set, read requests are satisfied directly from the input queue.
     1490 +A read is not satisfied until at least
     1491 +.Sy MIN
     1492 +characters have been received or the timeout value
     1493 +.Sy TIME
     1494 +has expired between characters.
     1495 +This allows fast bursts of input to be read efficiently while still allowing
     1496 +single character input.
     1497 +The time value represents tenths of seconds.
     1498 +.Pp
     1499 +If
     1500 +.Dv XCASE
     1501 +is set and
     1502 +.Dv ICANON
     1503 +is set, an upper case letter is
     1504 +accepted on input if preceded by a backslash
     1505 +.Ql \e
     1506 +character, and is output preceded by a backslash
     1507 +.Ql \e
     1508 +character.
     1509 +In this mode, the
1788 1510  following escape sequences are generated on output and accepted on input:
1789      -.sp
1790      -
1791      -.sp
1792      -.TS
1793      -box;
1794      -c | c
1795      -l | l .
1796      -FOR:    USE:
1797      -_
1798      -`       \e'
1799      -_
1800      -|       \e!
1801      -_
1802      -\(ap    \e^
1803      -_
1804      -{       \e(
1805      -_
1806      -}       \e)
1807      -_
1808      -\e      \e\e
1809      -.TE
1810      -
1811      -.sp
1812      -.LP
     1511 +.Bl -column "FOR:" "USE:" -offset 2n
     1512 +.It FOR: Ta USE:
     1513 +.It ` Ta \e'
     1514 +.It | Ta \e!
     1515 +.It \(ap Ta \e^
     1516 +.It { Ta \e(
     1517 +.It } Ta \e)
     1518 +.It \e Ta \e\e
     1519 +.El
     1520 +.Pp
1813 1521  For example, input A as \ea, \en as \e\en, and \eN as \e\e\en.
1814      -.sp
1815      -.LP
1816      -If \fBECHO\fR is set, characters are echoed as received.
1817      -.sp
1818      -.LP
1819      -When \fBICANON\fR is set, the following echo functions are possible.
1820      -.RS +4
1821      -.TP
1822      -.ie t \(bu
1823      -.el o
1824      -If \fBECHO\fR and \fBECHOE\fR are set, and  \fBECHOPRT\fR is not set,  the
1825      -\fBERASE\fR, \fBERASE2\fR, and \fBWERASE\fR characters are echoed as one or
1826      -more ASCII BS SP BS, which clears the last character(s) from a \fBCRT\fR screen.
1827      -.RE
1828      -.RS +4
1829      -.TP
1830      -.ie t \(bu
1831      -.el o
1832      -If \fBECHO\fR, \fBECHOPRT\fR, and \fBIEXTEN\fR are set, the first \fBERASE\fR,
1833      -\fBERASE2\fR, and \fBWERASE\fR character in a sequence echoes as a backslash
1834      -(\fB\e\fR), followed by the characters being erased.  Subsequent \fBERASE\fR and
1835      -\fBWERASE\fR characters echo the characters being erased, in reverse order. The
1836      -next non-erase character causes a `/' (slash) to be typed before it is echoed.
1837      -\fBECHOPRT\fR should be used for hard copy terminals.
1838      -.RE
1839      -.RS +4
1840      -.TP
1841      -.ie t \(bu
1842      -.el o
1843      -If  \fBECHOKE\fR and \fBIEXTEN\fR are set, the kill character is echoed by
1844      -erasing each  character on the line from the screen (using the mechanism
1845      -selected by \fBECHOE\fR and \fBECHOPR\fRa).
1846      -.RE
1847      -.RS +4
1848      -.TP
1849      -.ie t \(bu
1850      -.el o
1851      -If  \fBECHOK\fR is set, and \fBECHOKE\fR is not set, the \fBNL\fR character is
1852      -echoed after the kill character to emphasize that the line is deleted. Note
1853      -that a `\' (escape) character or an \fBLNEXT\fR character preceding the erase
     1522 +.Pp
     1523 +If
     1524 +.Dv ECHO
     1525 +is set, characters are echoed as received.
     1526 +.Pp
     1527 +When
     1528 +.Dv ICANON
     1529 +is set, the following echo functions are possible.
     1530 +.Bl -bullet -offset indent
     1531 +.It
     1532 +If
     1533 +.Dv ECHO
     1534 +and
     1535 +.Dv ECHOE
     1536 +are set, and
     1537 +.Dv ECHOPRT
     1538 +is not set, the
     1539 +.Sy ERASE ,
     1540 +.Sy ERASE2 ,
     1541 +and
     1542 +.Sy WERASE
     1543 +characters are echoed as one or
     1544 +more ASCII BS SP BS, which clears the last character(s) from a
     1545 +.Sy CRT
     1546 +screen.
     1547 +.It
     1548 +If
     1549 +.Dv ECHO ,
     1550 +.Dv ECHOPRT ,
     1551 +and
     1552 +.Dv IEXTEN
     1553 +are set, the first
     1554 +.Sy ERASE ,
     1555 +.Sy ERASE2 ,
     1556 +and
     1557 +.Sy WERASE
     1558 +character in a sequence echoes as a backslash
     1559 +.Ql \e ,
     1560 +followed by the characters being erased.
     1561 +Subsequent
     1562 +.Sy ERASE
     1563 +and
     1564 +.Sy WERASE
     1565 +characters echo the characters being erased, in reverse order.
     1566 +The
     1567 +next non-erase character causes a
     1568 +.Ql /
     1569 +(slash) to be typed before it is echoed.
     1570 +.Dv ECHOPRT
     1571 +should be used for hard copy terminals.
     1572 +.It
     1573 +If
     1574 +.Dv ECHOKE
     1575 +and
     1576 +.Dv IEXTEN
     1577 +are set, the kill character is echoed by
     1578 +erasing each character on the line from the screen (using the mechanism
     1579 +selected by
     1580 +.Dv ECHOE
     1581 +and
     1582 +.Dv ECHOPR ) .
     1583 +.It
     1584 +If
     1585 +.Dv ECHOK
     1586 +is set, and
     1587 +.Dv ECHOKE
     1588 +is not set, the
     1589 +.Sy NL
     1590 +character is
     1591 +echoed after the kill character to emphasize that the line is deleted.
     1592 +Note
     1593 +that a
     1594 +.Ql \e
     1595 +(escape) character or an
     1596 +.Sy LNEXT
     1597 +character preceding the erase
1854 1598  or kill character removes any special function.
1855      -.RE
1856      -.RS +4
1857      -.TP
1858      -.ie t \(bu
1859      -.el o
1860      -If  \fBECHONL\fR is set, the \fBNL\fR character is echoed even if  \fBECHO\fR
1861      -is not set.  This is useful for terminals set to local echo (so called
     1599 +.It
     1600 +If
     1601 +.Dv ECHONL
     1602 +is set, the
     1603 +.Sy NL
     1604 +character is echoed even if
     1605 +.Dv ECHO
     1606 +is not set.
     1607 +This is useful for terminals set to local echo (so called
1862 1608  half-duplex).
1863      -.RE
1864      -.sp
1865      -.LP
1866      -If \fBECHOCTL\fR and \fBIEXTEN\fR are set, all control characters (characters
1867      -with codes between 0 and 37 octal) other than  \fBASCII TAB\fR, \fBASCII NL\fR,
1868      -the \fBSTART\fR character, and the \fBSTOP\fR character,  \fBASCII CR\fR, and
1869      -\fBASCII BS\fR are echoed as ^ \fBX,\fR where \fBX\fR is the character given by
1870      -adding 100 octal to the code of the  control character (so that the character
1871      -with octal code 1 is echoed as ^ \fBA),\fR and the \fBASCII DEL\fR character,
1872      -with code 177 octal, is echoed as ^ \fB?\fR.
1873      -.sp
1874      -.LP
1875      -If  \fBNOFLSH\fR is set, the normal flush of the input and output queues
1876      -associated with the \fBINTR\fR, \fBQUIT\fR, \fBSTATUS\fR, and \fBSUSP\fR
1877      -characters is not done.  This bit should be set when restarting system calls
1878      -that read from or write to a terminal (see  \fBsigaction\fR(2)\|).
1879      -.sp
1880      -.LP
1881      -If  \fBTOSTOP\fR and \fBIEXTEN\fR are set, the signal  \fBSIGTTOU\fR is sent to
     1609 +.El
     1610 +.Pp
     1611 +If
     1612 +.Dv ECHOCTL
     1613 +and
     1614 +.Dv IEXTEN
     1615 +are set, all control characters (characters
     1616 +with codes between 0 and 37 octal) other than
     1617 +.Sy ASCII TAB ,
     1618 +.Sy ASCII NL ,
     1619 +the
     1620 +.Sy START
     1621 +character, and the
     1622 +.Sy STOP
     1623 +character,
     1624 +.Sy ASCII CR ,
     1625 +and
     1626 +.Sy ASCII BS
     1627 +are echoed as
     1628 +.No ^ Ns Em X ,
     1629 +where
     1630 +.Em X
     1631 +is the character given by adding
     1632 +.Ql 100
     1633 +octal to the code of the control character (so
     1634 +that the character with octal code
     1635 +.Ql 1
     1636 +is echoed as
     1637 +.No ^ Ns Sy A ) ,
     1638 +and the
     1639 +.Sy ASCII DEL
     1640 +character,
     1641 +with code
     1642 +.Ql 177
     1643 +octal, is echoed as
     1644 +.No ^ Ns Sy \&? .
     1645 +.Pp
     1646 +If
     1647 +.Dv NOFLSH
     1648 +is set, the normal flush of the input and output queues
     1649 +associated with the
     1650 +.Sy INTR ,
     1651 +.Sy QUIT ,
     1652 +.Sy STATUS ,
     1653 +and
     1654 +.Sy SUSP
     1655 +characters is not done.
     1656 +This bit should be set when restarting system calls
     1657 +that read from or write to a terminal
     1658 +.Po
     1659 +see
     1660 +.Xr sigaction 2
     1661 +.Pc .
     1662 +.Pp
     1663 +If
     1664 +.Dv TOSTOP
     1665 +and
     1666 +.Dv IEXTEN
     1667 +are set, the signal
     1668 +.Dv SIGTTOU
     1669 +is sent to
1882 1670  a process that tries to write to its controlling terminal if it is not in the
1883      -foreground process group for that terminal. This signal normally stops the
1884      -process. Otherwise, the output generated by that process is output to the
1885      -current output stream. Processes that are blocking or ignoring  \fBSIGTTOU\fR
     1671 +foreground process group for that terminal.
     1672 +This signal normally stops the process.
     1673 +Otherwise, the output generated by that process is output to the
     1674 +current output stream.
     1675 +Processes that are blocking or ignoring
     1676 +.Dv SIGTTOU
1886 1677  signals are excepted and allowed to produce output, if any.
1887      -.sp
1888      -.LP
1889      -If \fBFLUSHO\fR and \fBIEXTEN\fR are set, data written to the terminal is
1890      -discarded. This bit is set when the \fBFLUSH\fR character is typed. A program
1891      -can cancel the effect of typing the \fBFLUSH\fR character by clearing
1892      -\fBFLUSHO\fR.
1893      -.sp
1894      -.LP
1895      -If \fBPENDIN\fR and  \fBIEXTEN\fR are set, any input that has not yet been read
1896      -is reprinted when the next character arrives as input. \fBPENDIN\fR is then
     1678 +.Pp
     1679 +If
     1680 +.Dv FLUSHO
     1681 +and
     1682 +.Dv IEXTEN
     1683 +are set, data written to the terminal is
     1684 +discarded.
     1685 +This bit is set when the
     1686 +.Sy FLUSH
     1687 +character is typed.
     1688 +A program can cancel the effect of typing the
     1689 +.Sy FLUSH
     1690 +character by clearing
     1691 +.Dv FLUSHO .
     1692 +.Pp
     1693 +If
     1694 +.Dv PENDIN
     1695 +and
     1696 +.Dv IEXTEN
     1697 +are set, any input that has not yet been read
     1698 +is reprinted when the next character arrives as input.
     1699 +.Dv PENDIN
     1700 +is then
1897 1701  automatically cleared.
1898      -.sp
1899      -.LP
1900      -If \fBIEXTEN\fR is set, the following implementation-defined functions are
1901      -enabled:  special characters ( \fBWERASE\fR, \fBREPRINT\fR, \fBDISCARD\fR, and
1902      -\fBLNEXT\fR) and local flags ( \fBTOSTOP\fR, \fBECHOCTL\fR, \fBECHOPRT\fR,
1903      -\fBECHOKE\fR, \fBFLUSHO\fR, and \fBPENDIN\fR).
1904      -.SS "Minimum and Timeout"
1905      -.LP
1906      -The \fBMIN\fR and \fBTIME\fR values were described previously, in the
1907      -subsection, \fBNon-canonical Mode Input Processing\fR. The initial value of
1908      -\fBMIN\fR is 1, and the initial value of \fBTIME\fR is 0.
1909      -.SS "Terminal Size"
1910      -.LP
     1702 +.Pp
     1703 +If
     1704 +.Dv IEXTEN
     1705 +is set, the following implementation-defined functions are
     1706 +enabled: special characters (
     1707 +.Sy WERASE ,
     1708 +.Sy REPRINT ,
     1709 +.Sy DISCARD ,
     1710 +and
     1711 +.Sy LNEXT )
     1712 +and local flags (
     1713 +.Dv TOSTOP ,
     1714 +.Dv ECHOCTL ,
     1715 +.Dv ECHOPRT ,
     1716 +.Dv ECHOKE ,
     1717 +.Dv FLUSHO ,
     1718 +and
     1719 +.Dv PENDIN ) .
     1720 +.Ss "Minimum and Timeout"
     1721 +The
     1722 +.Sy MIN
     1723 +and
     1724 +.Sy TIME
     1725 +values were described previously, in the
     1726 +subsection,
     1727 +.Sy Non-canonical Mode Input Processing .
     1728 +The initial value of
     1729 +.Sy MIN
     1730 +is 1, and the initial value of
     1731 +.Sy TIME
     1732 +is 0.
     1733 +.Ss "Terminal Size"
1911 1734  The number of lines and columns on the terminal's display is specified in the
1912      -\fBwinsize\fR structure defined by  \fBsys/termios.h\fR and includes the
1913      -following members:
1914      -.sp
1915      -.in +2
1916      -.nf
     1735 +.Vt winsize
     1736 +structure defined by
     1737 +.In sys/termios.h
     1738 +and includes the following members:
     1739 +.Bd -literal -offset 2n
1917 1740  unsigned        short ws_row;  /* rows, in characters */
1918      -unsigned short  ws_col;    /* columns, in characters */
1919      -unsigned short  ws_xpixel; /* horizontal size, in pixels */
1920      -unsigned short  ws_ypixel; /* vertical size, in pixels */
1921      -.fi
1922      -.in -2
1923      -
1924      -.SS "Termio Structure"
1925      -.LP
1926      -The SunOS/SVR4 \fBtermio\fR structure is used by some \fBioctl\fRs; it is
1927      -defined by \fBsys/termio.h\fR and includes the following members:
1928      -.sp
1929      -.in +2
1930      -.nf
1931      -unsigned         short  c_iflag;  /* input modes */
1932      -unsigned         short  c_oflag;  /* output modes */
1933      -unsigned         short  c_cflag;  /* control modes */
1934      -unsigned         short c_lflag; /* local modes */
1935      -char c_line;                      /* line discipline */
1936      -unsigned         char  c_cc[NCC];  /* control chars */
1937      -.fi
1938      -.in -2
1939      -
1940      -.sp
1941      -.LP
1942      -The special control characters are defined by the array \fBc_cc\fR. The
1943      -symbolic name \fBNCC\fR is the size of the Control-character array and is also
1944      -defined by \fBtermio.h\fR. The relative positions, subscript names, and typical
1945      -default values  for each function are as follows:
1946      -.sp
1947      -
1948      -.sp
1949      -.TS
1950      -box;
1951      -c | c | c
1952      -l | l | l .
1953      -Relative Positions      Subscript Names Typical Default Values
1954      -_
1955      -0       VINTR   EXT
1956      -_
1957      -1       VQUIT   FS
1958      -_
1959      -2       VERASE  DEL
1960      -_
1961      -3       VKILL   NAK
1962      -_
1963      -4       VEOF    EOT
1964      -_
1965      -5       VEOL    NUL
1966      -_
1967      -6       VEOL2   NUL
1968      -_
1969      -7       Reserved        
1970      -.TE
1971      -
1972      -.sp
1973      -.LP
1974      -The \fBMIN\fR values is stored in the \fBVMIN\fR element of the \fBc_cc\fR
1975      -array; the \fBTIME\fR value is stored in the  \fBVTIME\fR element of the
1976      -\fBc_cc\fR array. The  \fBVMIN\fR element is the same element as the
1977      -\fBVEOF\fR element; the \fBVTIME\fR element is the same element as the
1978      -\fBVEOL\fR element.
1979      -.sp
1980      -.LP
1981      -The calls that use the \fBtermio\fR structure only affect the flags and control
1982      -characters that can be stored in the \fBtermio\fR structure; all other flags
1983      -and control characters are unaffected.
1984      -.SS "Modem Lines"
1985      -.LP
     1741 +unsigned short  ws_col;        /* columns, in characters */
     1742 +unsigned short  ws_xpixel;     /* horizontal size, in pixels */
     1743 +unsigned short  ws_ypixel;     /* vertical size, in pixels */
     1744 +.Ed
     1745 +.Ss "Termio Structure"
     1746 +The SunOS/SVR4
     1747 +.Vt termio
     1748 +structure is used by some
     1749 +.Fn ioctl Ns s ;
     1750 +it is defined by
     1751 +.In sys/termio.h
     1752 +and includes the following members:
     1753 +.Bd -literal -offset 2n
     1754 +unsigned        short   c_iflag;    /* input modes */
     1755 +unsigned        short   c_oflag;    /* output modes */
     1756 +unsigned        short   c_cflag;    /* control modes */
     1757 +unsigned        short   c_lflag;    /* local modes */
     1758 +char                    c_line;     /* line discipline */
     1759 +unsigned        char    c_cc[NCC];  /* control chars */
     1760 +.Ed
     1761 +.Pp
     1762 +The special control characters are defined by the array
     1763 +.Fa c_cc .
     1764 +The symbolic name
     1765 +.Dv NCC
     1766 +is the size of the Control-character array and is also
     1767 +defined by
     1768 +.In termio.h .
     1769 +The relative positions, subscript names, and typical
     1770 +default values for each function are as follows:
     1771 +.Bl -column "Relative Positions" "Subscript Names" "Typical Default Values"
     1772 +.It Relative Positions Ta Subscript Names Ta Typical Default Values
     1773 +.It 0 Ta VINTR Ta EXT
     1774 +.It 1 Ta VQUIT Ta FS
     1775 +.It 2 Ta VERASE Ta DEL
     1776 +.It 3 Ta VKILL Ta NAK
     1777 +.It 4 Ta VEOF Ta EOT
     1778 +.It 5 Ta VEOL Ta NUL
     1779 +.It 6 Ta VEOL2 Ta NUL
     1780 +.It 7 Ta Reserved Ta
     1781 +.El
     1782 +.Pp
     1783 +The
     1784 +.Sy MIN
     1785 +values is stored in the
     1786 +.Dv VMIN
     1787 +element of the
     1788 +.Fa c_cc
     1789 +array; the
     1790 +.Sy TIME
     1791 +value is stored in the
     1792 +.Dv VTIME
     1793 +element of the
     1794 +.Fa c_cc
     1795 +array.
     1796 +The
     1797 +.Dv VMIN
     1798 +element is the same element as the
     1799 +.Dv VEOF
     1800 +element; the
     1801 +.Dv VTIME
     1802 +element is the same element as the
     1803 +.Dv VEOL
     1804 +element.
     1805 +.Pp
     1806 +The calls that use the
     1807 +.Va termio
     1808 +structure only affect the flags and control
     1809 +characters that can be stored in the
     1810 +.Vt termio
     1811 +structure; all other flags and control characters are unaffected.
     1812 +.Ss "Modem Lines"
1986 1813  On special files representing serial ports, modem control lines can be read.
1987      -Control lines  (if the underlying hardware supports it) may also be changed.
1988      -Status lines are read-only. The following modem control and status lines may be
1989      -supported by a device; they are defined by \fBsys/termios.h\fR:
1990      -.sp
1991      -.ne 2
1992      -.na
1993      -\fB\fBTIOCM_LE\fR\fR
1994      -.ad
1995      -.RS 13n
1996      - line enable
1997      -.RE
1998      -
1999      -.sp
2000      -.ne 2
2001      -.na
2002      -\fB\fBTIOCM_DTR\fR\fR
2003      -.ad
2004      -.RS 13n
     1814 +Control lines (if the underlying hardware supports it) may also be changed.
     1815 +Status lines are read-only.
     1816 +The following modem control and status lines may be
     1817 +supported by a device; they are defined by
     1818 +.In sys/termios.h :
     1819 +.Pp
     1820 +.Bl -tag -width "TIOCM_DTR" -compact -offset 2n
     1821 +.It Dv TIOCM_LE
     1822 +line enable
     1823 +.It Dv TIOCM_DTR
2005 1824  data terminal ready
2006      -.RE
2007      -
2008      -.sp
2009      -.ne 2
2010      -.na
2011      -\fB\fBTIOCM_RTS\fR\fR
2012      -.ad
2013      -.RS 13n
     1825 +.It Dv TIOCM_RTS
2014 1826  request to send
2015      -.RE
2016      -
2017      -.sp
2018      -.ne 2
2019      -.na
2020      -\fB\fBTIOCM_ST\fR\fR
2021      -.ad
2022      -.RS 13n
     1827 +.It Dv TIOCM_ST
2023 1828  secondary transmit
2024      -.RE
2025      -
2026      -.sp
2027      -.ne 2
2028      -.na
2029      -\fB\fBTIOCM_SR\fR\fR
2030      -.ad
2031      -.RS 13n
     1829 +.It Dv TIOCM_SR
2032 1830  secondary receive
2033      -.RE
2034      -
2035      -.sp
2036      -.ne 2
2037      -.na
2038      -\fB\fBTIOCM_CTS\fR\fR
2039      -.ad
2040      -.RS 13n
     1831 +.It Dv TIOCM_CTS
2041 1832  clear to send
2042      -.RE
2043      -
2044      -.sp
2045      -.ne 2
2046      -.na
2047      -\fB\fBTIOCM_CAR\fR\fR
2048      -.ad
2049      -.RS 13n
     1833 +.It Dv TIOCM_CAR
2050 1834  carrier detect
2051      -.RE
2052      -
2053      -.sp
2054      -.ne 2
2055      -.na
2056      -\fB\fBTIOCM_RNG\fR\fR
2057      -.ad
2058      -.RS 13n
     1835 +.It Dv TIOCM_RNG
2059 1836  ring
2060      -.RE
2061      -
2062      -.sp
2063      -.ne 2
2064      -.na
2065      -\fB\fBTIOCM_DSR\fR\fR
2066      -.ad
2067      -.RS 13n
     1837 +.It Dv TIOCM_DSR
2068 1838  data set ready
2069      -.RE
2070      -
2071      -.sp
2072      -.LP
2073      -\fBTIOCM_CD\fR is a synonym for \fBTIOCM_CAR\fR, and \fBTIOCM_RI\fR is a
2074      -synonym for \fBTIOCM_RNG\fR. Not all of these are necessarily supported by any
     1839 +.El
     1840 +.Pp
     1841 +.Dv TIOCM_CD
     1842 +is a synonym for
     1843 +.Dv TIOCM_CAR ,
     1844 +and
     1845 +.Dv TIOCM_RI
     1846 +is a synonym for
     1847 +.Dv TIOCM_RNG .
     1848 +Not all of these are necessarily supported by any
2075 1849  particular device; check the manual page for the device in question.
2076      -.sp
2077      -.LP
     1850 +.Pp
2078 1851  The software carrier mode can be enabled or disabled using the
2079      -\fBTIOCSSOFTCAR\fR \fBioctl\fR. If the software carrier flag for a line is off,
2080      -the line pays attention to the hardware carrier detect (DCD) signal. The
2081      -\fBtty\fR device associated with the line cannot be opened until \fBDCD\fR is
2082      -asserted. If the software carrier flag is on, the line behaves as if \fBDCD\fR
     1852 +.Dv TIOCSSOFTCAR
     1853 +.Fn ioctl .
     1854 +If the software carrier flag for a line is off,
     1855 +the line pays attention to the hardware carrier detect (DCD) signal.
     1856 +The
     1857 +.Sy tty
     1858 +device associated with the line cannot be opened until
     1859 +.Sy DCD
     1860 +is asserted.
     1861 +If the software carrier flag is on, the line behaves as if
     1862 +.Sy DCD
2083 1863  is always asserted.
2084      -.sp
2085      -.LP
     1864 +.Pp
2086 1865  The software carrier flag is usually turned on for locally connected terminals
2087 1866  or other devices, and is off for lines with modems.
2088      -.sp
2089      -.LP
2090      -To be able to issue the \fBTIOCGSOFTCAR\fR and \fBTIOCSSOFTCAR\fR \fBioctl\fR
2091      -calls, the \fBtty\fR line should be opened with \fBO_NDELAY\fR so that the
2092      -\fBopen\fR(2) will not wait for the carrier.
2093      -.SS "Default Values"
2094      -.LP
2095      -The initial  \fBtermios\fR values upon driver open is configurable. This is
2096      -accomplished by setting the "ttymodes" property in the file
2097      -\fB/kernel/drv/options.conf\fR. Since this property is assigned during system
2098      -initialization,  any change to the "ttymodes" property will not take effect
2099      -until the next reboot.  The string value assigned to this property should be in
2100      -the same format as the output of the \fBstty\fR(1) command with the -g option.
2101      -.sp
2102      -.LP
2103      -If this property is undefined, the following  \fBtermios\fR modes are in
2104      -effect.  The initial input control value is \fBBRKINT\fR, \fBICRNL\fR,
2105      -\fBIXON\fR, \fBIMAXBEL\fR. The initial output control value is \fBOPOST\fR,
2106      -\fBONLCR\fR, \fBTAB3\fR. The initial hardware control value is \fBB9600\fR,
2107      -\fBCS8\fR, \fBCREAD\fR. The initial line-discipline control value is
2108      -\fBISIG\fR, \fBICANON\fR, \fBIEXTEN\fR, \fBECHO\fR, \fBECHOK\fR, \fBECHOE\fR,
2109      -\fBECHOKE\fR, \fBECHOCTL\fR.
2110      -.SH IOCTLS
2111      -.LP
2112      -The \fBioctl\fRs supported by devices and \fBSTREAMS\fR modules providing the
2113      -\fBtermios\fR(3C) interface are listed below. Some calls may not be supported
2114      -by all devices or modules.  The functionality provided by these calls is also
     1867 +.Pp
     1868 +To be able to issue the
     1869 +.Dv TIOCGSOFTCAR
     1870 +and
     1871 +.Dv TIOCSSOFTCAR
     1872 +.Fn ioctl
     1873 +calls, the
     1874 +.Sy tty
     1875 +line should be opened with
     1876 +.Dv O_NDELAY
     1877 +so that the
     1878 +.Xr open 2
     1879 +will not wait for the carrier.
     1880 +.Ss "Default Values"
     1881 +The initial
     1882 +.Vt termios
     1883 +values upon driver open is configurable.
     1884 +This is accomplished by setting the "ttymodes" property in the file
     1885 +.Pa /kernel/drv/options.conf .
     1886 +Since this property is assigned during system
     1887 +initialization, any change to the "ttymodes" property will not take effect
     1888 +until the next reboot.
     1889 +The string value assigned to this property should be in
     1890 +the same format as the output of the
     1891 +.Xr stty 1
     1892 +command with the -g option.
     1893 +.Pp
     1894 +If this property is undefined, the following
     1895 +.Vt termios
     1896 +modes are in effect.
     1897 +The initial input control value is
     1898 +.Dv BRKINT ,
     1899 +.Dv ICRNL ,
     1900 +.Dv IXON ,
     1901 +.Dv IMAXBEL .
     1902 +The initial output control value is
     1903 +.Dv OPOST ,
     1904 +.Dv ONLCR ,
     1905 +.Dv TAB3 .
     1906 +The initial hardware control value is
     1907 +.Dv B9600 ,
     1908 +.Dv CS8 ,
     1909 +.Dv CREAD .
     1910 +The initial line-discipline control value is
     1911 +.Dv ISIG ,
     1912 +.Dv ICANON ,
     1913 +.Dv IEXTEN ,
     1914 +.Dv ECHO ,
     1915 +.Dv ECHOK ,
     1916 +.Dv ECHOE ,
     1917 +.Dv ECHOKE ,
     1918 +.Dv ECHOCTL .
     1919 +.Sh IOCTLS
     1920 +The
     1921 +.Fn ioctl Ns s
     1922 +supported by devices and
     1923 +.Sy STREAMS
     1924 +modules providing the
     1925 +.Xr termios 3C
     1926 +interface are listed below.
     1927 +Some calls may not be supported by all devices or modules.
     1928 +The functionality provided by these calls is also
2115 1929  available through the preferred function call interface specified on
2116      -\fBtermios\fR.
2117      -.sp
2118      -.ne 2
2119      -.na
2120      -\fB\fBTCGETS\fR\fR
2121      -.ad
2122      -.RS 16n
2123      -The argument is a pointer to a \fBtermios\fR structure. The current terminal
2124      -parameters are fetched and stored into that structure.
2125      -.RE
2126      -
2127      -.sp
2128      -.ne 2
2129      -.na
2130      -\fB\fBTCSETS\fR\fR
2131      -.ad
2132      -.RS 16n
2133      -The argument is a pointer to a \fBtermios\fR structure. The current terminal
2134      -parameters are set from the values stored in that structure. The change is
2135      -immediate.
2136      -.RE
2137      -
2138      -.sp
2139      -.ne 2
2140      -.na
2141      -\fB\fBTCSETSW\fR\fR
2142      -.ad
2143      -.RS 16n
2144      -The argument is a pointer to a \fBtermios\fR structure. The current terminal
2145      -parameters are set from the values stored in that structure. The change occurs
2146      -after all characters queued for output have been transmitted. This form should
2147      -be used when changing parameters that affect output.
2148      -.RE
2149      -
2150      -.sp
2151      -.ne 2
2152      -.na
2153      -\fB\fBTCSETSF\fR\fR
2154      -.ad
2155      -.RS 16n
2156      -The argument is a pointer to a \fBtermios\fR structure. The current terminal
2157      -parameters are set from the values stored in that structure. The change occurs
2158      -after all characters queued for output have been transmitted; all characters
2159      -queued for input are discarded and then the change occurs.
2160      -.RE
2161      -
2162      -.sp
2163      -.ne 2
2164      -.na
2165      -\fB\fBTCGETA\fR\fR
2166      -.ad
2167      -.RS 16n
2168      -The argument is a pointer to a \fBtermio\fR structure. The current terminal
2169      -parameters are fetched, and those parameters that can be stored in a
2170      -\fBtermio\fR structure are stored into that structure.
2171      -.RE
2172      -
2173      -.sp
2174      -.ne 2
2175      -.na
2176      -\fB\fBTCSETA\fR\fR
2177      -.ad
2178      -.RS 16n
2179      -The argument is a pointer to a  \fBtermio\fR structure. Those terminal
2180      -parameters that can be stored in a \fBtermio\fR structure are set from the
2181      -values stored in that structure. The change is immediate.
2182      -.RE
2183      -
2184      -.sp
2185      -.ne 2
2186      -.na
2187      -\fB\fBTCSETAW\fR\fR
2188      -.ad
2189      -.RS 16n
2190      -The argument is a pointer to a \fBtermio\fR structure. Those terminal
2191      -parameters that can be stored in a \fBtermio\fR structure are set from the
2192      -values stored in that structure. The change occurs after all characters queued
2193      -for output have been transmitted. This form should be used when changing
2194      -parameters that affect output.
2195      -.RE
2196      -
2197      -.sp
2198      -.ne 2
2199      -.na
2200      -\fB\fBTCSETAF\fR\fR
2201      -.ad
2202      -.RS 16n
2203      -The argument is a pointer to a \fBtermio\fR structure.  Those terminal
2204      -parameters that can be stored in a \fBtermio\fR structure are set from the
2205      -values stored in that structure. The change occurs after all characters queued
     1930 +.Nm termios .
     1931 +.Bl -tag -width TIOCSSOFTCAR
     1932 +.It Dv TCGETS
     1933 +The argument is a pointer to a
     1934 +.Vt termios
     1935 +structure.
     1936 +The current terminal parameters are fetched and stored into that structure.
     1937 +.It Dv TCSETS
     1938 +The argument is a pointer to a
     1939 +.Vt termios
     1940 +structure.
     1941 +The current terminal parameters are set from the values stored in that structure.
     1942 +The change is immediate.
     1943 +.It Dv TCSETSW
     1944 +The argument is a pointer to a
     1945 +.Vt termios
     1946 +structure.
     1947 +The current terminal parameters are set from the values stored in that structure.
     1948 +The change occurs after all characters queued for output have been transmitted.
     1949 +This form should be used when changing parameters that affect output.
     1950 +.It Dv TCSETSF
     1951 +The argument is a pointer to a
     1952 +.Vt termios
     1953 +structure.
     1954 +The current terminal parameters are set from the values stored in that structure.
     1955 +The change occurs after all characters queued for output have been transmitted;
     1956 +all characters queued for input are discarded and then the change occurs.
     1957 +.It Dv TCGETA
     1958 +The argument is a pointer to a
     1959 +.Vt termio
     1960 +structure.
     1961 +The current terminal parameters are fetched, and those parameters that can be
     1962 +stored in a
     1963 +.Vt termio
     1964 +structure are stored into that structure.
     1965 +.It Dv TCSETA
     1966 +The argument is a pointer to a
     1967 +.Vt termio
     1968 +structure.
     1969 +Those terminal parameters that can be stored in a
     1970 +.Vt termio
     1971 +structure are set from the values stored in that structure.
     1972 +The change is immediate.
     1973 +.It Dv TCSETAW
     1974 +The argument is a pointer to a
     1975 +.Vt termio
     1976 +structure.
     1977 +Those terminal parameters that can be stored in a
     1978 +.Vt termio
     1979 +structure are set from
     1980 +the values stored in that structure.
     1981 +The change occurs after all characters queued for output have been transmitted.
     1982 +This form should be used when changing parameters that affect output.
     1983 +.It Dv TCSETAF
     1984 +The argument is a pointer to a
     1985 +.Vt termio
     1986 +structure.
     1987 +Those terminal parameters that can be stored in a
     1988 +.Vt termio
     1989 +structure are set from the values stored in that structure.
     1990 +The change occurs after all characters queued
2206 1991  for output have been transmitted; all characters queued for input are discarded
2207 1992  and then the change occurs.
2208      -.RE
2209      -
2210      -.sp
2211      -.ne 2
2212      -.na
2213      -\fB\fBTCSBRK\fR\fR
2214      -.ad
2215      -.RS 16n
2216      -The argument is an \fBint\fR value. Wait for the output to drain. If the
2217      -argument is \fB0\fR, then send a break (zero valued bits for 0.25 seconds).
2218      -.RE
2219      -
2220      -.sp
2221      -.ne 2
2222      -.na
2223      -\fB\fBTCXONC\fR\fR
2224      -.ad
2225      -.RS 16n
2226      -Start/stop control. The argument is an \fBint\fR value. If the argument is
2227      -\fB0\fR, suspend output; if \fB1\fR, restart suspended output; if \fB2\fR,
2228      -suspend input; if \fB3\fR, restart suspended input.
2229      -.RE
2230      -
2231      -.sp
2232      -.ne 2
2233      -.na
2234      -\fB\fBTCFLSH\fR\fR
2235      -.ad
2236      -.RS 16n
2237      -The argument is an \fBint\fR value. If the argument is \fB0\fR, flush the input
2238      -queue; if \fB1\fR, flush the output queue; if \fB2\fR, flush both the input and
2239      -output queues.
2240      -.RE
2241      -
2242      -.sp
2243      -.ne 2
2244      -.na
2245      -\fB\fBTIOCGPGRP\fR\fR
2246      -.ad
2247      -.RS 16n
2248      -The argument is a pointer to a \fBpid_t\fR. Set the value of that  \fBpid_t\fR
2249      -to the process group \fBID\fR of the foreground process group associated with
2250      -the terminal. See  \fBtermios\fR(3C) for a description of  \fBTCGETPGRP\fR.
2251      -.RE
2252      -
2253      -.sp
2254      -.ne 2
2255      -.na
2256      -\fB\fBTIOCSPGRP\fR\fR
2257      -.ad
2258      -.RS 16n
2259      -The argument is a pointer to a \fBpid_t\fR. Associate the process group whose
2260      -process group \fBID\fR is specified by the value of that  \fBpid_t\fR with the
2261      -terminal. The new process group value must be in the range of valid process
2262      -group \fBID\fR values.  Otherwise, the error  \fBEPERM\fR is returned.
2263      -.RE
2264      -
2265      -.sp
2266      -.ne 2
2267      -.na
2268      -\fB\fBTIOCGSID\fR\fR
2269      -.ad
2270      -.RS 16n
2271      -The argument is a pointer to a \fBpid_t\fR. The session ID of the terminal is
2272      -fetched  and stored in the  \fBpid_t\fR.
2273      -.RE
2274      -
2275      -.sp
2276      -.ne 2
2277      -.na
2278      -\fB\fBTIOCGWINSZ\fR\fR
2279      -.ad
2280      -.RS 16n
2281      -The argument is a pointer to a \fBwinsize\fR structure. The terminal driver's
     1993 +.It Dv TCSBRK
     1994 +The argument is an
     1995 +.Vt int
     1996 +value.
     1997 +Wait for the output to drain.
     1998 +If the argument is
     1999 +.Sy 0 ,
     2000 +then send a break (zero valued bits for 0\&.25 seconds).
     2001 +.It Dv TCXONC
     2002 +Start/stop control.
     2003 +The argument is an
     2004 +.Vt int
     2005 +value.
     2006 +If the argument is
     2007 +.Sy 0 ,
     2008 +suspend output; if
     2009 +.Sy 1 ,
     2010 +restart suspended output; if
     2011 +.Sy 2 ,
     2012 +suspend input; if
     2013 +.Sy 3 ,
     2014 +restart suspended input.
     2015 +.It Dv TCFLSH
     2016 +The argument is an
     2017 +.Vt int
     2018 +value.
     2019 +If the argument is
     2020 +.Sy 0 ,
     2021 +flush the input queue; if
     2022 +.Sy 1 ,
     2023 +flush the output queue; if
     2024 +.Sy 2 ,
     2025 +flush both the input and output queues.
     2026 +.It Dv TIOCGPGRP
     2027 +The argument is a pointer to a
     2028 +.Vt pid_t .
     2029 +Set the value of that
     2030 +.Vt pid_t
     2031 +to the process group
     2032 +.Sy ID
     2033 +of the foreground process group associated with the terminal.
     2034 +See
     2035 +.Xr termios 3C
     2036 +for a description of
     2037 +.Dv TCGETPGRP .
     2038 +.It Dv TIOCSPGRP
     2039 +The argument is a pointer to a
     2040 +.Vt pid_t .
     2041 +Associate the process group whose
     2042 +process group
     2043 +.Sy ID
     2044 +is specified by the value of that
     2045 +.Vt pid_t
     2046 +with the terminal.
     2047 +The new process group value must be in the range of valid process
     2048 +group
     2049 +.Sy ID
     2050 +values.
     2051 +Otherwise, the error
     2052 +.Er EPERM
     2053 +is returned.
     2054 +.It Dv TIOCGSID
     2055 +The argument is a pointer to a
     2056 +.Vt pid_t .
     2057 +The session ID of the terminal is fetched and stored in the
     2058 +.Vt pid_t .
     2059 +.It Dv TIOCGWINSZ
     2060 +The argument is a pointer to a
     2061 +.Vt winsize
     2062 +structure.
     2063 +The terminal driver's
2282 2064  notion of the terminal size is stored into that structure.
2283      -.RE
2284      -
2285      -.sp
2286      -.ne 2
2287      -.na
2288      -\fB\fBTIOCSWINSZ\fR\fR
2289      -.ad
2290      -.RS 16n
2291      -The argument is a pointer to a \fBwinsize\fR structure. The terminal driver's
     2065 +.It Dv TIOCSWINSZ
     2066 +The argument is a pointer to a
     2067 +.Vt winsize
     2068 +structure.
     2069 +The terminal driver's
2292 2070  notion of the terminal size is set from the values specified in that structure.
2293      -If the new sizes are different from the old sizes, a \fBSIGWINCH\fR signal is
2294      -set to the process group of the terminal.
2295      -.RE
2296      -
2297      -.sp
2298      -.ne 2
2299      -.na
2300      -\fB\fBTIOCMBIS\fR\fR
2301      -.ad
2302      -.RS 16n
2303      -The argument is a pointer to an \fBint\fR whose value is a mask containing
2304      -modem control lines to be turned on. The control lines whose bits are set in
     2071 +If the new sizes are different from the old sizes, a
     2072 +.Dv SIGWINCH
     2073 +signal is set to the process group of the terminal.
     2074 +.It Dv TIOCMBIS
     2075 +The argument is a pointer to an
     2076 +.Vt int
     2077 +whose value is a mask containing modem control lines to be turned on.
     2078 +The control lines whose bits are set in
2305 2079  the argument are turned on; no other control lines are affected.
2306      -.RE
2307      -
2308      -.sp
2309      -.ne 2
2310      -.na
2311      -\fB\fBTIOCMBIC\fR\fR
2312      -.ad
2313      -.RS 16n
2314      -The argument is a pointer to an \fBint\fR whose value is a mask containing
2315      -modem control lines to be turned off. The control lines whose bits are set in
     2080 +.It Dv TIOCMBIC
     2081 +The argument is a pointer to an
     2082 +.Vt int
     2083 +whose value is a mask containing modem control lines to be turned off.
     2084 +The control lines whose bits are set in
2316 2085  the argument are turned off; no other control lines are affected.
2317      -.RE
2318      -
2319      -.sp
2320      -.ne 2
2321      -.na
2322      -\fB\fBTIOCMGET\fR\fR
2323      -.ad
2324      -.RS 16n
2325      -The argument is a pointer to an  \fBint\fR. The current state of the modem
2326      -status lines is fetched and stored in the  \fBint\fR pointed to by the
2327      -argument.
2328      -.RE
2329      -
2330      -.sp
2331      -.ne 2
2332      -.na
2333      -\fB\fBTIOCMSET\fR\fR
2334      -.ad
2335      -.RS 16n
2336      -The argument is a pointer to an  \fBint\fR containing a new set of modem
2337      -control lines. The modem control lines are turned on or off, depending on
     2086 +.It Dv TIOCMGET
     2087 +The argument is a pointer to an
     2088 +.Vt int .
     2089 +The current state of the modem
     2090 +status lines is fetched and stored in the
     2091 +.Vt int
     2092 +pointed to by the argument.
     2093 +.It Dv TIOCMSET
     2094 +The argument is a pointer to an
     2095 +.Vt int
     2096 +containing a new set of modem control lines.
     2097 +The modem control lines are turned on or off, depending on
2338 2098  whether the bit for that mode is set or clear.
2339      -.RE
2340      -
2341      -.sp
2342      -.ne 2
2343      -.na
2344      -\fB\fBTIOCSPPS\fR\fR
2345      -.ad
2346      -.RS 16n
2347      -The argument is a pointer to an \fBint\fR that determines whether
2348      -pulse-per-second event handling is to be enabled (non-zero) or disabled (zero).
     2099 +.It Dv TIOCSPPS
     2100 +The argument is a pointer to an
     2101 +.Vt int
     2102 +that determines whether pulse-per-second event handling is to be enabled
     2103 +(non-zero) or disabled (zero).
2349 2104  If a one-pulse-per-second reference clock is attached to the serial line's data
2350      -carrier detect input, the local system clock will be calibrated to it. A clock
2351      -with a high error, that is, a deviation of more than 25 microseconds per tick,
2352      -is ignored.
2353      -.RE
2354      -
2355      -.sp
2356      -.ne 2
2357      -.na
2358      -\fB\fBTIOCGPPS\fR\fR
2359      -.ad
2360      -.RS 16n
2361      -The argument is a pointer to an \fBint\fR, in which the state of the even
2362      -handling is returned. The \fBint\fR is set to a non-zero value if
2363      -pulse-per-second (PPS) handling has been enabled. Otherwise, it is set to zero.
2364      -.RE
2365      -
2366      -.sp
2367      -.ne 2
2368      -.na
2369      -\fB\fBTIOCGSOFTCAR\fR\fR
2370      -.ad
2371      -.RS 16n
2372      -The argument is a pointer to an \fBint\fR whose value is \fB1\fR or \fB0\fR,
     2105 +carrier detect input, the local system clock will be calibrated to it.
     2106 +A clock with a high error, that is, a deviation of more than 25 microseconds
     2107 +per tick, is ignored.
     2108 +.It Dv TIOCGPPS
     2109 +The argument is a pointer to an
     2110 +.Vt int ,
     2111 +in which the state of the even handling is returned.
     2112 +The
     2113 +.Vt int
     2114 +is set to a non-zero value if pulse-per-second (PPS) handling has been enabled.
     2115 +Otherwise, it is set to zero.
     2116 +.It Dv TIOCGSOFTCAR
     2117 +The argument is a pointer to an
     2118 +.Vt int
     2119 +whose value is
     2120 +.Sy 1
     2121 +or
     2122 +.Sy 0 ,
2373 2123  depending on whether the software carrier detect is turned on or off.
2374      -.RE
2375      -
2376      -.sp
2377      -.ne 2
2378      -.na
2379      -\fB\fBTIOCSSOFTCAR\fR\fR
2380      -.ad
2381      -.RS 16n
2382      -The argument is a pointer to an \fBint\fR whose value is \fB1\fR or \fB0\fR.
2383      -The value of the integer should be \fB0\fR to turn off software carrier, or
2384      -\fB1\fR to turn it on.
2385      -.RE
2386      -
2387      -.sp
2388      -.ne 2
2389      -.na
2390      -\fB\fBTIOCGPPSEV\fR\fR
2391      -.ad
2392      -.RS 16n
2393      -The argument is a pointer to a \fBstruct\fR \fBppsclockev\fR. This structure
2394      -contains the following members:
2395      -.sp
2396      -.in +2
2397      -.nf
     2124 +.It Dv TIOCSSOFTCAR
     2125 +The argument is a pointer to an
     2126 +.Vt int
     2127 +whose value is
     2128 +.Sy 1
     2129 +or
     2130 +.Sy 0 .
     2131 +The value of the integer should be
     2132 +.Sy 0
     2133 +to turn off software carrier, or
     2134 +.Sy 1
     2135 +to turn it on.
     2136 +.It Dv TIOCGPPSEV
     2137 +The argument is a pointer to a
     2138 +.Vt "struct ppsclockev" .
     2139 +This structure contains the following members:
     2140 +.Bd -literal -offset 2n
2398 2141  struct timeval tv;
2399 2142  uint32_t serial;
2400      -.fi
2401      -.in -2
2402      -
2403      -"tv" is the system clock timestamp when the event (pulse on the \fBDCD\fR pin)
2404      -occurred. "serial" is the ordinal of the event, which each consecutive event
2405      -being assigned the next ordinal. The first event registered gets a "serial"
2406      -value of \fB1\fR. The \fBTIOCGPPSEV\fR returns the last event registered;
2407      -multiple calls will persistently return the same event until a new one is
2408      -registered. In addition to time stamping and saving the event, if it is of
     2143 +.Ed
     2144 +.Pp
     2145 +.Fa tv
     2146 +is the system clock timestamp when the event (pulse on the
     2147 +.Sy DCD
     2148 +pin) occurred.
     2149 +.Fa serial
     2150 +is the ordinal of the event, which each consecutive event
     2151 +being assigned the next ordinal.
     2152 +The first event registered gets a
     2153 +.Fa serial
     2154 +value of
     2155 +.Sy 1 .
     2156 +The
     2157 +.Dv TIOCGPPSEV
     2158 +returns the last event registered; multiple calls will persistently return the
     2159 +same event until a new one is registered.
     2160 +In addition to time stamping and saving the event, if it is of
2409 2161  one-second period and of consistently high accuracy, the local system clock
2410 2162  will automatically calibrate to it.
2411      -.RE
2412      -
2413      -.SH FILES
2414      -.LP
2415      -Files in or under /\fBdev\fR
2416      -.SH SEE ALSO
2417      -.LP
2418      -\fBstty\fR(1), \fBfork\fR(2), \fBgetpgid\fR(2), \fBgetsid\fR(2),
2419      -\fBioctl\fR(2), \fBsetsid\fR(2), \fBsigaction\fR(2), \fBsignal\fR(3C),
2420      -\fBtcsetpgrp\fR(3C), \fBtermios\fR(3C), \fBsignal.h\fR(3HEAD),
2421      -\fBstreamio\fR(7I)
     2163 +.El
     2164 +.Sh FILES
     2165 +Files in or under
     2166 +.Pa /dev
     2167 +.Sh SEE ALSO
     2168 +.Xr stty 1 ,
     2169 +.Xr fork 2 ,
     2170 +.Xr getpgid 2 ,
     2171 +.Xr getsid 2 ,
     2172 +.Xr ioctl 2 ,
     2173 +.Xr setsid 2 ,
     2174 +.Xr sigaction 2 ,
     2175 +.Xr signal 3C ,
     2176 +.Xr tcsetpgrp 3C ,
     2177 +.Xr termios 3C ,
     2178 +.Xr signal.h 3HEAD ,
     2179 +.Xr streamio 7I
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX