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