Mercurial > ~mikael > mcabber > hg
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); } }