Mercurial > hg
comparison mcabber/src/commands.c @ 841:f8c0447beec2
Allow "/room join . [nick]" if the current item is a MUC room
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Thu, 04 May 2006 20:22:03 +0200 |
parents | 2903fd66c3ad |
children | 915a7f17474a |
comparison
equal
deleted
inserted
replaced
840:2903fd66c3ad | 841:f8c0447beec2 |
---|---|
1430 } | 1430 } |
1431 | 1431 |
1432 static void room_join(gpointer bud, char *arg) | 1432 static void room_join(gpointer bud, char *arg) |
1433 { | 1433 { |
1434 char **paramlst; | 1434 char **paramlst; |
1435 char *roomname, *nick; | 1435 char *roomname, *nick, *roomname_tmp; |
1436 char *tmpnick = NULL; | 1436 char *tmpnick = NULL; |
1437 | 1437 |
1438 paramlst = split_arg(arg, 2, 0); // roomid, nickname | 1438 paramlst = split_arg(arg, 2, 0); // roomid, nickname |
1439 roomname = *paramlst; | 1439 roomname = *paramlst; |
1440 nick = *(paramlst+1); | 1440 nick = *(paramlst+1); |
1441 | 1441 |
1442 | 1442 if (!roomname || !strcmp(roomname, ".")) { |
1443 if (!roomname || strchr(roomname, '/')) { | 1443 // If the current_buddy is recognized as a room, the room name |
1444 // can be omitted (or "." can be used). | |
1445 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { | |
1446 scr_LogPrint(LPRINT_NORMAL, "Please specify a room name."); | |
1447 free_arg_lst(paramlst); | |
1448 return; | |
1449 } | |
1450 if (!roomname) | |
1451 nick = NULL; | |
1452 roomname = (char*)buddy_getjid(bud); | |
1453 } else if (strchr(roomname, '/')) { | |
1444 scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); | 1454 scr_LogPrint(LPRINT_NORMAL, "Invalid room name."); |
1445 free_arg_lst(paramlst); | 1455 free_arg_lst(paramlst); |
1446 return; | 1456 return; |
1447 } | 1457 } |
1448 | 1458 |
1468 g_free(tmpnick); | 1478 g_free(tmpnick); |
1469 free_arg_lst(paramlst); | 1479 free_arg_lst(paramlst); |
1470 return; | 1480 return; |
1471 } | 1481 } |
1472 | 1482 |
1473 // Note that roomname is part of the array allocated by split_arg(), | 1483 roomname_tmp = g_strdup(roomname); |
1474 // so we can modify it. | 1484 mc_strtolower(roomname_tmp); |
1475 mc_strtolower(roomname); | 1485 roomname = to_utf8(roomname_tmp); |
1476 roomname = to_utf8(roomname); | 1486 g_free(roomname_tmp); |
1487 | |
1477 jb_room_join(roomname, nick); | 1488 jb_room_join(roomname, nick); |
1478 | 1489 |
1479 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); | 1490 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname); |
1480 | 1491 |
1481 g_free(roomname); | 1492 g_free(roomname); |
1895 // current_buddy. | 1906 // current_buddy. |
1896 bud = NULL; | 1907 bud = NULL; |
1897 } | 1908 } |
1898 | 1909 |
1899 if (!strcasecmp(subcmd, "join")) { | 1910 if (!strcasecmp(subcmd, "join")) { |
1900 if ((arg = check_room_subcommand(arg, TRUE, NULL)) != NULL) | 1911 if ((arg = check_room_subcommand(arg, FALSE, NULL)) != NULL) |
1901 room_join(bud, arg); | 1912 room_join(bud, arg); |
1902 } else if (!strcasecmp(subcmd, "invite")) { | 1913 } else if (!strcasecmp(subcmd, "invite")) { |
1903 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) | 1914 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) |
1904 room_invite(bud, arg); | 1915 room_invite(bud, arg); |
1905 } else if (!strcasecmp(subcmd, "affil")) { | 1916 } else if (!strcasecmp(subcmd, "affil")) { |