termios code has been moved to new libc/termios directory.

This commit is contained in:
jtc 1995-04-25 00:06:17 +00:00
parent 5f11a56ca9
commit 02788519a9
6 changed files with 4 additions and 932 deletions

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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 */
}