xref: /csrg-svn/lib/libc/gen/termios.c (revision 38596)
135766Smarc #include <sys/types.h>
235766Smarc #include <sys/errno.h>
335766Smarc #include <sys/termios.h>
435766Smarc #include <sys/tty.h>
535766Smarc #include <stdio.h>
635766Smarc 
735766Smarc tcgetattr(fd, t)
835766Smarc 	int fd;
935766Smarc 	struct termios *t;
1035766Smarc {
1135766Smarc 	extern errno;
1235766Smarc 
1335766Smarc 	return(ioctl(fd, TIOCGETA, t));
1435766Smarc }
1535766Smarc 
1635766Smarc tcsetattr(fd, opt, t)
1735766Smarc 	int fd, opt;
1835766Smarc 	struct termios *t;
1935766Smarc {
2035766Smarc 	long code;
2135766Smarc 	int ret;
2235766Smarc 	extern errno;
2335766Smarc 
2435766Smarc 	switch (opt) {
2535766Smarc 	case TCSANOW:
2635766Smarc 		code = TIOCSETA;
2735766Smarc 		break;
2835766Smarc 	case TCSADRAIN:
2935766Smarc 		code = TIOCSETAW;
3035766Smarc 		break;
3135766Smarc 	case TCSADFLUSH:
3235766Smarc 		code = TIOCSETAF;
3335766Smarc 		break;
3435766Smarc 	case TCSANOW | TCSASOFT:
3535766Smarc 		code = TIOCSETAS;
3635766Smarc 		break;
3735766Smarc 	case TCSADRAIN | TCSASOFT:
3835766Smarc 		code = TIOCSETAWS;
3935766Smarc 		break;
4035766Smarc 	case TCSADFLUSH | TCSASOFT:
4135766Smarc 		code = TIOCSETAFS;
4235766Smarc 		break;
4335766Smarc 	default:
4435766Smarc 		errno = EINVAL;
4535766Smarc 		return(-1);
4635766Smarc 	}
4735766Smarc 	return(ioctl(fd, code, t));
4835766Smarc }
4935766Smarc 
5035766Smarc tcsetpgrp(fd, pgrp)
5135766Smarc {
5235766Smarc 	return(ioctl(fd, TIOCSPGRP, &pgrp));
5335766Smarc }
5435766Smarc 
5535766Smarc tcgetpgrp(fd)
5635766Smarc {
5735766Smarc 	int pgrp;
5835766Smarc 
5935766Smarc 	if (ioctl(fd, TIOCGPGRP, &pgrp) < 0)
6035766Smarc 		return(-1);
6135766Smarc 	return(pgrp);
6235766Smarc }
6335766Smarc 
6435766Smarc cfgetospeed(t)
6535766Smarc 	struct termios *t;
6635766Smarc {
6735766Smarc 	return(t->c_ospeed);
6835766Smarc }
6935766Smarc 
7035766Smarc cfgetispeed(t)
7135766Smarc 	struct termios *t;
7235766Smarc {
7335766Smarc 	return(t->c_ispeed);
7435766Smarc }
7535766Smarc 
7635766Smarc cfsetospeed(t, speed)
7735766Smarc 	struct termios *t;
7835766Smarc {
7935766Smarc 	t->c_ospeed = speed;
8035766Smarc }
8135766Smarc 
8235766Smarc cfsetispeed(t, speed)
8335766Smarc 	struct termios *t;
8435766Smarc {
8535766Smarc 	t->c_ispeed = speed;
8635766Smarc }
8735766Smarc 
8835766Smarc cfsetspeed(t, speed)
8935766Smarc 	struct termios *t;
9035766Smarc {
9135766Smarc 	t->c_ispeed = t->c_ospeed = speed;
9235766Smarc }
9335766Smarc 
9435766Smarc cfmakeraw(t)
9535766Smarc 	struct termios *t;
9635766Smarc {
97*38596Skarels 	t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|INLCR|IGNCR|ICRNL|IXON);
9835766Smarc 	t->c_oflag &= ~(ONLCR|OXTABS);
99*38596Skarels 	t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
10035766Smarc 	/* set MIN/TIME */
10135766Smarc }
102