From d3c35f26c808084d8d87b588281747bfcdf6cd7a Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 9 Jul 2009 18:00:28 +0000 Subject: quit on sigint, cursor off --- aclock.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/aclock.c b/aclock.c index a1689af..5428901 100644 --- a/aclock.c +++ b/aclock.c @@ -16,16 +16,18 @@ #include #include +int die = 0; +int redraw = 0; + void catch(int sig) { - struct winsize ws; - switch (sig) { case SIGWINCH: - if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) != -1) - resizeterm(ws.ws_row, ws.ws_col); - clear(); + redraw = 1; + break; + case SIGINT: + die = 1; break; default: break; @@ -76,19 +78,29 @@ int main(void) { char INFO[] = "Copyright (c) 2002 by Antek Sawicki \n" - "Version 1.8; Dublin, June 2002\n"; + "Version 1.8; Dublin, June 2002\n"; char digital_time[15]; int FontHW = 2; int sXmax, sYmax, smax, hand_max, sXcen, sYcen; time_t t; - struct tm *ltime; + struct tm *ltime; + struct winsize ws; + signal(SIGWINCH, catch); signal(SIGALRM, catch); + signal(SIGINT, catch); settimer(1); initscr(); + curs_set(0); + + while (!die) { + if (redraw && ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) != -1) { + resizeterm(ws.ws_row, ws.ws_col); + clear(); + redraw = 0; + } - for (;;) { time(&t); ltime = localtime(&t); sXmax = COLS; @@ -119,6 +131,7 @@ main(void) refresh(); pause(); } + curs_set(1); endwin(); return 0; -- cgit v1.2.3