--- a/src/irc_net.c Thu Mar 12 18:08:27 2009 +0200
+++ b/src/irc_net.c Thu Mar 12 18:11:44 2009 +0200
@@ -27,6 +27,32 @@
.on_registered = &irc_net_conn_registered,
};
+/**
+ * :nm JOIN <channel>
+ */
+static void irc_net_on_JOIN (const struct irc_line *line, void *arg)
+{
+ struct irc_net *net = arg;
+ struct irc_chan *chan;
+
+ // look up channel
+ if ((chan = irc_net_get_chan(net, line->args[0])) == NULL) {
+ log_warn("unkown channel: %s", line->args[0]);
+ return;
+ }
+
+ // propagate
+ irc_cmd_invoke(&chan->handlers, line);
+}
+
+/**
+ * Our irc_cmd handler list
+ */
+static struct irc_cmd_handler _cmd_handlers[] = {
+ { "JOIN", &irc_net_on_JOIN },
+ { NULL, NULL }
+};
+
err_t irc_net_create (struct irc_net **net_ptr, const struct irc_net_info *info, struct error_info *err)
{
struct irc_net *net;
@@ -58,6 +84,10 @@
if (irc_conn_create(&net->conn, sock, &_conn_callbacks, net, err))
goto error;
+ // add our command handlers
+ if ((ERROR_CODE(err) = irc_conn_add_cmd_handlers (net->conn, _cmd_handlers, net)))
+ goto error;
+
// register
log_info("connected, registering");