1566 } |
1566 } |
1567 |
1567 |
1568 static void room_join(gpointer bud, char *arg) |
1568 static void room_join(gpointer bud, char *arg) |
1569 { |
1569 { |
1570 char **paramlst; |
1570 char **paramlst; |
1571 char *roomname, *nick, *pass, *roomname_tmp; |
1571 char *roomname, *nick, *pass; |
|
1572 char *roomname_tmp = NULL; |
1572 char *pass_utf8; |
1573 char *pass_utf8; |
1573 |
1574 |
1574 paramlst = split_arg(arg, 3, 0); // roomid, nickname, password |
1575 paramlst = split_arg(arg, 3, 0); // roomid, nickname, password |
1575 roomname = *paramlst; |
1576 roomname = *paramlst; |
1576 nick = *(paramlst+1); |
1577 nick = *(paramlst+1); |
1577 pass = *(paramlst+2); |
1578 pass = *(paramlst+2); |
1578 |
1579 |
|
1580 if (!roomname) |
|
1581 nick = NULL; |
1579 if (!nick) |
1582 if (!nick) |
1580 pass = NULL; |
1583 pass = NULL; |
1581 |
1584 |
1582 if (!roomname || !strcmp(roomname, ".")) { |
1585 if (!roomname || !strcmp(roomname, ".")) { |
1583 // If the current_buddy is recognized as a room, the room name |
1586 // If the current_buddy is recognized as a room, the room name |
1585 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { |
1588 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { |
1586 scr_LogPrint(LPRINT_NORMAL, "Please specify a room name."); |
1589 scr_LogPrint(LPRINT_NORMAL, "Please specify a room name."); |
1587 free_arg_lst(paramlst); |
1590 free_arg_lst(paramlst); |
1588 return; |
1591 return; |
1589 } |
1592 } |
1590 if (!roomname) |
|
1591 nick = NULL; |
|
1592 roomname = (char*)buddy_getjid(bud); |
1593 roomname = (char*)buddy_getjid(bud); |
1593 } else if (strchr(roomname, '/')) { |
1594 } else if (strchr(roomname, '/')) { |
1594 scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); |
1595 scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); |
1595 free_arg_lst(paramlst); |
1596 free_arg_lst(paramlst); |
1596 return; |
1597 return; |
|
1598 } else { |
|
1599 // The room id has been specified. Let's convert it and use it. |
|
1600 roomname_tmp = to_utf8(roomname); |
|
1601 mc_strtolower(roomname_tmp); |
|
1602 roomname = roomname_tmp; |
1597 } |
1603 } |
1598 |
1604 |
1599 // If no nickname is provided with the /join command, |
1605 // If no nickname is provided with the /join command, |
1600 // we try to get a default nickname. |
1606 // we try to get a default nickname. |
1601 if (!nick || !*nick) |
1607 if (!nick || !*nick) |
1610 return; |
1616 return; |
1611 } |
1617 } |
1612 |
1618 |
1613 pass_utf8 = to_utf8(pass); |
1619 pass_utf8 = to_utf8(pass); |
1614 |
1620 |
1615 roomname_tmp = g_strdup(roomname); |
1621 jb_room_join(roomname, nick, pass_utf8); |
1616 mc_strtolower(roomname_tmp); |
1622 |
1617 roomname = to_utf8(roomname_tmp); |
1623 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); |
|
1624 |
1618 g_free(roomname_tmp); |
1625 g_free(roomname_tmp); |
1619 |
|
1620 jb_room_join(roomname, nick, pass_utf8); |
|
1621 |
|
1622 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); |
|
1623 |
|
1624 g_free(roomname); |
|
1625 g_free(nick); |
1626 g_free(nick); |
1626 g_free(pass_utf8); |
1627 g_free(pass_utf8); |
1627 buddylist_build(); |
1628 buddylist_build(); |
1628 update_roster = TRUE; |
1629 update_roster = TRUE; |
1629 free_arg_lst(paramlst); |
1630 free_arg_lst(paramlst); |