Mercurial > hg
diff mcabber/src/commands.c @ 841:f8c0447beec2
Allow "/room join . [nick]" if the current item is a MUC room
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Thu, 04 May 2006 20:22:03 +0200 |
parents | 2903fd66c3ad |
children | 915a7f17474a |
line wrap: on
line diff
--- a/mcabber/src/commands.c Thu May 04 19:04:22 2006 +0200 +++ b/mcabber/src/commands.c Thu May 04 20:22:03 2006 +0200 @@ -1432,15 +1432,25 @@ static void room_join(gpointer bud, char *arg) { char **paramlst; - char *roomname, *nick; + char *roomname, *nick, *roomname_tmp; char *tmpnick = NULL; paramlst = split_arg(arg, 2, 0); // roomid, nickname roomname = *paramlst; nick = *(paramlst+1); - - if (!roomname || strchr(roomname, '/')) { + if (!roomname || !strcmp(roomname, ".")) { + // If the current_buddy is recognized as a room, the room name + // can be omitted (or "." can be used). + if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { + scr_LogPrint(LPRINT_NORMAL, "Please specify a room name."); + 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; @@ -1470,10 +1480,11 @@ return; } - // Note that roomname is part of the array allocated by split_arg(), - // so we can modify it. - mc_strtolower(roomname); - roomname = to_utf8(roomname); + roomname_tmp = g_strdup(roomname); + mc_strtolower(roomname_tmp); + roomname = to_utf8(roomname_tmp); + g_free(roomname_tmp); + jb_room_join(roomname, nick); scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); @@ -1897,7 +1908,7 @@ } if (!strcasecmp(subcmd, "join")) { - if ((arg = check_room_subcommand(arg, TRUE, NULL)) != NULL) + if ((arg = check_room_subcommand(arg, FALSE, NULL)) != NULL) room_join(bud, arg); } else if (!strcasecmp(subcmd, "invite")) { if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)