--- a/mcabber/src/commands.c Sun Nov 12 13:11:07 2006 +0100
+++ b/mcabber/src/commands.c Sun Nov 12 15:39:56 2006 +0100
@@ -1568,7 +1568,8 @@
static void room_join(gpointer bud, char *arg)
{
char **paramlst;
- char *roomname, *nick, *pass, *roomname_tmp;
+ char *roomname, *nick, *pass;
+ char *roomname_tmp = NULL;
char *pass_utf8;
paramlst = split_arg(arg, 3, 0); // roomid, nickname, password
@@ -1576,6 +1577,8 @@
nick = *(paramlst+1);
pass = *(paramlst+2);
+ if (!roomname)
+ nick = NULL;
if (!nick)
pass = NULL;
@@ -1587,13 +1590,16 @@
free_arg_lst(paramlst);
return;
}
- if (!roomname)
- nick = NULL;
roomname = (char*)buddy_getjid(bud);
} else if (strchr(roomname, '/')) {
scr_LogPrint(LPRINT_NORMAL, "Invalid room name.");
free_arg_lst(paramlst);
return;
+ } else {
+ // The room id has been specified. Let's convert it and use it.
+ roomname_tmp = to_utf8(roomname);
+ mc_strtolower(roomname_tmp);
+ roomname = roomname_tmp;
}
// If no nickname is provided with the /join command,
@@ -1612,16 +1618,11 @@
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, pass_utf8);
scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname);
- g_free(roomname);
+ g_free(roomname_tmp);
g_free(nick);
g_free(pass_utf8);
buddylist_build();