From e8aefd9f962b9056196b7fb02b3ba100e0563e26 Mon Sep 17 00:00:00 2001
From: Přemysl Janouch
Date: Mon, 15 Jun 2015 01:11:22 +0200
Subject: ZyklonB: factor out make_status_report()
---
zyklonb.c | 60 +++++++++++++++++++++++++++++++++---------------------------
1 file changed, 33 insertions(+), 27 deletions(-)
diff --git a/zyklonb.c b/zyklonb.c
index dcb9223..aef0372 100644
--- a/zyklonb.c
+++ b/zyklonb.c
@@ -1279,6 +1279,36 @@ process_plugin_reload (struct bot_context *ctx,
process_plugin_load (ctx, msg, name);
}
+static char *
+make_status_report (struct bot_context *ctx)
+{
+ struct str report;
+ str_init (&report);
+
+ const char *reason = getenv (g_startup_reason_str);
+ if (!reason)
+ reason = "launched normally";
+ str_append_printf (&report, "\x02startup reason:\x0f %s", reason);
+
+ size_t zombies = 0;
+ const char *prepend = "; \x02plugins:\x0f ";
+ for (struct plugin *plugin = ctx->plugins; plugin; plugin = plugin->next)
+ {
+ if (plugin->is_zombie)
+ zombies++;
+ else
+ {
+ str_append_printf (&report, "%s%s", prepend, plugin->name);
+ prepend = ", ";
+ }
+ }
+ if (!ctx->plugins)
+ str_append_printf (&report, "%s\x02none\x0f", prepend);
+
+ str_append_printf (&report, "; \x02zombies:\x0f %zu", zombies);
+ return str_steal (&report);
+}
+
static void
process_privmsg (struct bot_context *ctx, const struct irc_message *msg)
{
@@ -1317,33 +1347,9 @@ process_privmsg (struct bot_context *ctx, const struct irc_message *msg)
}
else if (parse_bot_command (text, "status", &following))
{
- struct str report;
- str_init (&report);
-
- const char *reason = getenv (g_startup_reason_str);
- if (!reason)
- reason = "launched normally";
- str_append_printf (&report,
- "\x02startup reason:\x0f %s; \x02plugins:\x0f ", reason);
- size_t zombies = 0;
- const char *prepend = "";
- for (struct plugin *plugin = ctx->plugins;
- plugin; plugin = plugin->next)
- {
- if (plugin->is_zombie)
- zombies++;
- else
- {
- str_append_printf (&report, "%s%s", prepend, plugin->name);
- prepend = ", ";
- }
- }
- if (!ctx->plugins)
- str_append (&report, "\x02none\x0f");
- str_append_printf (&report, "; \x02zombies:\x0f %zu", zombies);
-
- respond_to_user (ctx, msg, "%s", report.str);
- str_free (&report);
+ char *report = make_status_report (ctx);
+ respond_to_user (ctx, msg, "%s", report);
+ free (report);
}
else if (parse_bot_command (text, "load", &following))
{
--
cgit v1.2.3-70-g09d2