diff mcabber/src/commands.c @ 900:b41684465283

MUC: join password-protected room
author Mikael Berthe <mikael@lilotux.net>
date Fri, 16 Jun 2006 22:38:49 +0200
parents afdd81c2c44d
children 2016f52a167f
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sat Jun 10 12:16:09 2006 +0200
+++ b/mcabber/src/commands.c	Fri Jun 16 22:38:49 2006 +0200
@@ -1492,12 +1492,17 @@
 static void room_join(gpointer bud, char *arg)
 {
   char **paramlst;
-  char *roomname, *nick, *roomname_tmp;
+  char *roomname, *nick, *pass, *roomname_tmp;
   char *tmpnick = NULL;
+  char *pass_utf8;
 
-  paramlst = split_arg(arg, 2, 0); // roomid, nickname
+  paramlst = split_arg(arg, 3, 0); // roomid, nickname, password
   roomname = *paramlst;
   nick = *(paramlst+1);
+  pass = *(paramlst+2);
+
+  if (!nick)
+    pass = NULL;
 
   if (!roomname || !strcmp(roomname, ".")) {
     // If the current_buddy is recognized as a room, the room name
@@ -1540,17 +1545,20 @@
     return;
   }
 
+  pass_utf8 = to_utf8(pass);
+
   roomname_tmp = g_strdup(roomname);
   mc_strtolower(roomname_tmp);
   roomname = to_utf8(roomname_tmp);
   g_free(roomname_tmp);
 
-  jb_room_join(roomname, nick);
+  jb_room_join(roomname, nick, pass_utf8);
 
   scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname);
 
   g_free(roomname);
   g_free(tmpnick);
+  g_free(pass_utf8);
   buddylist_build();
   update_roster = TRUE;
   free_arg_lst(paramlst);
@@ -1753,10 +1761,16 @@
     else
       scr_LogPrint(LPRINT_NORMAL, "You have no nickname in this room.");
   } else {
-    gchar *cmd;
-    cmd = g_strdup_printf("%s %s", buddy_getjid(bud), arg);
-    room_join(bud, cmd);
-    g_free(cmd);
+    gchar *roomname, *roomname_tmp, *nick;
+    roomname_tmp = g_strdup(buddy_getjid(bud));
+    mc_strtolower(roomname_tmp);
+    roomname = to_utf8(roomname_tmp);
+    g_free(roomname_tmp);
+    nick = to_utf8(arg);
+
+    jb_room_join(roomname, nick, NULL);
+    g_free(roomname);
+    g_free(nick);
   }
 }