 b6cbf7203b
			
		
	
	
		b6cbf7203b
		
	
	
	
	
		
			
			This patch imports the unmodified current version of NetBSD libc. The NetBSD includes are in /nbsd_include, while the libc code itself is split between lib/nbsd_libc and common/lib/libc.
		
			
				
	
	
		
			332 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			332 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: tcsetattr.3,v 1.13 2010/03/22 19:30:55 joerg Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\"	@(#)tcsetattr.3	8.3 (Berkeley) 1/2/94
 | |
| .\"
 | |
| .Dd May 1, 2004
 | |
| .Dt TCSETATTR 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm cfgetispeed ,
 | |
| .Nm cfsetispeed ,
 | |
| .Nm cfgetospeed ,
 | |
| .Nm cfsetospeed ,
 | |
| .Nm cfsetspeed ,
 | |
| .Nm cfmakeraw ,
 | |
| .Nm tcgetattr ,
 | |
| .Nm tcsetattr
 | |
| .Nd manipulating the termios structure
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In termios.h
 | |
| .Ft speed_t
 | |
| .Fn cfgetispeed "const struct termios *t"
 | |
| .Ft int
 | |
| .Fn cfsetispeed "struct termios *t" "speed_t speed"
 | |
| .Ft speed_t
 | |
| .Fn cfgetospeed "const struct termios *t"
 | |
| .Ft int
 | |
| .Fn cfsetospeed "struct termios *t" "speed_t speed"
 | |
| .Ft int
 | |
| .Fn cfsetspeed "struct termios *t" "speed_t speed"
 | |
| .Ft void
 | |
| .Fn cfmakeraw "struct termios *t"
 | |
| .Ft int
 | |
| .Fn tcgetattr "int fd" "struct termios *t"
 | |
| .Ft int
 | |
| .Fn tcsetattr "int fd" "int action" "const struct termios *t"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm cfmakeraw ,
 | |
| .Nm tcgetattr
 | |
| and
 | |
| .Nm tcsetattr
 | |
| functions are provided for getting and setting the termios structure.
 | |
| .Pp
 | |
| The
 | |
| .Nm cfgetispeed ,
 | |
| .Nm cfsetispeed ,
 | |
| .Nm cfgetospeed ,
 | |
| .Nm cfsetospeed
 | |
| and
 | |
| .Nm cfsetspeed
 | |
| functions are provided for getting and setting the baud rate values in
 | |
| the termios structure.
 | |
| The effects of the functions on the terminal as described below
 | |
| do not become effective, nor are all errors detected, until the
 | |
| .Nm tcsetattr
 | |
| function is called.
 | |
| Certain values for baud rates set in the termios structure and passed to
 | |
| .Nm tcsetattr
 | |
| have special meanings.
 | |
| These are discussed in the portion of the manual page that describes the
 | |
| .Nm tcsetattr
 | |
| function.
 | |
| .Sh GETTING AND SETTING THE BAUD RATE
 | |
| The input and output baud rates are found in the termios structure.
 | |
| The unsigned integer
 | |
| .Li speed_t
 | |
| is typdef'd in the include file
 | |
| .In termios.h .
 | |
| The value of the integer corresponds directly to the baud rate being
 | |
| represented, however, the following symbolic values are defined.
 | |
| .Bd -literal
 | |
| #define B0	0
 | |
| #define B50	50
 | |
| #define B75	75
 | |
| #define B110	110
 | |
| #define B134	134
 | |
| #define B150	150
 | |
| #define B200	200
 | |
| #define B300	300
 | |
| #define B600	600
 | |
| #define B1200	1200
 | |
| #define	B1800	1800
 | |
| #define B2400	2400
 | |
| #define B4800	4800
 | |
| #define B9600	9600
 | |
| #define B19200	19200
 | |
| #define B38400	38400
 | |
| #ifndef _POSIX_SOURCE
 | |
| #define EXTA	19200
 | |
| #define EXTB	38400
 | |
| #endif  /*_POSIX_SOURCE */
 | |
| .Ed
 | |
| .Pp
 | |
| The
 | |
| .Nm cfgetispeed
 | |
| function returns the input baud rate in the termios structure referenced by
 | |
| .Fa tp .
 | |
| .Pp
 | |
| The
 | |
| .Nm cfsetispeed
 | |
| function sets the input baud rate in the termios structure referenced by
 | |
| .Fa tp
 | |
| to
 | |
| .Fa speed .
 | |
| .Pp
 | |
| The
 | |
| .Nm cfgetospeed
 | |
| function returns the output baud rate in the termios structure referenced by
 | |
| .Fa tp .
 | |
| .Pp
 | |
| The
 | |
| .Nm cfsetospeed
 | |
| function sets the output baud rate in the termios structure referenced by
 | |
| .Fa tp
 | |
| to
 | |
| .Fa speed .
 | |
| .Pp
 | |
| The
 | |
| .Nm cfsetspeed
 | |
| function sets both the input and output baud rate in the termios structure
 | |
| referenced by
 | |
| .Fa tp
 | |
| to
 | |
| .Fa speed .
 | |
| .Pp
 | |
| Upon successful completion, the functions
 | |
| .Nm cfsetispeed ,
 | |
| .Nm cfsetospeed ,
 | |
| and
 | |
| .Nm cfsetspeed
 | |
| return a value of 0.
 | |
| Otherwise, a value of -1 is returned and the global variable
 | |
| .Va errno
 | |
| is set to indicate the error.
 | |
| .Sh GETTING AND SETTING THE TERMIOS STATE
 | |
| This section describes the functions that are used to control the general
 | |
| terminal interface.
 | |
| Unless otherwise noted for a specific command, these functions are restricted
 | |
| from use by background processes.
 | |
| Attempts to perform these operations shall cause the process group to be sent
 | |
| a SIGTTOU signal.
 | |
| If the calling process is blocking or ignoring SIGTTOU signals, the process
 | |
| is allowed to perform the operation and the SIGTTOU signal is not sent.
 | |
| .Pp
 | |
| In all the functions, although
 | |
| .Fa fd
 | |
| is an open file descriptor, the functions affect the underlying terminal
 | |
| file, not just the open file description associated with the particular
 | |
| file descriptor.
 | |
| .Pp
 | |
| The
 | |
| .Nm cfmakeraw
 | |
| function sets the flags stored in the termios structure (initialized by
 | |
| .Nm tcgetattr )
 | |
| to a state disabling all input and output processing, giving a
 | |
| .Dq raw I/O path .
 | |
| It should be noted that there is no function to reverse this effect.
 | |
| This is because there are a variety of processing options that could be
 | |
| re-enabled and the correct method is for an application to snapshot the
 | |
| current terminal state using the function
 | |
| .Nm tcgetattr ,
 | |
| setting raw mode with
 | |
| .Nm cfmakeraw
 | |
| and the subsequent
 | |
| .Nm tcsetattr ,
 | |
| and then using another
 | |
| .Nm tcsetattr
 | |
| with the saved state to revert to the previous terminal state.
 | |
| .Pp
 | |
| The
 | |
| .Nm tcgetattr
 | |
| function copies the parameters associated with the terminal referenced
 | |
| by
 | |
| .Fa fd
 | |
| to the termios structure referenced by
 | |
| .Fa tp .
 | |
| This function is allowed from a background process, however, the terminal
 | |
| attributes may be subsequently changed by a foreground process.
 | |
| .Pp
 | |
| The
 | |
| .Nm tcsetattr
 | |
| function sets the parameters associated with the terminal from the
 | |
| termios structure referenced by
 | |
| .Fa tp .
 | |
| The
 | |
| .Fa action
 | |
| field is created by
 | |
| .Em or Ns 'ing
 | |
| the following values, as specified in the include file
 | |
| .In termios.h .
 | |
| .Bl -tag -width "TCSADRAIN"
 | |
| .It Fa TCSANOW
 | |
| The change occurs immediately.
 | |
| .It Fa TCSADRAIN
 | |
| The change occurs after all output written to
 | |
| .Fa fd
 | |
| has been transmitted to the terminal.
 | |
| This value of
 | |
| .Fa action
 | |
| should be used when changing parameters that affect output.
 | |
| .It Fa TCSAFLUSH
 | |
| The change occurs after all output written to
 | |
| .Fa fd
 | |
| has been transmitted to the terminal.
 | |
| Additionally, any input that has been received but not read is discarded.
 | |
| .It Fa TCSASOFT
 | |
| If this value is
 | |
| .Em or Ns 'ed
 | |
| into the
 | |
| .Fa action
 | |
| value, the values of the
 | |
| .Em c_cflag ,
 | |
| .Em c_ispeed ,
 | |
| and
 | |
| .Em c_ospeed
 | |
| fields are ignored.
 | |
| .El
 | |
| .Pp
 | |
| The 0 baud rate is used to terminate the connection.
 | |
| If 0 is specified as the output speed to the function
 | |
| .Nm tcsetattr ,
 | |
| modem control will no longer be asserted on the terminal, disconnecting
 | |
| the terminal.
 | |
| .Pp
 | |
| If zero is specified as the input speed to the function
 | |
| .Nm tcsetattr ,
 | |
| the input baud rate will be set to the same value as that specified by
 | |
| the output baud rate.
 | |
| .Sh RETURN VALUES
 | |
| If
 | |
| .Nm tcsetattr
 | |
| is unable to make any of the requested changes, it returns -1 and
 | |
| sets errno.
 | |
| Otherwise, it makes all of the requested changes it can.
 | |
| If the specified input and output baud rates differ and are a combination
 | |
| that is not supported, neither baud rate is changed.
 | |
| .Pp
 | |
| Upon successful completion, the functions
 | |
| .Nm tcgetattr
 | |
| and
 | |
| .Nm tcsetattr
 | |
| return a value of 0.
 | |
| Otherwise, they
 | |
| return -1 and the global variable
 | |
| .Va errno
 | |
| is set to indicate the error, as follows:
 | |
| .Bl -tag -width Er
 | |
| .It Bq Er EBADF
 | |
| The
 | |
| .Fa fd
 | |
| argument to
 | |
| .Nm tcgetattr
 | |
| or
 | |
| .Nm tcsetattr
 | |
| was not a valid file descriptor.
 | |
| .It Bq Er EINTR
 | |
| The
 | |
| .Nm tcsetattr
 | |
| function was interrupted by a signal.
 | |
| .It Bq Er EINVAL
 | |
| The
 | |
| .Fa action
 | |
| argument to the
 | |
| .Nm tcsetattr
 | |
| function was not valid, or an attempt was made to change an attribute
 | |
| represented in the termios structure to an unsupported value.
 | |
| .It Bq Er ENOTTY
 | |
| The file associated with the
 | |
| .Fa fd
 | |
| argument to
 | |
| .Nm tcgetattr
 | |
| or
 | |
| .Nm tcsetattr
 | |
| is not a terminal.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr tcsendbreak 3 ,
 | |
| .Xr termios 4
 | |
| .Sh STANDARDS
 | |
| The
 | |
| .Nm cfgetispeed ,
 | |
| .Nm cfsetispeed ,
 | |
| .Nm cfgetospeed ,
 | |
| .Nm cfsetospeed ,
 | |
| .Nm tcgetattr
 | |
| and
 | |
| .Nm tcsetattr
 | |
| functions are expected to be compliant with the
 | |
| .St -p1003.1-88
 | |
| specification.
 | |
| The
 | |
| .Nm cfmakeraw
 | |
| and
 | |
| .Nm cfsetspeed
 | |
| functions,
 | |
| as well as the
 | |
| .Li TCSASOFT
 | |
| option to the
 | |
| .Nm tcsetattr
 | |
| function are extensions to the
 | |
| .St -p1003.1-88
 | |
| specification.
 |