aboutsummaryrefslogtreecommitdiffstats
path: root/src/termios_wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/termios_wrapper.c')
-rw-r--r--src/termios_wrapper.c17
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()