diff options
-rw-r--r-- | src/main.c | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -33,6 +33,8 @@ THE SOFTWARE. #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> +/* tcset/getattr () */ +#include <termios.h> /* last.fm scrobbling library */ #include <wardrobe.h> @@ -75,11 +77,15 @@ int main (int argc, char **argv) { nfds_t pollsLen = 0; char buf = '\0'; BarKeyShortcut_t *curShortcut = NULL; + /* terminal attributes _before_ we started messing around with ~ECHO */ + struct termios termOrig; BarUiMsg (MSG_NONE, "Welcome to " PACKAGE "!\n"); - /* init some things */ + /* save terminal attributes, before disabling echoing */ + tcgetattr (fileno (stdin), &termOrig); BarTermSetEcho (0); + /* init some things */ xmlInitParser (); ao_initialize (); PianoInit (&ph); @@ -124,7 +130,9 @@ int main (int argc, char **argv) { /* setup control connection */ if (settings.controlProxy != NULL) { char tmpPath[2]; - WaitressSplitUrl (settings.controlProxy, ph.waith.proxyHost, sizeof (ph.waith.proxyHost), ph.waith.proxyPort, sizeof (ph.waith.proxyPort), tmpPath, sizeof (tmpPath)); + WaitressSplitUrl (settings.controlProxy, ph.waith.proxyHost, + sizeof (ph.waith.proxyHost), ph.waith.proxyPort, + sizeof (ph.waith.proxyPort), tmpPath, sizeof (tmpPath)); } BarTermSetBuffer (0); @@ -296,5 +304,8 @@ int main (int argc, char **argv) { xmlCleanupParser (); BarSettingsDestroy (&settings); + /* restore terminal attributes, zsh doesn't need this, bash does... */ + tcsetattr (fileno (stdin), TCSANOW, &termOrig); + return 0; } |