--- a/src/nexus.c Mon Mar 16 22:06:39 2009 +0200
+++ b/src/nexus.c Mon Mar 16 23:34:05 2009 +0200
@@ -261,33 +261,23 @@
(void) sig;
(void) what;
- if (ctx->client && !ctx->client->quitting) {
- log_info("Quitting...");
-
- // quit it
- irc_client_quit(ctx->client, "Goodbye, cruel world ;(");
+ log_info("Quitting...");
- } else {
- log_error("Aborting");
-
- // die
- if (ctx->client) {
- irc_client_destroy(ctx->client);
- ctx->client = NULL;
- }
+ // unload the modules
+ modules_unload(ctx->modules);
- // exit
- event_base_loopexit(ctx->ev_base, NULL);
- }
+ // quit the irc client
+ irc_client_quit(ctx->client, "Goodbye, cruel world ;(");
+
+ // remove the signal handlers (ourself)
+ signals_free(ctx->signals);
}
int main (int argc, char **argv)
{
- struct signals *signals;
+ struct nexus _nexus, *nexus = &_nexus;
struct error_info err;
- struct nexus _nexus, *nexus = &_nexus;
-
// zero nexus
memset(nexus, 0, sizeof(*nexus));
@@ -296,13 +286,13 @@
FATAL("event_base_new");
// initialize signal handlers
- if ((ERROR_CODE(&err) = signals_create(&signals, nexus->ev_base)))
+ if ((ERROR_CODE(&err) = signals_create(&nexus->signals, nexus->ev_base)))
FATAL("signals_create");
// add our signal handlers
if (
- (ERROR_CODE(&err) = signals_add(signals, SIGPIPE, &signals_ignore, signals))
- || (ERROR_CODE(&err) = signals_add(signals, SIGINT, &on_sigint, nexus))
+ (ERROR_CODE(&err) = signals_add(nexus->signals, SIGPIPE, &signals_ignore, nexus->signals))
+ || (ERROR_CODE(&err) = signals_add(nexus->signals, SIGINT, &on_sigint, nexus))
)
FATAL_ERROR(&err, "signals_add");