diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-03-19 23:03:01 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-03-19 23:03:01 -0500 |
commit | d81b604ed963ac571bbeefa033b7744ad3f51d5e (patch) | |
tree | 8e0901e3974aec7400a0b46275277249fc2e4263 /src/termios_wrapper.c | |
parent | 1fa0019d580450ab106d2a1f3ed9c622218c0dbf (diff) | |
download | rust-term-d81b604ed963ac571bbeefa033b7744ad3f51d5e.tar.gz rust-term-d81b604ed963ac571bbeefa033b7744ad3f51d5e.zip |
add a scope guard sort of thing to allow restoring terminal state
Diffstat (limited to 'src/termios_wrapper.c')
-rw-r--r-- | src/termios_wrapper.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/termios_wrapper.c b/src/termios_wrapper.c index b23ae2d..77d589b 100644 --- a/src/termios_wrapper.c +++ b/src/termios_wrapper.c @@ -1,3 +1,4 @@ +#include <stdlib.h> #include <termios.h> /* very simplistic, ignores a lot of the settings that i don't understand, @@ -63,3 +64,25 @@ int echo(int enabled) return tcsetattr(0, TCSANOW, &t) == 0; } + +struct termios *get() +{ + struct termios *t; + + t = malloc(sizeof(struct termios)); + if (tcgetattr(0, t) == -1) { + return NULL; + } + + return t; +} + +void set(struct termios *t) +{ + if (t == NULL) { + return; + } + + tcsetattr(0, TCSANOW, t); + free(t); +} |