xref: /csrg-svn/lib/libc/gen/termios.c (revision 38597)
1*38597Skarels /*
2*38597Skarels  * Copyright (c) 1989 The Regents of the University of California.
3*38597Skarels  * All rights reserved.
4*38597Skarels  *
5*38597Skarels  * Redistribution and use in source and binary forms are permitted
6*38597Skarels  * provided that the above copyright notice and this paragraph are
7*38597Skarels  * duplicated in all such forms and that any documentation,
8*38597Skarels  * advertising materials, and other materials related to such
9*38597Skarels  * distribution and use acknowledge that the software was developed
10*38597Skarels  * by the University of California, Berkeley.  The name of the
11*38597Skarels  * University may not be used to endorse or promote products derived
12*38597Skarels  * from this software without specific prior written permission.
13*38597Skarels  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14*38597Skarels  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15*38597Skarels  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16*38597Skarels  */
17*38597Skarels 
18*38597Skarels #if defined(LIBC_SCCS) && !defined(lint)
19*38597Skarels static char sccsid[] = "@(#)termios.c	5.1 (Berkeley) 08/14/89";
20*38597Skarels #endif /* LIBC_SCCS and not lint */
21*38597Skarels 
2235766Smarc #include <sys/types.h>
2335766Smarc #include <sys/errno.h>
2435766Smarc #include <sys/termios.h>
2535766Smarc #include <sys/tty.h>
2635766Smarc #include <stdio.h>
2735766Smarc 
2835766Smarc tcgetattr(fd, t)
2935766Smarc 	int fd;
3035766Smarc 	struct termios *t;
3135766Smarc {
3235766Smarc 	extern errno;
3335766Smarc 
3435766Smarc 	return(ioctl(fd, TIOCGETA, t));
3535766Smarc }
3635766Smarc 
3735766Smarc tcsetattr(fd, opt, t)
3835766Smarc 	int fd, opt;
3935766Smarc 	struct termios *t;
4035766Smarc {
4135766Smarc 	long code;
4235766Smarc 	int ret;
4335766Smarc 	extern errno;
4435766Smarc 
4535766Smarc 	switch (opt) {
4635766Smarc 	case TCSANOW:
4735766Smarc 		code = TIOCSETA;
4835766Smarc 		break;
4935766Smarc 	case TCSADRAIN:
5035766Smarc 		code = TIOCSETAW;
5135766Smarc 		break;
5235766Smarc 	case TCSADFLUSH:
5335766Smarc 		code = TIOCSETAF;
5435766Smarc 		break;
5535766Smarc 	case TCSANOW | TCSASOFT:
5635766Smarc 		code = TIOCSETAS;
5735766Smarc 		break;
5835766Smarc 	case TCSADRAIN | TCSASOFT:
5935766Smarc 		code = TIOCSETAWS;
6035766Smarc 		break;
6135766Smarc 	case TCSADFLUSH | TCSASOFT:
6235766Smarc 		code = TIOCSETAFS;
6335766Smarc 		break;
6435766Smarc 	default:
6535766Smarc 		errno = EINVAL;
6635766Smarc 		return(-1);
6735766Smarc 	}
6835766Smarc 	return(ioctl(fd, code, t));
6935766Smarc }
7035766Smarc 
7135766Smarc tcsetpgrp(fd, pgrp)
7235766Smarc {
7335766Smarc 	return(ioctl(fd, TIOCSPGRP, &pgrp));
7435766Smarc }
7535766Smarc 
7635766Smarc tcgetpgrp(fd)
7735766Smarc {
7835766Smarc 	int pgrp;
7935766Smarc 
8035766Smarc 	if (ioctl(fd, TIOCGPGRP, &pgrp) < 0)
8135766Smarc 		return(-1);
8235766Smarc 	return(pgrp);
8335766Smarc }
8435766Smarc 
8535766Smarc cfgetospeed(t)
8635766Smarc 	struct termios *t;
8735766Smarc {
8835766Smarc 	return(t->c_ospeed);
8935766Smarc }
9035766Smarc 
9135766Smarc cfgetispeed(t)
9235766Smarc 	struct termios *t;
9335766Smarc {
9435766Smarc 	return(t->c_ispeed);
9535766Smarc }
9635766Smarc 
9735766Smarc cfsetospeed(t, speed)
9835766Smarc 	struct termios *t;
9935766Smarc {
10035766Smarc 	t->c_ospeed = speed;
10135766Smarc }
10235766Smarc 
10335766Smarc cfsetispeed(t, speed)
10435766Smarc 	struct termios *t;
10535766Smarc {
10635766Smarc 	t->c_ispeed = speed;
10735766Smarc }
10835766Smarc 
10935766Smarc cfsetspeed(t, speed)
11035766Smarc 	struct termios *t;
11135766Smarc {
11235766Smarc 	t->c_ispeed = t->c_ospeed = speed;
11335766Smarc }
11435766Smarc 
11535766Smarc cfmakeraw(t)
11635766Smarc 	struct termios *t;
11735766Smarc {
11838596Skarels 	t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|INLCR|IGNCR|ICRNL|IXON);
11935766Smarc 	t->c_oflag &= ~(ONLCR|OXTABS);
12038596Skarels 	t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
12135766Smarc 	/* set MIN/TIME */
12235766Smarc }
123