From 830ac85aba11ca56f610e3119b7d92a9e9de18ac Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Thu, 2 Jul 2009 21:15:39 +0200 Subject: Enable echoing on early return, too See commit a6c521fecd91867c6e184106f4e63445d1cb158a --- src/main.c | 7 +++++-- src/terminal.c | 15 +++++++++++++++ src/terminal.h | 6 ++++-- 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 2802546..e9d0152 100644 --- a/src/main.c +++ b/src/main.c @@ -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 */ -- cgit v1.2.3