Mercurial > ~mikael > mcabber > hg
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 { |