Add /quit
parent
7c0b60221b
commit
7c0e9cf3d2
13
chat.c
13
chat.c
|
@ -115,13 +115,12 @@ int main(int argc, char *argv[]) {
|
||||||
{ .events = POLLIN, .fd = STDIN_FILENO },
|
{ .events = POLLIN, .fd = STDIN_FILENO },
|
||||||
{ .events = POLLIN, .fd = irc },
|
{ .events = POLLIN, .fd = irc },
|
||||||
};
|
};
|
||||||
for (;;) {
|
while (!self.quit) {
|
||||||
int nfds = poll(fds, 2, -1);
|
int nfds = poll(fds, 2, -1);
|
||||||
if (nfds < 0 && errno != EINTR) err(EX_IOERR, "poll");
|
if (nfds < 0 && errno != EINTR) err(EX_IOERR, "poll");
|
||||||
|
|
||||||
if (signals[SIGHUP] || signals[SIGINT] || signals[SIGTERM]) {
|
if (signals[SIGHUP]) self.quit = "zzz";
|
||||||
break;
|
if (signals[SIGINT] || signals[SIGTERM]) break;
|
||||||
}
|
|
||||||
if (signals[SIGWINCH]) {
|
if (signals[SIGWINCH]) {
|
||||||
signals[SIGWINCH] = 0;
|
signals[SIGWINCH] = 0;
|
||||||
cursesWinch(SIGWINCH);
|
cursesWinch(SIGWINCH);
|
||||||
|
@ -136,6 +135,10 @@ int main(int argc, char *argv[]) {
|
||||||
uiDraw();
|
uiDraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
ircFormat("QUIT\r\n");
|
if (self.quit) {
|
||||||
|
ircFormat("QUIT :%s\r\n", self.quit);
|
||||||
|
} else {
|
||||||
|
ircFormat("QUIT\r\n");
|
||||||
|
}
|
||||||
uiHide();
|
uiHide();
|
||||||
}
|
}
|
||||||
|
|
1
chat.h
1
chat.h
|
@ -75,6 +75,7 @@ extern struct Self {
|
||||||
char *nick;
|
char *nick;
|
||||||
char *user;
|
char *user;
|
||||||
enum Color color;
|
enum Color color;
|
||||||
|
char *quit;
|
||||||
} self;
|
} self;
|
||||||
|
|
||||||
static inline void set(char **field, const char *value) {
|
static inline void set(char **field, const char *value) {
|
||||||
|
|
|
@ -56,12 +56,17 @@ static void commandMe(size_t id, char *params) {
|
||||||
commandPrivmsg(id, buf);
|
commandPrivmsg(id, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void commandQuit(size_t id, char *params) {
|
||||||
|
set(&self.quit, (params ? params : "Goodbye"));
|
||||||
|
}
|
||||||
|
|
||||||
static const struct Handler {
|
static const struct Handler {
|
||||||
const char *cmd;
|
const char *cmd;
|
||||||
Command *fn;
|
Command *fn;
|
||||||
} Commands[] = {
|
} Commands[] = {
|
||||||
{ "/me", commandMe },
|
{ "/me", commandMe },
|
||||||
{ "/notice", commandNotice },
|
{ "/notice", commandNotice },
|
||||||
|
{ "/quit", commandQuit },
|
||||||
{ "/quote", commandQuote },
|
{ "/quote", commandQuote },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue