diff options
Diffstat (limited to 'src/termios_wrapper.c')
-rw-r--r-- | src/termios_wrapper.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/termios_wrapper.c b/src/termios_wrapper.c index 77d589b..a245322 100644 --- a/src/termios_wrapper.c +++ b/src/termios_wrapper.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include <errno.h> #include <termios.h> /* very simplistic, ignores a lot of the settings that i don't understand, @@ -9,13 +10,13 @@ int cooked() struct termios t; if (tcgetattr(0, &t) == -1) { - return 0; + return errno; } t.c_lflag |= (ICANON | ISIG | IEXTEN); t.c_iflag |= (IXON | BRKINT); - return tcsetattr(0, TCSANOW, &t) == 0; + return tcsetattr(0, TCSANOW, &t) == 0 ? 0 : errno; } int cbreak() @@ -23,14 +24,14 @@ int cbreak() struct termios t; if (tcgetattr(0, &t) == -1) { - return 0; + return errno; } t.c_lflag |= ISIG; t.c_lflag &= ~(ICANON | IEXTEN); t.c_iflag |= (IXON | BRKINT); - return tcsetattr(0, TCSANOW, &t) == 0; + return tcsetattr(0, TCSANOW, &t) == 0 ? 0 : errno; } int raw() @@ -38,13 +39,13 @@ int raw() struct termios t; if (tcgetattr(0, &t) == -1) { - return 0; + return errno; } t.c_lflag &= ~(ICANON | ISIG | IEXTEN); t.c_iflag &= ~(IXON | BRKINT); - return tcsetattr(0, TCSANOW, &t) == 0; + return tcsetattr(0, TCSANOW, &t) == 0 ? 0 : errno; } int echo(int enabled) @@ -52,7 +53,7 @@ int echo(int enabled) struct termios t; if (tcgetattr(0, &t) == -1) { - return 0; + return errno; } if (enabled) { @@ -62,7 +63,7 @@ int echo(int enabled) t.c_lflag &= ~ECHO; } - return tcsetattr(0, TCSANOW, &t) == 0; + return tcsetattr(0, TCSANOW, &t) == 0 ? 0 : errno; } struct termios *get() |