--- a/mcabber/src/commands.c Thu Nov 16 19:31:03 2006 +0100
+++ b/mcabber/src/commands.c Thu Nov 16 20:40:43 2006 +0100
@@ -1497,7 +1497,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 *tmpnick = NULL;
char *pass_utf8;
@@ -1506,6 +1507,8 @@
nick = *(paramlst+1);
pass = *(paramlst+2);
+ if (!roomname)
+ nick = NULL;
if (!nick)
pass = NULL;
@@ -1517,13 +1520,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,
@@ -1552,16 +1558,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(tmpnick);
g_free(pass_utf8);
buddylist_build();