nrelease - fix/improve livecd
[dragonfly.git] / lib / libc / gen / tcsetattr.3
CommitLineData
984263bc
MD
1.\" Copyright (c) 1991, 1993
2.\" The Regents of the University of California. All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\" notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\" notice, this list of conditions and the following disclaimer in the
11.\" documentation and/or other materials provided with the distribution.
dc71b7ab 12.\" 3. Neither the name of the University nor the names of its contributors
984263bc
MD
13.\" may be used to endorse or promote products derived from this software
14.\" without specific prior written permission.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\" @(#)tcsetattr.3 8.3 (Berkeley) 1/2/94
29.\" $FreeBSD: src/lib/libc/gen/tcsetattr.3,v 1.6.2.4 2002/12/29 16:35:34 schweikh Exp $
30.\"
81c399c9 31.Dd December 10, 2017
984263bc
MD
32.Dt TCSETATTR 3
33.Os
34.Sh NAME
35.Nm cfgetispeed ,
36.Nm cfsetispeed ,
37.Nm cfgetospeed ,
38.Nm cfsetospeed ,
39.Nm cfsetspeed ,
40.Nm cfmakeraw ,
81c399c9 41.Nm cfmakesane ,
984263bc
MD
42.Nm tcgetattr ,
43.Nm tcsetattr
44.Nd manipulating the termios structure
45.Sh LIBRARY
46.Lb libc
47.Sh SYNOPSIS
48.In termios.h
49.Ft speed_t
50.Fn cfgetispeed "const struct termios *t"
51.Ft int
52.Fn cfsetispeed "struct termios *t" "speed_t speed"
53.Ft speed_t
54.Fn cfgetospeed "const struct termios *t"
55.Ft int
56.Fn cfsetospeed "struct termios *t" "speed_t speed"
57.Ft int
58.Fn cfsetspeed "struct termios *t" "speed_t speed"
59.Ft void
60.Fn cfmakeraw "struct termios *t"
81c399c9
SW
61.Ft void
62.Fn cfmakesane "struct termios *t"
984263bc
MD
63.Ft int
64.Fn tcgetattr "int fd" "struct termios *t"
65.Ft int
66.Fn tcsetattr "int fd" "int action" "const struct termios *t"
67.Sh DESCRIPTION
68The
69.Fn cfmakeraw ,
81c399c9 70.Fn cfmakesane ,
984263bc
MD
71.Fn tcgetattr
72and
73.Fn tcsetattr
74functions are provided for getting and setting the termios structure.
75.Pp
76The
77.Fn cfgetispeed ,
78.Fn cfsetispeed ,
79.Fn cfgetospeed ,
80.Fn cfsetospeed
81and
82.Fn cfsetspeed
83functions are provided for getting and setting the baud rate values in
84the termios structure.
85The effects of the functions on the terminal as described below
86do not become effective, nor are all errors detected, until the
87.Fn tcsetattr
88function is called.
89Certain values for baud rates set in the termios structure and passed to
90.Fn tcsetattr
91have special meanings.
92These are discussed in the portion of the manual page that describes the
93.Fn tcsetattr
94function.
95.Sh GETTING AND SETTING THE BAUD RATE
96The input and output baud rates are found in the termios structure.
97The unsigned integer
98.Li speed_t
99is typedef'd in the include file
44cb301e 100.In termios.h .
984263bc
MD
101The value of the integer corresponds directly to the baud rate being
102represented, however, the following symbolic values are defined.
103.Bd -literal
104#define B0 0
105#define B50 50
106#define B75 75
107#define B110 110
108#define B134 134
109#define B150 150
110#define B200 200
111#define B300 300
112#define B600 600
113#define B1200 1200
602f6c36 114#define B1800 1800
984263bc
MD
115#define B2400 2400
116#define B4800 4800
117#define B9600 9600
118#define B19200 19200
119#define B38400 38400
602f6c36
SW
120#if __BSD_VISIBLE
121#define B7200 7200
122#define B14400 14400
123#define B28800 28800
124#define B57600 57600
125#define B76800 76800
126#define B115200 115200
127#define B230400 230400
984263bc
MD
128#define EXTA 19200
129#define EXTB 38400
602f6c36 130#endif /* __BSD_VISIBLE */
984263bc
MD
131.Ed
132.Pp
133The
134.Fn cfgetispeed
135function returns the input baud rate in the termios structure referenced by
136.Fa tp .
137.Pp
138The
139.Fn cfsetispeed
140function sets the input baud rate in the termios structure referenced by
141.Fa tp
142to
143.Fa speed .
144.Pp
145The
146.Fn cfgetospeed
147function returns the output baud rate in the termios structure referenced by
148.Fa tp .
149.Pp
150The
151.Fn cfsetospeed
152function sets the output baud rate in the termios structure referenced by
153.Fa tp
154to
155.Fa speed .
156.Pp
157The
158.Fn cfsetspeed
159function sets both the input and output baud rate in the termios structure
160referenced by
161.Fa tp
162to
163.Fa speed .
164.Pp
165Upon successful completion, the functions
166.Fn cfsetispeed ,
167.Fn cfsetospeed ,
168and
169.Fn cfsetspeed
170return a value of 0.
171Otherwise, a value of -1 is returned and the global variable
172.Va errno
173is set to indicate the error.
174.Sh GETTING AND SETTING THE TERMIOS STATE
175This section describes the functions that are used to control the general
176terminal interface.
177Unless otherwise noted for a specific command, these functions are restricted
178from use by background processes.
179Attempts to perform these operations shall cause the process group to be sent
632f95cb
SW
180a
181.Dv SIGTTOU
182signal.
183If the calling process is blocking or ignoring
184.Dv SIGTTOU
185signals, the process is allowed to perform the operation and the
186.Dv SIGTTOU
187signal is not sent.
984263bc
MD
188.Pp
189In all the functions, although
190.Fa fd
191is an open file descriptor, the functions affect the underlying terminal
192file, not just the open file description associated with the particular
193file descriptor.
194.Pp
195The
196.Fn cfmakeraw
197function sets the flags stored in the termios structure to a state disabling
198all input and output processing, giving a
81c399c9
SW
199.Dq raw I/O path ,
200while the
201.Fn cfmakesane
202function sets them to a state similar to those of a newly created
203terminal device.
984263bc
MD
204It should be noted that there is no function to reverse this effect.
205This is because there are a variety of processing options that could be
206re-enabled and the correct method is for an application to snapshot the
207current terminal state using the function
208.Fn tcgetattr ,
81c399c9 209setting raw or sane mode with
984263bc 210.Fn cfmakeraw
81c399c9
SW
211or
212.Fn cfmakesane
984263bc
MD
213and the subsequent
214.Fn tcsetattr ,
215and then using another
216.Fn tcsetattr
217with the saved state to revert to the previous terminal state.
218.Pp
219The
220.Fn tcgetattr
221function copies the parameters associated with the terminal referenced
222by
223.Fa fd
224in the termios structure referenced by
225.Fa tp .
226This function is allowed from a background process, however, the terminal
227attributes may be subsequently changed by a foreground process.
228.Pp
229The
230.Fn tcsetattr
231function sets the parameters associated with the terminal from the
232termios structure referenced by
233.Fa tp .
234The
235.Fa action
236field is created by
237.Em or Ns 'ing
238the following values, as specified in the include file
44cb301e 239.In termios.h .
632f95cb
SW
240.Bl -tag -width ".Dv TCSADRAIN"
241.It Dv TCSANOW
984263bc 242The change occurs immediately.
632f95cb 243.It Dv TCSADRAIN
984263bc
MD
244The change occurs after all output written to
245.Fa fd
246has been transmitted to the terminal.
247This value of
248.Fa action
249should be used when changing parameters that affect output.
632f95cb 250.It Dv TCSAFLUSH
984263bc
MD
251The change occurs after all output written to
252.Fa fd
253has been transmitted to the terminal.
254Additionally, any input that has been received but not read is discarded.
632f95cb 255.It Dv TCSASOFT
984263bc
MD
256If this value is
257.Em or Ns 'ed
258into the
259.Fa action
260value, the values of the
261.Em c_cflag ,
262.Em c_ispeed ,
263and
264.Em c_ospeed
265fields are ignored.
266.El
267.Pp
268The 0 baud rate is used to terminate the connection.
269If 0 is specified as the output speed to the function
270.Fn tcsetattr ,
271modem control will no longer be asserted on the terminal, disconnecting
272the terminal.
273.Pp
274If zero is specified as the input speed to the function
275.Fn tcsetattr ,
276the input baud rate will be set to the same value as that specified by
277the output baud rate.
278.Pp
279If
280.Fn tcsetattr
281is unable to make any of the requested changes, it returns -1 and
0f09e575
SW
282sets
283.Va errno .
984263bc
MD
284Otherwise, it makes all of the requested changes it can.
285If the specified input and output baud rates differ and are a combination
286that is not supported, neither baud rate is changed.
287.Pp
288Upon successful completion, the functions
289.Fn tcgetattr
290and
291.Fn tcsetattr
292return a value of 0.
293Otherwise, they
294return -1 and the global variable
295.Va errno
296is set to indicate the error, as follows:
297.Bl -tag -width Er
298.It Bq Er EBADF
299The
300.Fa fd
301argument to
302.Fn tcgetattr
303or
304.Fn tcsetattr
305was not a valid file descriptor.
306.It Bq Er EINTR
307The
308.Fn tcsetattr
309function was interrupted by a signal.
310.It Bq Er EINVAL
311The
312.Fa action
313argument to the
314.Fn tcsetattr
315function was not valid, or an attempt was made to change an attribute
316represented in the termios structure to an unsupported value.
317.It Bq Er ENOTTY
318The file associated with the
319.Fa fd
320argument to
321.Fn tcgetattr
322or
323.Fn tcsetattr
324is not a terminal.
325.El
326.Sh SEE ALSO
327.Xr tcsendbreak 3 ,
328.Xr termios 4
329.Sh STANDARDS
330The
331.Fn cfgetispeed ,
332.Fn cfsetispeed ,
333.Fn cfgetospeed ,
334.Fn cfsetospeed ,
335.Fn tcgetattr
336and
337.Fn tcsetattr
338functions are expected to be compliant with the
339.St -p1003.1-88
340specification.
341The
81c399c9
SW
342.Fn cfmakeraw ,
343.Fn cfmakesane
984263bc
MD
344and
345.Fn cfsetspeed
346functions,
347as well as the
632f95cb 348.Dv TCSASOFT
984263bc
MD
349option to the
350.Fn tcsetattr
351function are extensions to the
352.St -p1003.1-88
353specification.