summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2009-07-09 18:00:28 +0000
committerDimitri Sokolyuk <demon@dim13.org>2009-07-09 18:00:28 +0000
commitd3c35f26c808084d8d87b588281747bfcdf6cd7a (patch)
treeb0a9f143f7782f8524a91697fd225366c2627d29
parentad1ff9fbd015f6496e13f7460d9e876dba0c609d (diff)
quit on sigint, cursor off
-rw-r--r--aclock.c29
1 files 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 <signal.h>
#include <time.h>
+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 <tenox@tenox.tc>\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;