comparison mcabber/src/commands.c @ 504:321ae11e7ddb

Prettier display for "/room names"
author Mikael Berthe <mikael@lilotux.net>
date Mon, 31 Oct 2005 23:04:51 +0100
parents af6e31e32d9e
children 74dcd0df532e
comparison
equal deleted inserted replaced
503:ddec224c2318 504:321ae11e7ddb
836 } 836 }
837 837
838 g_free(buffer); 838 g_free(buffer);
839 } 839 }
840 840
841 // room_names() is a variation of do_info(), for chatrooms only
842 static void room_names(void)
843 {
844 gpointer bud;
845 const char *jid;
846 char *buffer;
847 GSList *resources;
848
849 if (!current_buddy) return;
850 bud = BUDDATA(current_buddy);
851
852 if (buddy_gettype(bud) != ROSTER_TYPE_ROOM) {
853 scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom");
854 return;
855 }
856
857 jid = buddy_getjid(bud);
858
859 buffer = g_new(char, 128);
860 snprintf(buffer, 127, "Room members:");
861 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
862
863 resources = buddy_getresources(bud);
864 for ( ; resources ; resources = g_slist_next(resources) ) {
865 enum imstatus rstatus;
866 const char *rst_msg;
867
868 rstatus = buddy_getstatus(bud, resources->data);
869 rst_msg = buddy_getstatusmsg(bud, resources->data);
870
871 snprintf(buffer, 127, "[%c] %s", imstatus2char[rstatus],
872 (char*)resources->data);
873 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
874 if (rst_msg) {
875 snprintf(buffer, 127, "Status message: %s", rst_msg);
876 scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO);
877 }
878 }
879
880 g_free(buffer);
881 }
882
841 static void do_rename(char *arg) 883 static void do_rename(char *arg)
842 { 884 {
843 gpointer bud; 885 gpointer bud;
844 const char *jid, *group; 886 const char *jid, *group;
845 guint type; 887 guint type;
1134 } else if (!strcasecmp(arg, "names")) { 1176 } else if (!strcasecmp(arg, "names")) {
1135 if (!(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { 1177 if (!(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) {
1136 scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); 1178 scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom");
1137 return; 1179 return;
1138 } 1180 }
1139 do_info(NULL); 1181 room_names();
1140 } else if (!strncasecmp(arg, "nick", 4)) { 1182 } else if (!strncasecmp(arg, "nick", 4)) {
1141 gchar *cmd; 1183 gchar *cmd;
1142 arg += 4; 1184 arg += 4;
1143 if (*arg++ != ' ') { 1185 if (*arg++ != ' ') {
1144 scr_LogPrint(LPRINT_NORMAL, "Wrong or missing parameter"); 1186 scr_LogPrint(LPRINT_NORMAL, "Wrong or missing parameter");