comparison mcabber/src/commands.c @ 1012:7f216b904315

Fix a potential double UTF-8 encoding
author Mikael Berthe <mikael@lilotux.net>
date Sun, 12 Nov 2006 15:39:56 +0100
parents c112423ac012
children 99c5278bf6b8
comparison
equal deleted inserted replaced
1011:b5bcc223cf51 1012:7f216b904315
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);