diff --git a/zyklonb.c b/zyklonb.c index 549ae21..01c7089 100644 --- a/zyklonb.c +++ b/zyklonb.c @@ -57,9 +57,9 @@ static struct config_item g_config_table[] = // --- Application data -------------------------------------------------------- -struct plugin_data +struct plugin { - LIST_HEADER (struct plugin_data) + LIST_HEADER (struct plugin) struct bot_context *ctx; ///< Parent context char *name; ///< Plugin identifier @@ -83,7 +83,7 @@ struct plugin_data }; static void -plugin_data_init (struct plugin_data *self) +plugin_init (struct plugin *self) { memset (self, 0, sizeof *self); @@ -97,7 +97,7 @@ plugin_data_init (struct plugin_data *self) } static void -plugin_data_free (struct plugin_data *self) +plugin_free (struct plugin *self) { soft_assert (self->pid == -1); free (self->name); @@ -114,6 +114,8 @@ plugin_data_free (struct plugin_data *self) str_free (&self->queued_output); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + struct bot_context { struct str_map config; ///< User configuration @@ -134,7 +136,7 @@ struct bot_context SSL_CTX *ssl_ctx; ///< SSL context SSL *ssl; ///< SSL connection - struct plugin_data *plugins; ///< Linked list of plugins + struct plugin *plugins; ///< Linked list of plugins struct str_map plugins_by_name; ///< Indexes @em plugins by their name struct poller poller; ///< Manages polled descriptors @@ -190,11 +192,11 @@ bot_context_free (struct bot_context *self) str_free (&self->read_buffer); // TODO: terminate the plugins properly before this is called - struct plugin_data *link, *tmp; + struct plugin *link, *tmp; for (link = self->plugins; link; link = tmp) { tmp = link->next; - plugin_data_free (link); + plugin_free (link); free (link); } @@ -230,7 +232,7 @@ try_finish_quit (struct bot_context *ctx) ctx->polling = false; } -static bool plugin_zombify (struct plugin_data *); +static bool plugin_zombify (struct plugin *); static void initiate_quit (struct bot_context *ctx) @@ -238,7 +240,7 @@ initiate_quit (struct bot_context *ctx) // Initiate bringing down of the two things that block our shutdown: // a/ the IRC socket, b/ our child processes: - for (struct plugin_data *plugin = ctx->plugins; + for (struct plugin *plugin = ctx->plugins; plugin; plugin = plugin->next) plugin_zombify (plugin); if (ctx->irc_fd != -1) @@ -721,10 +723,10 @@ setup_recovery_handler (struct bot_context *ctx, struct error **e) /// The name of the special IRC command for interprocess communication static const char *plugin_ipc_command = "ZYKLONB"; -static struct plugin_data * +static struct plugin * plugin_find_by_pid (struct bot_context *ctx, pid_t pid) { - struct plugin_data *iter; + struct plugin *iter; for (iter = ctx->plugins; iter; iter = iter->next) if (iter->pid == pid) return iter; @@ -732,7 +734,7 @@ plugin_find_by_pid (struct bot_context *ctx, pid_t pid) } static bool -plugin_zombify (struct plugin_data *plugin) +plugin_zombify (struct plugin *plugin) { if (plugin->is_zombie) return false; @@ -760,7 +762,7 @@ plugin_zombify (struct plugin_data *plugin) } static void -on_plugin_writable (const struct pollfd *fd, struct plugin_data *plugin) +on_plugin_writable (const struct pollfd *fd, struct plugin *plugin) { struct str *buf = &plugin->write_buffer; size_t written_total = 0; @@ -807,7 +809,7 @@ on_plugin_writable (const struct pollfd *fd, struct plugin_data *plugin) } static void -plugin_queue_write (struct plugin_data *plugin) +plugin_queue_write (struct plugin *plugin) { if (plugin->is_zombie) return; @@ -826,11 +828,11 @@ plugin_queue_write (struct plugin_data *plugin) } static void -plugin_send (struct plugin_data *plugin, const char *format, ...) +plugin_send (struct plugin *plugin, const char *format, ...) ATTRIBUTE_PRINTF (2, 3); static void -plugin_send (struct plugin_data *plugin, const char *format, ...) +plugin_send (struct plugin *plugin, const char *format, ...) { va_list ap; @@ -855,7 +857,7 @@ static void plugin_process_message (const struct irc_message *msg, const char *raw, void *user_data) { - struct plugin_data *plugin = user_data; + struct plugin *plugin = user_data; struct bot_context *ctx = plugin->ctx; if (g_debug_mode) @@ -926,7 +928,7 @@ plugin_process_message (const struct irc_message *msg, } static void -on_plugin_readable (const struct pollfd *fd, struct plugin_data *plugin) +on_plugin_readable (const struct pollfd *fd, struct plugin *plugin) { if (fd->revents & ~(POLLIN | POLLHUP | POLLERR)) print_debug ("fd %d: unexpected revents: %d", fd->fd, fd->revents); @@ -1076,8 +1078,8 @@ plugin_load (struct bot_context *ctx, const char *name, struct error **e) set_blocking (stdout_pipe[0], false); set_blocking (stdin_pipe[1], false); - struct plugin_data *plugin = xmalloc (sizeof *plugin); - plugin_data_init (plugin); + struct plugin *plugin = xmalloc (sizeof *plugin); + plugin_init (plugin); plugin->ctx = ctx; plugin->pid = pid; plugin->name = xstrdup (name); @@ -1111,7 +1113,7 @@ fail_1: static bool plugin_unload (struct bot_context *ctx, const char *name, struct error **e) { - struct plugin_data *plugin = str_map_find (&ctx->plugins_by_name, name); + struct plugin *plugin = str_map_find (&ctx->plugins_by_name, name); if (!plugin) { @@ -1325,7 +1327,7 @@ process_privmsg (struct bot_context *ctx, const struct irc_message *msg) "\x02startup reason:\x0f %s; \x02plugins:\x0f ", reason); size_t zombies = 0; const char *prepend = ""; - for (struct plugin_data *plugin = ctx->plugins; + for (struct plugin *plugin = ctx->plugins; plugin; plugin = plugin->next) { if (plugin->is_zombie) @@ -1372,7 +1374,7 @@ irc_forward_message_to_plugins (struct bot_context *ctx, const char *raw) if (!ctx->irc_ready) return; - for (struct plugin_data *plugin = ctx->plugins; + for (struct plugin *plugin = ctx->plugins; plugin; plugin = plugin->next) { if (plugin->is_zombie) @@ -1778,7 +1780,7 @@ on_signal_pipe_readable (const struct pollfd *fd, struct bot_context *ctx) if (zombie == 0) break; - struct plugin_data *plugin = plugin_find_by_pid (ctx, zombie); + struct plugin *plugin = plugin_find_by_pid (ctx, zombie); // Something has died but we don't recognize it (re-exec?) if (!soft_assert (plugin != NULL)) continue; @@ -1814,7 +1816,7 @@ on_signal_pipe_readable (const struct pollfd *fd, struct bot_context *ctx) plugin->read_fd = -1; LIST_UNLINK (ctx->plugins, plugin); - plugin_data_free (plugin); + plugin_free (plugin); free (plugin); // Living child processes block us from quitting