Mercurial > hg
comparison mcabber/src/commands.c @ 1033:056364952b0d
[BP-7f216b904315] Fix a potential double UTF-8 encoding
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Thu, 16 Nov 2006 20:40:43 +0100 |
parents | 90ff94f0fbbb |
children | f7ef8003fc35 |
comparison
equal
deleted
inserted
replaced
1032:71e950ddf078 | 1033:056364952b0d |
---|---|
1495 } | 1495 } |
1496 | 1496 |
1497 static void room_join(gpointer bud, char *arg) | 1497 static void room_join(gpointer bud, char *arg) |
1498 { | 1498 { |
1499 char **paramlst; | 1499 char **paramlst; |
1500 char *roomname, *nick, *pass, *roomname_tmp; | 1500 char *roomname, *nick, *pass; |
1501 char *roomname_tmp = NULL; | |
1501 char *tmpnick = NULL; | 1502 char *tmpnick = NULL; |
1502 char *pass_utf8; | 1503 char *pass_utf8; |
1503 | 1504 |
1504 paramlst = split_arg(arg, 3, 0); // roomid, nickname, password | 1505 paramlst = split_arg(arg, 3, 0); // roomid, nickname, password |
1505 roomname = *paramlst; | 1506 roomname = *paramlst; |
1506 nick = *(paramlst+1); | 1507 nick = *(paramlst+1); |
1507 pass = *(paramlst+2); | 1508 pass = *(paramlst+2); |
1508 | 1509 |
1510 if (!roomname) | |
1511 nick = NULL; | |
1509 if (!nick) | 1512 if (!nick) |
1510 pass = NULL; | 1513 pass = NULL; |
1511 | 1514 |
1512 if (!roomname || !strcmp(roomname, ".")) { | 1515 if (!roomname || !strcmp(roomname, ".")) { |
1513 // If the current_buddy is recognized as a room, the room name | 1516 // If the current_buddy is recognized as a room, the room name |
1515 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { | 1518 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { |
1516 scr_LogPrint(LPRINT_NORMAL, "Please specify a room name."); | 1519 scr_LogPrint(LPRINT_NORMAL, "Please specify a room name."); |
1517 free_arg_lst(paramlst); | 1520 free_arg_lst(paramlst); |
1518 return; | 1521 return; |
1519 } | 1522 } |
1520 if (!roomname) | |
1521 nick = NULL; | |
1522 roomname = (char*)buddy_getjid(bud); | 1523 roomname = (char*)buddy_getjid(bud); |
1523 } else if (strchr(roomname, '/')) { | 1524 } else if (strchr(roomname, '/')) { |
1524 scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); | 1525 scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); |
1525 free_arg_lst(paramlst); | 1526 free_arg_lst(paramlst); |
1526 return; | 1527 return; |
1528 } else { | |
1529 // The room id has been specified. Let's convert it and use it. | |
1530 roomname_tmp = to_utf8(roomname); | |
1531 mc_strtolower(roomname_tmp); | |
1532 roomname = roomname_tmp; | |
1527 } | 1533 } |
1528 | 1534 |
1529 // If no nickname is provided with the /join command, | 1535 // If no nickname is provided with the /join command, |
1530 // we try the "nickname" option, then the username part of the jid. | 1536 // we try the "nickname" option, then the username part of the jid. |
1531 if (!nick || !*nick) { | 1537 if (!nick || !*nick) { |
1550 return; | 1556 return; |
1551 } | 1557 } |
1552 | 1558 |
1553 pass_utf8 = to_utf8(pass); | 1559 pass_utf8 = to_utf8(pass); |
1554 | 1560 |
1555 roomname_tmp = g_strdup(roomname); | 1561 jb_room_join(roomname, nick, pass_utf8); |
1556 mc_strtolower(roomname_tmp); | 1562 |
1557 roomname = to_utf8(roomname_tmp); | 1563 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); |
1564 | |
1558 g_free(roomname_tmp); | 1565 g_free(roomname_tmp); |
1559 | |
1560 jb_room_join(roomname, nick, pass_utf8); | |
1561 | |
1562 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); | |
1563 | |
1564 g_free(roomname); | |
1565 g_free(tmpnick); | 1566 g_free(tmpnick); |
1566 g_free(pass_utf8); | 1567 g_free(pass_utf8); |
1567 buddylist_build(); | 1568 buddylist_build(); |
1568 update_roster = TRUE; | 1569 update_roster = TRUE; |
1569 free_arg_lst(paramlst); | 1570 free_arg_lst(paramlst); |