merge setuid variants
[trinity.git] / ioctls / vt.c
blob5e7e7d72f3c2d6d9b123bc7bad0419ae1775a056
1 #include <sys/vt.h>
2 #include <sys/ioctl.h>
3 #include <linux/kd.h>
5 #include "utils.h"
6 #include "ioctls.h"
8 #ifndef HAVE_TERMIOS2
9 typedef unsigned char cc_t;
10 typedef unsigned int speed_t;
11 typedef unsigned int tcflag_t;
13 #ifndef NCCS
14 #define NCCS 19
15 #endif
16 struct termios2 {
17 tcflag_t c_iflag; /* input mode flags */
18 tcflag_t c_oflag; /* output mode flags */
19 tcflag_t c_cflag; /* control mode flags */
20 tcflag_t c_lflag; /* local mode flags */
21 cc_t c_line; /* line discipline */
22 cc_t c_cc[NCCS]; /* control characters */
23 speed_t c_ispeed; /* input speed */
24 speed_t c_ospeed; /* output speed */
26 #endif
28 static const struct ioctl vt_ioctls[] = {
29 IOCTL(VT_OPENQRY),
30 IOCTL(VT_GETMODE),
31 IOCTL(VT_SETMODE),
32 IOCTL(VT_GETSTATE),
33 IOCTL(VT_SENDSIG),
34 IOCTL(VT_RELDISP),
35 IOCTL(VT_ACTIVATE),
36 IOCTL(VT_WAITACTIVE),
37 IOCTL(VT_DISALLOCATE),
38 IOCTL(VT_RESIZE),
39 IOCTL(VT_RESIZEX),
40 IOCTL(VT_LOCKSWITCH),
41 IOCTL(VT_UNLOCKSWITCH),
42 IOCTL(VT_GETHIFONTMASK),
43 IOCTL(VT_WAITEVENT),
44 IOCTL(VT_SETACTIVATE),
46 IOCTL(GIO_FONT),
47 IOCTL(PIO_FONT),
48 IOCTL(GIO_FONTX),
49 IOCTL(PIO_FONTX),
50 IOCTL(PIO_FONTRESET),
51 IOCTL(GIO_CMAP),
52 IOCTL(PIO_CMAP),
53 IOCTL(KIOCSOUND),
54 IOCTL(KDMKTONE),
55 IOCTL(KDGETLED),
56 IOCTL(KDSETLED),
57 IOCTL(KDGKBTYPE),
58 IOCTL(KDADDIO),
59 IOCTL(KDDELIO),
60 IOCTL(KDENABIO),
61 IOCTL(KDDISABIO),
62 IOCTL(KDSETMODE),
63 IOCTL(KDGETMODE),
64 IOCTL(KDMAPDISP),
65 IOCTL(KDUNMAPDISP),
66 IOCTL(GIO_SCRNMAP),
67 IOCTL(PIO_SCRNMAP),
68 IOCTL(GIO_UNISCRNMAP),
69 IOCTL(PIO_UNISCRNMAP),
70 IOCTL(GIO_UNIMAP),
71 IOCTL(PIO_UNIMAP),
72 IOCTL(PIO_UNIMAPCLR),
73 IOCTL(KDGKBMODE),
74 IOCTL(KDSKBMODE),
75 IOCTL(KDGKBMETA),
76 IOCTL(KDSKBMETA),
77 IOCTL(KDGKBLED),
78 IOCTL(KDSKBLED),
79 IOCTL(KDGKBENT),
80 IOCTL(KDSKBENT),
81 IOCTL(KDGKBSENT),
82 IOCTL(KDSKBSENT),
83 IOCTL(KDGKBDIACR),
84 IOCTL(KDSKBDIACR),
85 IOCTL(KDGKBDIACRUC),
86 IOCTL(KDSKBDIACRUC),
87 IOCTL(KDGETKEYCODE),
88 IOCTL(KDSETKEYCODE),
89 IOCTL(KDSIGACCEPT),
90 #ifdef KDGKBMUTE
91 IOCTL(KDGKBMUTE),
92 #endif
93 #ifdef KDSKBMUTE
94 IOCTL(KDSKBMUTE),
95 #endif
96 IOCTL(KDKBDREP),
97 IOCTL(KDFONTOP),
99 IOCTL(TCGETS),
100 IOCTL(TCSETS),
101 IOCTL(TCSETSW),
102 IOCTL(TCSETSF),
103 IOCTL(TCGETA),
104 IOCTL(TCSETA),
105 IOCTL(TCSETAW),
106 IOCTL(TCSETAF),
107 IOCTL(TCSBRK),
108 IOCTL(TCXONC),
109 IOCTL(TCFLSH),
110 IOCTL(TIOCEXCL),
111 IOCTL(TIOCNXCL),
112 IOCTL(TIOCSCTTY),
113 IOCTL(TIOCGPGRP),
114 IOCTL(TIOCSPGRP),
115 IOCTL(TIOCOUTQ),
116 IOCTL(TIOCSTI),
117 IOCTL(TIOCGWINSZ),
118 IOCTL(TIOCSWINSZ),
119 IOCTL(TIOCMGET),
120 IOCTL(TIOCMBIS),
121 IOCTL(TIOCMBIC),
122 IOCTL(TIOCMSET),
123 IOCTL(TIOCGSOFTCAR),
124 IOCTL(TIOCSSOFTCAR),
125 IOCTL(FIONREAD),
126 IOCTL(TIOCLINUX),
127 IOCTL(TIOCCONS),
128 IOCTL(TIOCGSERIAL),
129 IOCTL(TIOCSSERIAL),
130 IOCTL(TIOCPKT),
131 IOCTL(FIONBIO),
132 IOCTL(TIOCNOTTY),
133 IOCTL(TIOCSETD),
134 IOCTL(TIOCGETD),
135 IOCTL(TCSBRKP),
136 IOCTL(TIOCSBRK),
137 IOCTL(TIOCCBRK),
138 IOCTL(TIOCGSID),
139 #ifdef TCGETS2
140 IOCTL(TCGETS2),
141 #endif
142 #ifdef TCSETS2
143 IOCTL(TCSETS2),
144 #endif
145 #ifdef TCSETSW2
146 IOCTL(TCSETSW2),
147 #endif
148 #ifdef TCSETSF2
149 IOCTL(TCSETSF2),
150 #endif
151 #ifdef TIOCGRS485
152 IOCTL(TIOCGRS485),
153 #endif
154 #ifdef TIOCSRS485
155 IOCTL(TIOCSRS485),
156 #endif
157 IOCTL(TIOCGPTN),
158 IOCTL(TIOCSPTLCK),
159 #ifdef TIOCGDEV
160 IOCTL(TIOCGDEV),
161 #endif
162 #ifdef TCGETX
163 IOCTL(TCGETX),
164 #endif
165 #ifdef TCSETX
166 IOCTL(TCSETX),
167 #endif
168 #ifdef TCSETXF
169 IOCTL(TCSETXF),
170 #endif
171 #ifdef TCSETXW
172 IOCTL(TCSETXW),
173 #endif
174 #ifdef TIOCSIG
175 IOCTL(TIOCSIG),
176 #endif
177 #ifdef TIOCVHANGUP
178 IOCTL(TIOCVHANGUP),
179 #endif
180 #ifdef TIOCGPKT
181 IOCTL(TIOCGPKT),
182 #endif
183 #ifdef TIOCGPTLCK
184 IOCTL(TIOCGPTLCK),
185 #endif
186 #ifdef TIOCGEXCL
187 IOCTL(TIOCGEXCL),
188 #endif
190 IOCTL(FIONCLEX),
191 IOCTL(FIOCLEX),
192 IOCTL(FIOASYNC),
193 IOCTL(TIOCSERCONFIG),
194 IOCTL(TIOCSERGWILD),
195 IOCTL(TIOCSERSWILD),
196 IOCTL(TIOCGLCKTRMIOS),
197 IOCTL(TIOCSLCKTRMIOS),
198 IOCTL(TIOCSERGSTRUCT),
199 IOCTL(TIOCSERGETLSR),
200 IOCTL(TIOCSERGETMULTI),
201 IOCTL(TIOCSERSETMULTI),
202 IOCTL(TIOCMIWAIT),
203 IOCTL(TIOCGICOUNT),
204 IOCTL(FIOQSIZE),
207 static const char *const vt_devs[] = {
208 "/dev/vc/0",
209 "tty",
210 "ttyS",
211 "/dev/tty",
212 "/dev/console",
213 "/dev/ptmx",
214 "vcs",
217 static const struct ioctl_group vt_grp = {
218 .devtype = DEV_CHAR,
219 .devs = vt_devs,
220 .devs_cnt = ARRAY_SIZE(vt_devs),
221 .sanitise = pick_random_ioctl,
222 .ioctls = vt_ioctls,
223 .ioctls_cnt = ARRAY_SIZE(vt_ioctls),
226 REG_IOCTL_GROUP(vt_grp)