aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--protocols/bee.h3
-rw-r--r--protocols/nogaim.h2
-rw-r--r--protocols/purple/bpurple.h1
-rw-r--r--protocols/purple/purple.c18
-rw-r--r--root_commands.c29
5 files changed, 16 insertions, 37 deletions
diff --git a/protocols/bee.h b/protocols/bee.h
index 8e665ac8..5f47e464 100644
--- a/protocols/bee.h
+++ b/protocols/bee.h
@@ -86,9 +86,6 @@ typedef struct bee_user {
typedef struct bee_chat_info {
char *title;
char *topic;
-
- /* If less than zero, the user count is ignored when displaying */
- int userc;
} bee_chat_info_t;
/* This one's mostly used so save space and make it easier (cheaper) to
diff --git a/protocols/nogaim.h b/protocols/nogaim.h
index b2ae2cae..4cba2174 100644
--- a/protocols/nogaim.h
+++ b/protocols/nogaim.h
@@ -268,7 +268,7 @@ struct prpl {
* bee_chat_list_finish() function gets called at some point
* after the chat list is completely updated.
*/
- void (*chat_list) (struct im_connection *, const char *server);
+ void (* chat_list) (struct im_connection *, const char *server);
/* Some placeholders so eventually older plugins may cooperate with newer BitlBees. */
void *resv1;
diff --git a/protocols/purple/bpurple.h b/protocols/purple/bpurple.h
index c7b3a59c..ca7cf70e 100644
--- a/protocols/purple/bpurple.h
+++ b/protocols/purple/bpurple.h
@@ -18,7 +18,6 @@ struct purple_roomlist_data
{
GSList *chats;
gint topic;
- gint userc;
};
#endif /* !BPURPLE_H */
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c
index 114fec82..4f10c9e7 100644
--- a/protocols/purple/purple.c
+++ b/protocols/purple/purple.c
@@ -768,7 +768,9 @@ void purple_chat_list(struct im_connection *ic, const char *server)
list = purple_roomlist_get_list(pd->account->gc);
- if (list == NULL) {
+ if (list) {
+ purple_roomlist_ref(list);
+ } else {
imcb_log(ic, "Room listing unsupported by this purple plugin");
}
}
@@ -1314,7 +1316,6 @@ static void prplcb_roomlist_create(PurpleRoomlist *list)
list->ui_data = rld = g_new0(struct purple_roomlist_data, 1);
rld->topic = -1;
- rld->userc = -1;
}
static void prplcb_roomlist_set_fields(PurpleRoomlist *list, GList *fields)
@@ -1339,10 +1340,6 @@ static void prplcb_roomlist_set_fields(PurpleRoomlist *list, GList *fields)
if (field->type == PURPLE_ROOMLIST_FIELD_STRING) {
rld->topic = i;
}
- } else if (g_strcasecmp(field->name, "users") == 0) {
- if (field->type == PURPLE_ROOMLIST_FIELD_INT) {
- rld->userc = i;
- }
}
}
@@ -1357,7 +1354,6 @@ static void prplcb_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *r
const char *title;
const char *topic;
GList *fields;
- gpointer data;
struct purple_roomlist_data *rld = list->ui_data;
fields = purple_roomlist_room_get_fields(room);
@@ -1373,13 +1369,6 @@ static void prplcb_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *r
ci->title = g_strdup(title);
ci->topic = g_strdup(topic);
rld->chats = g_slist_prepend(rld->chats, ci);
-
- if (rld->userc >= 0) {
- data = g_list_nth_data(fields, rld->userc);
- ci->userc = GPOINTER_TO_INT(data);
- } else {
- ci->userc = -1;
- }
}
static void prplcb_roomlist_in_progress(PurpleRoomlist *list, gboolean in_progress)
@@ -1403,7 +1392,6 @@ static void prplcb_roomlist_in_progress(PurpleRoomlist *list, gboolean in_progre
static void prplcb_roomlist_destroy(PurpleRoomlist *list)
{
- /* bee_chat_list_finish() frees rld->chats */
g_free(list->ui_data);
list->ui_data = NULL;
}
diff --git a/root_commands.c b/root_commands.c
index 59974026..a62d6c19 100644
--- a/root_commands.c
+++ b/root_commands.c
@@ -1250,6 +1250,11 @@ static void cmd_chat(irc_t *irc, char **cmd)
}
if (cmd[3][0] == '!') {
+ if (!acc->prpl->chat_list) {
+ irc_rootmsg(irc, "Listing chatrooms not supported on that account.");
+ return;
+ }
+
i = g_ascii_strtoull(cmd[3] + 1, NULL, 10);
ci = g_slist_nth_data(acc->ic->chatlist, i - 1);
@@ -1301,7 +1306,7 @@ static void cmd_chat(irc_t *irc, char **cmd)
irc_rootmsg(irc, "Invalid account");
return;
} else if (!acc->prpl->chat_list) {
- irc_rootmsg(irc, "Existing chatrooms not supported on that account.");
+ irc_rootmsg(irc, "Listing chatrooms not supported on that account.");
return;
}
@@ -1338,7 +1343,6 @@ void cmd_chat_list_finish(struct im_connection *ic)
bee_chat_info_t *ci;
char *hformat, *iformat, *topic;
GSList *l;
- GString *userc;
guint i = 0;
irc_t *irc = ic->bee->ui_data;
@@ -1348,31 +1352,22 @@ void cmd_chat_list_finish(struct im_connection *ic)
}
if (strchr(irc->umode, 'b') != NULL) {
- hformat = "%s\t%s\t%s\t%s";
- iformat = "%u\t%s\t%s\t%s";
+ hformat = "%s\t%s\t%s";
+ iformat = "%u\t%s\t%s";
} else {
- hformat = "%s %-20s %s %s";
- iformat = "%5u %-20.20s %5s %s";
+ hformat = "%s %-20s %s";
+ iformat = "%5u %-20.20s %s";
}
- irc_rootmsg(irc, hformat, "Index", "Title", "Users", "Topic");
- userc = g_string_new(NULL);
+ irc_rootmsg(irc, hformat, "Index", "Title", "Topic");
for (l = ic->chatlist; l; l = l->next) {
ci = l->data;
topic = ci->topic ? ci->topic : "";
-
- if (ci->userc >= 0) {
- g_string_printf(userc, "%d", ci->userc);
- } else {
- g_string_assign(userc, "-");
- }
-
- irc_rootmsg(irc, iformat, ++i, ci->title, userc->str, topic);
+ irc_rootmsg(irc, iformat, ++i, ci->title, topic);
}
irc_rootmsg(irc, "%u %s chatrooms", i, acc->tag);
- g_string_free(userc, TRUE);
}
static void cmd_group(irc_t *irc, char **cmd)