comparison mcabber/src/commands.c @ 900:b41684465283

MUC: join password-protected room
author Mikael Berthe <mikael@lilotux.net>
date Fri, 16 Jun 2006 22:38:49 +0200
parents afdd81c2c44d
children 2016f52a167f
comparison
equal deleted inserted replaced
899:a833f3d6119a 900:b41684465283
1490 } 1490 }
1491 1491
1492 static void room_join(gpointer bud, char *arg) 1492 static void room_join(gpointer bud, char *arg)
1493 { 1493 {
1494 char **paramlst; 1494 char **paramlst;
1495 char *roomname, *nick, *roomname_tmp; 1495 char *roomname, *nick, *pass, *roomname_tmp;
1496 char *tmpnick = NULL; 1496 char *tmpnick = NULL;
1497 1497 char *pass_utf8;
1498 paramlst = split_arg(arg, 2, 0); // roomid, nickname 1498
1499 paramlst = split_arg(arg, 3, 0); // roomid, nickname, password
1499 roomname = *paramlst; 1500 roomname = *paramlst;
1500 nick = *(paramlst+1); 1501 nick = *(paramlst+1);
1502 pass = *(paramlst+2);
1503
1504 if (!nick)
1505 pass = NULL;
1501 1506
1502 if (!roomname || !strcmp(roomname, ".")) { 1507 if (!roomname || !strcmp(roomname, ".")) {
1503 // If the current_buddy is recognized as a room, the room name 1508 // If the current_buddy is recognized as a room, the room name
1504 // can be omitted (or "." can be used). 1509 // can be omitted (or "." can be used).
1505 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { 1510 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) {
1538 g_free(tmpnick); 1543 g_free(tmpnick);
1539 free_arg_lst(paramlst); 1544 free_arg_lst(paramlst);
1540 return; 1545 return;
1541 } 1546 }
1542 1547
1548 pass_utf8 = to_utf8(pass);
1549
1543 roomname_tmp = g_strdup(roomname); 1550 roomname_tmp = g_strdup(roomname);
1544 mc_strtolower(roomname_tmp); 1551 mc_strtolower(roomname_tmp);
1545 roomname = to_utf8(roomname_tmp); 1552 roomname = to_utf8(roomname_tmp);
1546 g_free(roomname_tmp); 1553 g_free(roomname_tmp);
1547 1554
1548 jb_room_join(roomname, nick); 1555 jb_room_join(roomname, nick, pass_utf8);
1549 1556
1550 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); 1557 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname);
1551 1558
1552 g_free(roomname); 1559 g_free(roomname);
1553 g_free(tmpnick); 1560 g_free(tmpnick);
1561 g_free(pass_utf8);
1554 buddylist_build(); 1562 buddylist_build();
1555 update_roster = TRUE; 1563 update_roster = TRUE;
1556 free_arg_lst(paramlst); 1564 free_arg_lst(paramlst);
1557 } 1565 }
1558 1566
1751 if (nick) 1759 if (nick)
1752 scr_LogPrint(LPRINT_NORMAL, "Your nickname is: %s", nick); 1760 scr_LogPrint(LPRINT_NORMAL, "Your nickname is: %s", nick);
1753 else 1761 else
1754 scr_LogPrint(LPRINT_NORMAL, "You have no nickname in this room."); 1762 scr_LogPrint(LPRINT_NORMAL, "You have no nickname in this room.");
1755 } else { 1763 } else {
1756 gchar *cmd; 1764 gchar *roomname, *roomname_tmp, *nick;
1757 cmd = g_strdup_printf("%s %s", buddy_getjid(bud), arg); 1765 roomname_tmp = g_strdup(buddy_getjid(bud));
1758 room_join(bud, cmd); 1766 mc_strtolower(roomname_tmp);
1759 g_free(cmd); 1767 roomname = to_utf8(roomname_tmp);
1768 g_free(roomname_tmp);
1769 nick = to_utf8(arg);
1770
1771 jb_room_join(roomname, nick, NULL);
1772 g_free(roomname);
1773 g_free(nick);
1760 } 1774 }
1761 } 1775 }
1762 1776
1763 static void room_privmsg(gpointer bud, char *arg) 1777 static void room_privmsg(gpointer bud, char *arg)
1764 { 1778 {