aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2015-06-15 01:11:22 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2015-06-15 01:11:22 +0200
commite8aefd9f962b9056196b7fb02b3ba100e0563e26 (patch)
tree3e9f28b8dcabb49d8b757b6f91e1341e6641ef99
parent3582789cf51f0bf02b274429b5817d0f143441d4 (diff)
downloadxK-e8aefd9f962b9056196b7fb02b3ba100e0563e26.tar.gz
xK-e8aefd9f962b9056196b7fb02b3ba100e0563e26.tar.xz
xK-e8aefd9f962b9056196b7fb02b3ba100e0563e26.zip
ZyklonB: factor out make_status_report()
-rw-r--r--zyklonb.c60
1 files 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))
{