Mercurial > ~mikael > mcabber > hg
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"); |