]>
Commit | Line | Data |
---|---|---|
bfff8b1b | 1 | /* Copyright (C) 1998-2017 Free Software Foundation, Inc. |
8d5166fb UD |
2 | This file is part of the GNU C Library. |
3 | ||
4 | The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
5 | modify it under the terms of the GNU Lesser General Public |
6 | License as published by the Free Software Foundation; either | |
7 | version 2.1 of the License, or (at your option) any later version. | |
8d5166fb UD |
8 | |
9 | The GNU C Library is distributed in the hope that it will be useful, | |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 12 | Lesser General Public License for more details. |
8d5166fb | 13 | |
41bdb6e2 | 14 | You should have received a copy of the GNU Lesser General Public |
59ba27a6 PE |
15 | License along with the GNU C Library; if not, see |
16 | <http://www.gnu.org/licenses/>. */ | |
8d5166fb UD |
17 | |
18 | #include <stdarg.h> | |
19 | #include <termios.h> | |
20 | #include <unistd.h> | |
21 | #include <sys/ioctl.h> | |
0f0d786f | 22 | #include <sysdep.h> |
8d5166fb UD |
23 | |
24 | /* The user-visible size of struct termios has changed. Catch ioctl calls | |
25 | using the new-style struct termios, and translate them to old-style. */ | |
26 | ||
8d5166fb UD |
27 | int |
28 | __ioctl (int fd, unsigned long int request, ...) | |
29 | { | |
30 | void *arg; | |
31 | va_list ap; | |
32 | int result; | |
0f0d786f | 33 | |
8d5166fb UD |
34 | va_start (ap, request); |
35 | arg = va_arg (ap, void *); | |
0f0d786f | 36 | |
8d5166fb UD |
37 | switch (request) |
38 | { | |
39 | case TCGETS: | |
e58ab813 | 40 | result = __tcgetattr (fd, (struct termios *) arg); |
8d5166fb UD |
41 | break; |
42 | ||
43 | case TCSETS: | |
fa872e1b | 44 | result = __tcsetattr (fd, TCSANOW, (struct termios *) arg); |
8d5166fb UD |
45 | break; |
46 | ||
47 | case TCSETSW: | |
fa872e1b | 48 | result = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg); |
8d5166fb UD |
49 | break; |
50 | ||
51 | case TCSETSF: | |
fa872e1b | 52 | result = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg); |
8d5166fb UD |
53 | break; |
54 | ||
55 | default: | |
0f0d786f | 56 | result = INLINE_SYSCALL (ioctl, 3, fd, request, arg); |
8d5166fb UD |
57 | break; |
58 | } | |
59 | ||
60 | va_end (ap); | |
61 | ||
62 | return result; | |
63 | } | |
9e5ee8b8 | 64 | libc_hidden_def (__ioctl) |
8d5166fb | 65 | weak_alias (__ioctl, ioctl) |