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