Mercurial > hg
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); |