diff options
| author | Jakob Kaivo <jkk@ung.org> | 2020-08-15 12:33:24 -0400 |
|---|---|---|
| committer | Jakob Kaivo <jkk@ung.org> | 2020-08-15 12:33:24 -0400 |
| commit | 661977b6f44652cf7d14c38e4b888c51e399cdd4 (patch) | |
| tree | 792cf5c284cc9f90c0f662b503a928164314b5f0 /src/termios/tcsetattr.c | |
| parent | 05f52c10c527ce911a2880b4ddd4c9ee299172a8 (diff) | |
sadly Linux-specific implementation
Diffstat (limited to 'src/termios/tcsetattr.c')
| -rw-r--r-- | src/termios/tcsetattr.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/termios/tcsetattr.c b/src/termios/tcsetattr.c index b68652ad..a40439a2 100644 --- a/src/termios/tcsetattr.c +++ b/src/termios/tcsetattr.c @@ -1,9 +1,33 @@ #include <termios.h> +#include <errno.h> +#include "_termios.h" int tcsetattr(int fildes, int optional_actions, struct termios *termios_p) { - (void)optional_actions; (void)termios_p; - return fildes; + int ret = -1; + struct kernel_termios kt; + utok(kt, *termios_p); + + switch (optional_actions) { + case TCSANOW: + ret = ioctl(fildes, TCSETS, &kt); + break; + + case TCSADRAIN: + ret = ioctl(fildes, TCSETSW, &kt); + break; + + case TCSAFLUSH: + ret = ioctl(fildes, TCSETSF, &kt); + break; + + default: + errno = EINVAL; + return -1; + } + + ktou(*termios_p, kt); + return ret; } /* POSIX(1) |
