|
@@ -120,6 +120,7 @@ noreturn void eventLoop(void) {
|
120
|
120
|
};
|
121
|
121
|
sigaction(SIGCHLD, &action, NULL);
|
122
|
122
|
sigaction(SIGINT, &action, NULL);
|
|
123
|
+ sigaction(SIGHUP, &action, NULL);
|
123
|
124
|
|
124
|
125
|
struct sigaction curses;
|
125
|
126
|
sigaction(SIGWINCH, &action, &curses);
|
|
@@ -130,6 +131,7 @@ noreturn void eventLoop(void) {
|
130
|
131
|
|
131
|
132
|
for (;;) {
|
132
|
133
|
if (sig[SIGCHLD]) childWait();
|
|
134
|
+ if (sig[SIGHUP]) ircFmt("QUIT :zzz\r\n");
|
133
|
135
|
if (sig[SIGINT]) {
|
134
|
136
|
signal(SIGINT, SIG_DFL);
|
135
|
137
|
ircFmt("QUIT :Goodbye\r\n");
|
|
@@ -139,7 +141,7 @@ noreturn void eventLoop(void) {
|
139
|
141
|
uiRead();
|
140
|
142
|
uiDraw();
|
141
|
143
|
}
|
142
|
|
- sig[SIGCHLD] = sig[SIGINT] = sig[SIGWINCH] = 0;
|
|
144
|
+ sig[SIGCHLD] = sig[SIGHUP] = sig[SIGINT] = sig[SIGWINCH] = 0;
|
143
|
145
|
|
144
|
146
|
struct pollfd fds[3] = {
|
145
|
147
|
{ .events = POLLIN, .fd = irc },
|