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 */  | 
