* Copyright (c) 1991 The Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 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
static char sccsid
[] = "@(#)modes.c 5.4 (Berkeley) 6/10/91";
* The code in optlist() depends on minus options following regular
* options, i.e. "foo" must immediately precede "-foo".
struct modes cmodes
[] = {
"parity", PARENB
| CS7
, PARODD
| CSIZE
,
"-parity", CS8
, PARODD
| PARENB
| CSIZE
,
"evenp", PARENB
| CS7
, PARODD
| CSIZE
,
"-evenp", CS8
, PARODD
| PARENB
| CSIZE
,
"oddp", PARENB
| CS7
| PARODD
, CSIZE
,
"-oddp", CS8
, PARODD
| PARENB
| CSIZE
,
"pass8", CS8
, PARODD
| PARENB
| CSIZE
,
struct modes imodes
[] = {
struct modes lmodes
[] = {
"crtbs", ECHOE
, 0, /* crtbs not supported, close enough */
"altwerase", ALTWERASE
, 0,
"-altwerase", 0, ALTWERASE
,
"crt", ECHOE
|ECHOKE
|ECHOCTL
, ECHOK
|ECHOPRT
,
"-crt", ECHOK
, ECHOE
|ECHOKE
|ECHOCTL
,
"newcrt", ECHOE
|ECHOKE
|ECHOCTL
, ECHOK
|ECHOPRT
,
"-newcrt", ECHOK
, ECHOE
|ECHOKE
|ECHOCTL
,
"nokerninfo", NOKERNINFO
, 0,
"-nokerninfo", 0, NOKERNINFO
,
"kerninfo", 0, NOKERNINFO
,
"-kerninfo", NOKERNINFO
, 0,
struct modes omodes
[] = {
"tabs", 0, OXTABS
, /* "preserve" tabs */
#define CHK(s) (*name == s[0] && !strcmp(name, s))
register struct modes
*mp
;
for (mp
= cmodes
; mp
->name
; ++mp
)
ip
->t
.c_cflag
&= ~mp
->unset
;
ip
->t
.c_cflag
|= mp
->set
;
for (mp
= imodes
; mp
->name
; ++mp
)
ip
->t
.c_iflag
&= ~mp
->unset
;
ip
->t
.c_iflag
|= mp
->set
;
for (mp
= lmodes
; mp
->name
; ++mp
)
ip
->t
.c_lflag
&= ~mp
->unset
;
ip
->t
.c_lflag
|= mp
->set
;
for (mp
= omodes
; mp
->name
; ++mp
)
ip
->t
.c_oflag
&= ~mp
->unset
;
ip
->t
.c_oflag
|= mp
->set
;