termios code has been moved to new libc/termios directory.
This commit is contained in:
parent
5f11a56ca9
commit
02788519a9
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: Makefile.inc,v 1.69 1995/04/17 12:28:29 ragge Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.70 1995/04/25 00:06:17 jtc Exp $
|
||||
# @(#)Makefile.inc 8.3 (Berkeley) 4/16/94
|
||||
|
||||
# gen sources
|
||||
|
@ -14,7 +14,7 @@ SRCS+= alarm.c assert.c clock.c closedir.c confstr.c ctermid.c \
|
|||
popen.c psignal.c pwcache.c raise.c readdir.c rewinddir.c scandir.c \
|
||||
seekdir.c setdomainname.c sethostname.c setjmperr.c setmode.c \
|
||||
setproctitle.c siginterrupt.c siglist.c signal.c signame.c \
|
||||
sigsetops.c sleep.c sysconf.c sysctl.c syslog.c telldir.c termios.c \
|
||||
sigsetops.c sleep.c sysconf.c sysctl.c syslog.c telldir.c \
|
||||
time.c times.c timezone.c tolower_.c ttyname.c ttyslot.c toupper_.c \
|
||||
ualarm.c uname.c unvis.c usleep.c utime.c valloc.c vis.c wait.c \
|
||||
wait3.c waitpid.c
|
||||
|
@ -52,8 +52,8 @@ MAN+= alarm.3 clock.3 confstr.3 ctermid.3 ctype.3 daemon.3 \
|
|||
islower.3 isprint.3 ispunct.3 isspace.3 isupper.3 isxdigit.3 \
|
||||
ldexp.3 modf.3 nice.3 nlist.3 pause.3 popen.3 psignal.3 pwcache.3 \
|
||||
raise.3 scandir.3 setjmp.3 setmode.3 setproctitle.3 siginterrupt.3 \
|
||||
signal.3 sigsetops.3 sleep.3 sysconf.3 sysctl.3 syslog.3 tcgetpgrp.3 \
|
||||
tcsendbreak.3 tcsetattr.3 tcsetpgrp.3 time.3 times.3 timezone.3 \
|
||||
signal.3 sigsetops.3 sleep.3 sysconf.3 sysctl.3 syslog.3 \
|
||||
time.3 times.3 timezone.3 \
|
||||
tolower.3 toupper.3 ttyname.3 ualarm.3 uname.3 unvis.3 \
|
||||
usleep.3 utime.3 valloc.3 vis.3
|
||||
|
||||
|
@ -97,11 +97,5 @@ MLINKS+=sigsetops.3 sigemptyset.3 sigsetops.3 sigfillset.3 \
|
|||
sigsetops.3 sigismember.3
|
||||
MLINKS+=syslog.3 closelog.3 syslog.3 openlog.3 syslog.3 setlogmask.3 \
|
||||
syslog.3 vsyslog.3
|
||||
MLINKS+=tcsendbreak.3 tcdrain.3 tcsendbreak.3 tcflow.3 \
|
||||
tcsendbreak.3 tcflush.3
|
||||
MLINKS+=tcsetattr.3 tcgetattr.3 tcsetattr.3 cfgetispeed.3 \
|
||||
tcsetattr.3 cfgetospeed.3 tcsetattr.3 cfmakeraw.3 \
|
||||
tcsetattr.3 cfsetispeed.3 tcsetattr.3 cfsetospeed.3 \
|
||||
tcsetattr.3 cfsetspeed.3
|
||||
MLINKS+=ttyname.3 isatty.3 ttyname.3 ttyslot.3
|
||||
MLINKS+=vis.3 strvis.3 vis.3 strvisx.3 unvis.3 strunvis.3
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
.\" $NetBSD: tcgetpgrp.3,v 1.3 1995/02/27 05:53:08 cgd Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1991 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. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. 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.
|
||||
.\"
|
||||
.\" @(#)tcgetpgrp.3 5.3 (Berkeley) 3/29/92
|
||||
.\"
|
||||
.Dd "March 29, 1992"
|
||||
.Dt TCGETPGRP 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm tcgetpgrp
|
||||
.Nd get foreground process group ID
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <sys/types.h>
|
||||
.Fd #include <unistd.h>
|
||||
.Ft pid_t
|
||||
.Fn tcgetpgrp "int fd"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm tcgetpgrp
|
||||
function returns the value of the process group ID of the foreground
|
||||
process group associated with the terminal device.
|
||||
If there is no foreground process group,
|
||||
.Nm tcgetpgrp
|
||||
returns an invalid process ID.
|
||||
.Sh ERRORS
|
||||
If an error occurs,
|
||||
.Nm tcgetpgrp
|
||||
returns -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 is not a valid file descriptor.
|
||||
.It Bq Er ENOTTY
|
||||
The calling process does not have a controlling terminal or the
|
||||
underlying terminal device represented by
|
||||
.Fa fd
|
||||
is not the controlling terminal.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr setpgid 3 ,
|
||||
.Xr setsid 2 ,
|
||||
.Xr tcsetpgrp 3
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm tcgetpgrp
|
||||
function is expected to be compliant with the
|
||||
.St -p1003.1-88
|
||||
specification.
|
|
@ -1,156 +0,0 @@
|
|||
.\" $NetBSD: tcsendbreak.3,v 1.3 1995/02/27 05:53:16 cgd Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1991 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. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. 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.
|
||||
.\"
|
||||
.\" @(#)tcsendbreak.3 5.3 (Berkeley) 3/4/92
|
||||
.\"
|
||||
.Dd "March 4, 1992"
|
||||
.Dt TCSENDBREAK 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm tcsendbreak ,
|
||||
.Nm tcdrain ,
|
||||
.Nm tcflush ,
|
||||
.Nm tcflow
|
||||
.Nd line control functions
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <termios.h>
|
||||
.Ft int
|
||||
.Fn tcdrain "int fd"
|
||||
.Ft int
|
||||
.Fn tcflow "int fd" "int action"
|
||||
.Ft int
|
||||
.Fn tcflush "int fd" "int action"
|
||||
.Ft int
|
||||
.Fn tcsendbreak "int fd" "int len"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm tcdrain
|
||||
function waits until all output written to the terminal referenced by
|
||||
.Fa fd
|
||||
has been transmitted to the terminal.
|
||||
.Pp
|
||||
The
|
||||
.Nm tcflow
|
||||
function suspends transmission of data to or the reception of data from
|
||||
the terminal referenced by
|
||||
.Fa fd
|
||||
depending on the value of
|
||||
.Fa action .
|
||||
The value of
|
||||
.Fa action
|
||||
must be one of the following:
|
||||
.Bl -tag -width "TCIOFF"
|
||||
.It Fa TCOOFF
|
||||
Suspend output.
|
||||
.It Fa TCOON
|
||||
Restart suspended output.
|
||||
.It Fa TCIOFF
|
||||
Transmit a STOP character, which is intended to cause the terminal to stop
|
||||
transmitting data to the system.
|
||||
(See the description of IXOFF in the
|
||||
.Ql Input Modes
|
||||
section of
|
||||
.Xr termios 4 ).
|
||||
.It Fa TCION
|
||||
Transmit a START character, which is intended to cause the terminal to start
|
||||
transmitting data to the system.
|
||||
(See the description of IXOFF in the
|
||||
.Ql Input Modes
|
||||
section of
|
||||
.Xr termios 4 ).
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Nm tcflush
|
||||
function discards any data written to the terminal referenced by
|
||||
.Fa fd
|
||||
which has not been transmitted to the terminal, or any data received
|
||||
from the terminal but not yet read, depending on the value of
|
||||
.Fa action .
|
||||
The value of
|
||||
.Fa action
|
||||
must be one of the following:
|
||||
.Bl -tag -width "TCIOFLUSH"
|
||||
.It Fa TCIFLUSH
|
||||
Flush data received but not read.
|
||||
.It Fa TCOFLUSH
|
||||
Flush data written but not transmitted.
|
||||
.It Fa TCIOFLUSH
|
||||
Flush both data received but not read and data written but not transmitted.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Nm tcsendbreak
|
||||
function transmits a continuous stream of zero-valued bits for four-tenths
|
||||
of a second to the terminal referenced by
|
||||
.Fa fd .
|
||||
The
|
||||
.Fa len
|
||||
parameter is ignored in this implementation.
|
||||
.Sh RETURN VALUES
|
||||
Upon successful completion, all of these functions return a value of zero.
|
||||
.Sh ERRORS
|
||||
If any error occurs, a value of -1 is returned 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 is not a valid file descriptor.
|
||||
.It Bq Er EINVAL
|
||||
The
|
||||
.Fa action
|
||||
argument is not a proper value.
|
||||
.It Bq Er ENOTTY
|
||||
The file associated with
|
||||
.Fa fd
|
||||
is not a terminal.
|
||||
.It Bq Er EINTR
|
||||
A signal interrupted the
|
||||
.Nm tcdrain
|
||||
function.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr tcsetattr 3 ,
|
||||
.Xr termios 4
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm tcsendbreak ,
|
||||
.Nm tcdrain ,
|
||||
.Nm tcflush
|
||||
and
|
||||
.Nm tcflow
|
||||
functions are expected to be compliant with the
|
||||
.St -p1003.1-88
|
||||
specification.
|
|
@ -1,333 +0,0 @@
|
|||
.\" $NetBSD: tcsetattr.3,v 1.5 1995/02/27 05:53:26 cgd Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1991 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. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. 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 5.2 (Berkeley) 3/4/92
|
||||
.\"
|
||||
.Dd "March 4, 1992"
|
||||
.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 SYNOPSIS
|
||||
.Fd #include <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 void
|
||||
.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
|
||||
.Aq Pa 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 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
|
||||
in 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
|
||||
.Aq Pa 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.
|
||||
.Pp
|
||||
If
|
||||
.Nm tcsetattr
|
||||
is unable able to make any of the requested changes, it returns -1 and
|
||||
sets
|
||||
.Va 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.
|
|
@ -1,102 +0,0 @@
|
|||
.\" $NetBSD: tcsetpgrp.3,v 1.4 1995/02/27 05:53:33 cgd Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1991 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. All advertising materials mentioning features or use of this software
|
||||
.\" must display the following acknowledgement:
|
||||
.\" This product includes software developed by the University of
|
||||
.\" California, Berkeley and its contributors.
|
||||
.\" 4. 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.
|
||||
.\"
|
||||
.\" @(#)tcsetpgrp.3 5.3 (Berkeley) 3/29/92
|
||||
.\"
|
||||
.Dd "March 29, 1992"
|
||||
.Dt TCSETPGRP 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm tcsetpgrp
|
||||
.Nd set foreground process group ID
|
||||
.Sh SYNOPSIS
|
||||
.Fd #include <sys/types.h>
|
||||
.Fd #include <unistd.h>
|
||||
.Ft int
|
||||
.Fn tcsetpgrp "int fd" "pid_t pgrp_id"
|
||||
.Sh DESCRIPTION
|
||||
If the process has a controlling terminal, the
|
||||
.Nm tcsetpgrp
|
||||
function sets the foreground process group ID associated with the
|
||||
terminal device to
|
||||
.Fa pgrp_id .
|
||||
The terminal device associated with
|
||||
.Fa fd
|
||||
must be the controlling terminal of the calling process and the
|
||||
controlling terminal must be currently associated with the session
|
||||
of the calling process.
|
||||
The value of
|
||||
.Fa pgrp_id
|
||||
must be the same as the process group ID of a process in the same
|
||||
session as the calling process.
|
||||
.Pp
|
||||
Upon successful completion,
|
||||
.Nm tcsetpgrp
|
||||
returns a value of zero.
|
||||
.Sh ERRORS
|
||||
If an error occurs,
|
||||
.Nm tcgetpgrp
|
||||
returns -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 is not a valid file descriptor.
|
||||
.It Bq Er EINVAL
|
||||
An invalid value of
|
||||
.Fa pgrp_id
|
||||
was specified.
|
||||
.It Bq Er ENOTTY
|
||||
The calling process does not have a controlling terminal, or the file
|
||||
represented by
|
||||
.Fa fd
|
||||
is not the controlling terminal, or the controlling terminal is no
|
||||
longer associated with the session of the calling process.
|
||||
.It Bq Er EPERM
|
||||
The
|
||||
.Fa pgrp_id
|
||||
argument does not match the process group ID of a process in the same
|
||||
session as the calling process.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr setpgid 3 ,
|
||||
.Xr setsid 2 ,
|
||||
.Xr tcgetpgrp 3
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm tcsetpgprp
|
||||
function is expected to be compliant with the
|
||||
.St -p1003.1-88
|
||||
specification.
|
|
@ -1,250 +0,0 @@
|
|||
/* $NetBSD: termios.c,v 1.9 1995/02/27 05:53:41 cgd Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1989, 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. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. 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.
|
||||
*/
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)termios.c 8.2 (Berkeley) 2/21/94";
|
||||
#else
|
||||
static char rcsid[] = "$NetBSD: termios.c,v 1.9 1995/02/27 05:53:41 cgd Exp $";
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/tty.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int
|
||||
tcgetattr(fd, t)
|
||||
int fd;
|
||||
struct termios *t;
|
||||
{
|
||||
|
||||
return (ioctl(fd, TIOCGETA, t));
|
||||
}
|
||||
|
||||
int
|
||||
tcsetattr(fd, opt, t)
|
||||
int fd, opt;
|
||||
const struct termios *t;
|
||||
{
|
||||
struct termios localterm;
|
||||
|
||||
if (opt & TCSASOFT) {
|
||||
localterm = *t;
|
||||
localterm.c_cflag |= CIGNORE;
|
||||
t = &localterm;
|
||||
}
|
||||
switch (opt & ~TCSASOFT) {
|
||||
case TCSANOW:
|
||||
return (ioctl(fd, TIOCSETA, t));
|
||||
case TCSADRAIN:
|
||||
return (ioctl(fd, TIOCSETAW, t));
|
||||
case TCSAFLUSH:
|
||||
return (ioctl(fd, TIOCSETAF, t));
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
#if __STDC__
|
||||
tcsetpgrp(int fd, pid_t pgrp)
|
||||
#else
|
||||
tcsetpgrp(fd, pgrp)
|
||||
int fd;
|
||||
pid_t pgrp;
|
||||
#endif
|
||||
{
|
||||
int s;
|
||||
|
||||
s = pgrp;
|
||||
return (ioctl(fd, TIOCSPGRP, &s));
|
||||
}
|
||||
|
||||
pid_t
|
||||
tcgetpgrp(fd)
|
||||
int fd;
|
||||
{
|
||||
int s;
|
||||
|
||||
if (ioctl(fd, TIOCGPGRP, &s) < 0)
|
||||
return ((pid_t)-1);
|
||||
|
||||
return ((pid_t)s);
|
||||
}
|
||||
|
||||
speed_t
|
||||
cfgetospeed(t)
|
||||
const struct termios *t;
|
||||
{
|
||||
|
||||
return (t->c_ospeed);
|
||||
}
|
||||
|
||||
speed_t
|
||||
cfgetispeed(t)
|
||||
const struct termios *t;
|
||||
{
|
||||
|
||||
return (t->c_ispeed);
|
||||
}
|
||||
|
||||
int
|
||||
cfsetospeed(t, speed)
|
||||
struct termios *t;
|
||||
speed_t speed;
|
||||
{
|
||||
|
||||
t->c_ospeed = speed;
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
cfsetispeed(t, speed)
|
||||
struct termios *t;
|
||||
speed_t speed;
|
||||
{
|
||||
|
||||
t->c_ispeed = speed;
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
cfsetspeed(t, speed)
|
||||
struct termios *t;
|
||||
speed_t speed;
|
||||
{
|
||||
|
||||
t->c_ispeed = t->c_ospeed = speed;
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Make a pre-existing termios structure into "raw" mode: character-at-a-time
|
||||
* mode with no characters interpreted, 8-bit data path.
|
||||
*/
|
||||
void
|
||||
cfmakeraw(t)
|
||||
struct termios *t;
|
||||
{
|
||||
t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
|
||||
t->c_oflag &= ~OPOST;
|
||||
t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
|
||||
t->c_cflag &= ~(CSIZE|PARENB);
|
||||
t->c_cflag |= CS8;
|
||||
/* XXX set MIN/TIME */
|
||||
}
|
||||
|
||||
int
|
||||
tcsendbreak(fd, len)
|
||||
int fd, len;
|
||||
{
|
||||
struct timeval sleepytime;
|
||||
|
||||
sleepytime.tv_sec = 0;
|
||||
sleepytime.tv_usec = 400000;
|
||||
if (ioctl(fd, TIOCSBRK, 0) == -1)
|
||||
return (-1);
|
||||
(void)select(0, 0, 0, 0, &sleepytime);
|
||||
if (ioctl(fd, TIOCCBRK, 0) == -1)
|
||||
return (-1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
tcdrain(fd)
|
||||
int fd;
|
||||
{
|
||||
|
||||
return (ioctl(fd, TIOCDRAIN, 0));
|
||||
}
|
||||
|
||||
int
|
||||
tcflush(fd, which)
|
||||
int fd, which;
|
||||
{
|
||||
int com;
|
||||
|
||||
switch (which) {
|
||||
case TCIFLUSH:
|
||||
com = FREAD;
|
||||
break;
|
||||
case TCOFLUSH:
|
||||
com = FWRITE;
|
||||
break;
|
||||
case TCIOFLUSH:
|
||||
com = FREAD | FWRITE;
|
||||
break;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
}
|
||||
return (ioctl(fd, TIOCFLUSH, &com));
|
||||
}
|
||||
|
||||
int
|
||||
tcflow(fd, action)
|
||||
int fd, action;
|
||||
{
|
||||
struct termios term;
|
||||
u_char c;
|
||||
|
||||
switch (action) {
|
||||
case TCOOFF:
|
||||
return (ioctl(fd, TIOCSTOP, 0));
|
||||
case TCOON:
|
||||
return (ioctl(fd, TIOCSTART, 0));
|
||||
case TCION:
|
||||
case TCIOFF:
|
||||
if (tcgetattr(fd, &term) == -1)
|
||||
return (-1);
|
||||
c = term.c_cc[action == TCIOFF ? VSTOP : VSTART];
|
||||
if (c != _POSIX_VDISABLE && write(fd, &c, sizeof(c)) == -1)
|
||||
return (-1);
|
||||
return (0);
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return (-1);
|
||||
}
|
||||
/* NOTREACHED */
|
||||
}
|
Loading…
Reference in New Issue