Mercurial > hg
changeset 389:6e895f397474
Ncurses changes + Ctrl-C does not send a signal anylore
* Use nonl() when initializing ncurses
* Ctrl-C does not send a signal in raw mode, so we handle it
as a normal key
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sat, 30 Jul 2005 10:36:46 +0100 |
parents | f211238d5812 |
children | 468c9cac2798 |
files | mcabber/src/main.c mcabber/src/screen.c mcabber/src/screen.h |
diffstat | 3 files changed, 10 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/main.c Fri Jul 29 20:28:06 2005 +0100 +++ b/mcabber/src/main.c Sat Jul 30 10:36:46 2005 +0100 @@ -114,17 +114,8 @@ signal(SIGCHLD, sig_handler); } else if (signum == SIGTERM) { mcabber_disconnect("Killed by SIGTERM"); - } else if (signum == SIGINT) { // Ctrl-C - static time_t LastSigtermTime; - time_t now; - time(&now); - /* Terminate if 2 consecutive SIGTERMs */ - if (now - LastSigtermTime < 2) - mcabber_disconnect("Killed by SIGINT"); - LastSigtermTime = now; - signal(SIGINT, sig_handler); - scr_handle_sigint(); - scr_LogPrint(LPRINT_NORMAL, "Hit Ctrl-C twice to leave mcabber"); + } else if (signum == SIGINT) { + mcabber_disconnect("Killed by SIGINT"); } else { scr_LogPrint(LPRINT_LOGNORM, "Caught signal: %d", signum); }
--- a/mcabber/src/screen.c Fri Jul 29 20:28:06 2005 +0100 +++ b/mcabber/src/screen.c Sat Jul 30 10:36:46 2005 +0100 @@ -202,6 +202,8 @@ initscr(); raw(); noecho(); + nonl(); + intrflush(stdscr, FALSE); start_color(); use_default_colors(); Curses = TRUE; @@ -1432,7 +1434,7 @@ wmove(inputWnd, 0, ptr_inputline - (char*)&inputLine - inputline_offset); } -void scr_handle_sigint(void) +void scr_handle_CtrlC(void) { if (!Curses) return; // Leave multi-line mode @@ -1503,7 +1505,7 @@ scr_handle_tab(); check_offset(0); break; - case '\n': // Enter + case 13: // Enter case 15: // Ctrl-o ("accept-line-and-down-history") scr_CheckAutoAway(TRUE); if (process_line(inputLine)) @@ -1515,7 +1517,7 @@ *ptr_inputline = 0; inputline_offset = 0; - if (key == '\n') // Enter + if (key == 13) // Enter { // Reset history line pointer cmdhisto_cur = NULL; @@ -1559,6 +1561,9 @@ ptr_inputline = inputLine; inputline_offset = 0; break; + case 3: // Ctrl-C + scr_handle_CtrlC(); + break; case KEY_END: case 5: for (; *ptr_inputline; ptr_inputline++) ;
--- a/mcabber/src/screen.h Fri Jul 29 20:28:06 2005 +0100 +++ b/mcabber/src/screen.h Sat Jul 30 10:36:46 2005 +0100 @@ -38,7 +38,6 @@ inline int scr_get_multimode(); void scr_append_multiline(const char *line); inline const char *scr_get_multiline(); -void scr_handle_sigint(void); int scr_Getch(void);