diff options
-rw-r--r-- | src/main.c | 7 | ||||
-rw-r--r-- | src/terminal.c | 15 | ||||
-rw-r--r-- | src/terminal.h | 6 |
3 files changed, 24 insertions, 4 deletions
@@ -81,7 +81,8 @@ int main (int argc, char **argv) { BarUiMsg (MSG_NONE, "Welcome to " PACKAGE "!\n"); /* save terminal attributes, before disabling echoing */ - tcgetattr (fileno (stdin), &termOrig); + BarTermSave (&termOrig); + BarTermSetEcho (0); /* init some things */ xmlInitParser (); @@ -139,10 +140,12 @@ int main (int argc, char **argv) { if (BarUiPrintPianoStatus (PianoConnect (&ph, settings.username, settings.password)) != PIANO_RET_OK) { + BarTermRestore (&termOrig); return 0; } BarUiMsg (MSG_INFO, "Get stations... "); if (BarUiPrintPianoStatus (PianoGetStations (&ph)) != PIANO_RET_OK) { + BarTermRestore (&termOrig); return 0; } @@ -311,7 +314,7 @@ int main (int argc, char **argv) { BarSettingsDestroy (&settings); /* restore terminal attributes, zsh doesn't need this, bash does... */ - tcsetattr (fileno (stdin), TCSANOW, &termOrig); + BarTermRestore (&termOrig); return 0; } diff --git a/src/terminal.c b/src/terminal.c index 09d0fe8..ab96004 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -56,3 +56,18 @@ void BarTermSetBuffer (char enable) { } tcsetattr(fileno (stdin), TCSANOW, &termopts); } + +/* Save old terminal settings + * @param save settings here + */ +inline void BarTermSave (struct termios *termOrig) { + tcgetattr (fileno (stdin), termOrig); +} + +/* Restore terminal settings + * @param Old settings + */ +inline void BarTermRestore (struct termios *termOrig) { + tcsetattr (fileno (stdin), TCSANOW, termOrig); +} + diff --git a/src/terminal.h b/src/terminal.h index c4fc5cf..13e9d57 100644 --- a/src/terminal.h +++ b/src/terminal.h @@ -24,7 +24,9 @@ THE SOFTWARE. #ifndef _TERMINAL_H #define _TERMINAL_H -void BarTermSetEcho (char enable); -void BarTermSetBuffer (char enable); +void BarTermSetEcho (char); +void BarTermSetBuffer (char); +inline void BarTermSave (struct termios *); +inline void BarTermRestore (struct termios *termOrig); #endif /* _TERMINAL_H */ |