]> Pileus Git - ~andy/lamechat/blobdiff - xmpp.c
Make logfile optional.
[~andy/lamechat] / xmpp.c
diff --git a/xmpp.c b/xmpp.c
index 35c1c825ce519caf8c97fdae9cd60ece6f3f73be..374e6615d4c286c4525fdf49503b8ee24a4156a7 100644 (file)
--- a/xmpp.c
+++ b/xmpp.c
@@ -1086,6 +1086,14 @@ void xmpp_config(server_t *server, channel_t *channel,
                else if (match(key, "join"))
                        chan->join = get_bool(value);
        }
+       if (match(group, "autojoin")) {
+               xmpp_channel_t *chan = new0(xmpp_channel_t);
+               chan->channel.server = &srv->server;
+               chan->channel.name = strcopy(key);
+               chan->room = get_string(value);
+               chan->join = 1;
+               add_channel(&chan->channel);
+       }
 }
 
 void xmpp_complete(channel_t *channel, const char *text)
@@ -1127,11 +1135,12 @@ void xmpp_send(channel_t *channel, const char *text)
        const char *arg;
 
        /* Escape HTML */
+       const char *raw = text;
        escape(buf, text, sizeof(buf));
        text = buf;
 
        /* Handle commands */
-       if (text[0] == '/') {
+       if (text[0] == '/' && text[1] != '/') {
                if (prefix(text, "/items", &arg)) {
                        net_print(&srv->net,
                                "<iq id='items' type='get' from='%s' to='%s'>"
@@ -1210,6 +1219,8 @@ void xmpp_send(channel_t *channel, const char *text)
                }
        } else {
                debug("message: [%s]", text);
+               if (text[0] == '/')
+                       text = &text[1];
                if (chan == &srv->system) {
                        chan_notice(chan, "Cannot send to server");
                }
@@ -1225,7 +1236,7 @@ void xmpp_send(channel_t *channel, const char *text)
                                "<body>%s</body>"
                                "</message>",
                                srv->id++, srv->bind, chan->dest, text);
-                       chat_recv(channel, &srv->myself.user, text);
+                       chat_recv(channel, &srv->myself.user, raw);
                }
        }
 }