#include <string.h>
#include "admin.h"
#include "help.h"
+#include "irc.h"
help_t *help;
hostmask = g_strdup_printf("ctrlproxy!ctrlproxy@%s", n->name);
virtual_network_recv_args(n, n->state->me.hostmask, "JOIN", ADMIN_CHANNEL, NULL);
- virtual_network_recv_args(n, NULL, "332", n->config->nick, ADMIN_CHANNEL,
+ virtual_network_recv_response(n, RPL_TOPIC, ADMIN_CHANNEL,
"CtrlProxy administration channel | Type `help' for more information",
NULL);
nicks = g_strdup_printf("@ctrlproxy %s", n->config->nick);
- virtual_network_recv_args(n, NULL, "353", n->config->nick, "=", ADMIN_CHANNEL, nicks, NULL);
+ virtual_network_recv_response(n, RPL_NAMREPLY, "=", ADMIN_CHANNEL, nicks, NULL);
g_free(nicks);
- virtual_network_recv_args(n, NULL, "366", n->config->nick, ADMIN_CHANNEL, "End of /NAMES list.", NULL);
+ virtual_network_recv_response(n, RPL_ENDOFNAMES, ADMIN_CHANNEL, "End of /NAMES list.", NULL);
g_free(hostmask);
return network_send_line_direct(s, c, ol);
}
+gboolean virtual_network_recv_response(struct network *n, int num, ...)
+{
+ va_list ap;
+ struct line *l;
+ gboolean ret;
+
+ g_assert(n);
+
+ va_start(ap, num);
+ l = virc_parse_line(n->name, ap);
+ va_end(ap);
+
+ l->args = g_realloc(l->args, sizeof(char *) * (l->argc+4));
+ memmove(&l->args[2], &l->args[0], l->argc * sizeof(char *));
+
+ l->args[0] = g_strdup_printf("%03d", num);
+
+ if (n->state && n->state->me.nick) l->args[1] = g_strdup(n->state->me.nick);
+ else l->args[1] = g_strdup("*");
+
+ l->argc+=2;
+ l->args[l->argc] = NULL;
+
+ ret = virtual_network_recv_line(n, l);
+
+ free_line(l);
+
+ return ret;
+}
+
gboolean virtual_network_recv_line(struct network *s, struct line *l)
{
g_assert(s);
G_MODULE_EXPORT struct network *find_network(struct global *, const char *);
G_MODULE_EXPORT gboolean virtual_network_recv_line(struct network *l, struct line *);
G_MODULE_EXPORT gboolean virtual_network_recv_args(struct network *l, const char *origin, ...);
+G_MODULE_EXPORT gboolean virtual_network_recv_response(struct network *n, int num, ...);
typedef void (*new_network_notify_fn) (struct network *, void *);
G_MODULE_EXPORT void register_new_network_notify(struct global *, new_network_notify_fn, void *userdata);
G_MODULE_EXPORT struct linestack_context *new_linestack(struct network *network);