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")) {