xref: /csrg-svn/lib/libc/gen/termios.c (revision 35766)
1*35766Smarc #include <sys/types.h>
2*35766Smarc #include <sys/errno.h>
3*35766Smarc #include <sys/termios.h>
4*35766Smarc #include <sys/tty.h>
5*35766Smarc #include <stdio.h>
6*35766Smarc 
7*35766Smarc tcgetattr(fd, t)
8*35766Smarc 	int fd;
9*35766Smarc 	struct termios *t;
10*35766Smarc {
11*35766Smarc 	extern errno;
12*35766Smarc 
13*35766Smarc 	return(ioctl(fd, TIOCGETA, t));
14*35766Smarc }
15*35766Smarc 
16*35766Smarc tcsetattr(fd, opt, t)
17*35766Smarc 	int fd, opt;
18*35766Smarc 	struct termios *t;
19*35766Smarc {
20*35766Smarc 	long code;
21*35766Smarc 	int ret;
22*35766Smarc 	extern errno;
23*35766Smarc 
24*35766Smarc 	switch (opt) {
25*35766Smarc 	case TCSANOW:
26*35766Smarc 		code = TIOCSETA;
27*35766Smarc 		break;
28*35766Smarc 	case TCSADRAIN:
29*35766Smarc 		code = TIOCSETAW;
30*35766Smarc 		break;
31*35766Smarc 	case TCSADFLUSH:
32*35766Smarc 		code = TIOCSETAF;
33*35766Smarc 		break;
34*35766Smarc 	case TCSANOW | TCSASOFT:
35*35766Smarc 		code = TIOCSETAS;
36*35766Smarc 		break;
37*35766Smarc 	case TCSADRAIN | TCSASOFT:
38*35766Smarc 		code = TIOCSETAWS;
39*35766Smarc 		break;
40*35766Smarc 	case TCSADFLUSH | TCSASOFT:
41*35766Smarc 		code = TIOCSETAFS;
42*35766Smarc 		break;
43*35766Smarc 	default:
44*35766Smarc 		errno = EINVAL;
45*35766Smarc 		return(-1);
46*35766Smarc 	}
47*35766Smarc 	return(ioctl(fd, code, t));
48*35766Smarc }
49*35766Smarc 
50*35766Smarc tcsetpgrp(fd, pgrp)
51*35766Smarc {
52*35766Smarc 	return(ioctl(fd, TIOCSPGRP, &pgrp));
53*35766Smarc }
54*35766Smarc 
55*35766Smarc tcgetpgrp(fd)
56*35766Smarc {
57*35766Smarc 	int pgrp;
58*35766Smarc 
59*35766Smarc 	if (ioctl(fd, TIOCGPGRP, &pgrp) < 0)
60*35766Smarc 		return(-1);
61*35766Smarc 	return(pgrp);
62*35766Smarc }
63*35766Smarc 
64*35766Smarc cfgetospeed(t)
65*35766Smarc 	struct termios *t;
66*35766Smarc {
67*35766Smarc 	return(t->c_ospeed);
68*35766Smarc }
69*35766Smarc 
70*35766Smarc cfgetispeed(t)
71*35766Smarc 	struct termios *t;
72*35766Smarc {
73*35766Smarc 	return(t->c_ispeed);
74*35766Smarc }
75*35766Smarc 
76*35766Smarc cfsetospeed(t, speed)
77*35766Smarc 	struct termios *t;
78*35766Smarc {
79*35766Smarc 	t->c_ospeed = speed;
80*35766Smarc }
81*35766Smarc 
82*35766Smarc cfsetispeed(t, speed)
83*35766Smarc 	struct termios *t;
84*35766Smarc {
85*35766Smarc 	t->c_ispeed = speed;
86*35766Smarc }
87*35766Smarc 
88*35766Smarc cfsetspeed(t, speed)
89*35766Smarc 	struct termios *t;
90*35766Smarc {
91*35766Smarc 	t->c_ispeed = t->c_ospeed = speed;
92*35766Smarc }
93*35766Smarc 
94*35766Smarc cfmakeraw(t)
95*35766Smarc 	struct termios *t;
96*35766Smarc {
97*35766Smarc 	t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|INLCR|IGNCR|ICRNL|IXON|IEXTEN);
98*35766Smarc 	t->c_oflag &= ~(ONLCR|OXTABS);
99*35766Smarc 	t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG);
100*35766Smarc 	/* set MIN/TIME */
101*35766Smarc }
102