diff options
| author | Přemysl Janouch <p.janouch@gmail.com> | 2015-06-15 01:11:22 +0200 | 
|---|---|---|
| committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-06-15 01:11:22 +0200 | 
| commit | e8aefd9f962b9056196b7fb02b3ba100e0563e26 (patch) | |
| tree | 3e9f28b8dcabb49d8b757b6f91e1341e6641ef99 /zyklonb.c | |
| parent | 3582789cf51f0bf02b274429b5817d0f143441d4 (diff) | |
| download | xK-e8aefd9f962b9056196b7fb02b3ba100e0563e26.tar.gz xK-e8aefd9f962b9056196b7fb02b3ba100e0563e26.tar.xz xK-e8aefd9f962b9056196b7fb02b3ba100e0563e26.zip | |
ZyklonB: factor out make_status_report()
Diffstat (limited to 'zyklonb.c')
| -rw-r--r-- | zyklonb.c | 60 | 
1 files changed, 33 insertions, 27 deletions
| @@ -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))  	{ | 
