summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Kramlich <grim@reaperworld.com>2008-10-30 03:03:45 +0000
committerGary Kramlich <grim@reaperworld.com>2008-10-30 03:03:45 +0000
commitb3093d2ef1c1b6c09c854e7b1ca3a22793dde30f (patch)
tree62167c060e4c5558bd74fa36cba7aaa7e0ac3c86
parent02dfe1a1aeb8a9e51127257ebce23bbb0651ea3c (diff)
parent3464839b880cfa847856306f0f82ebcc06218084 (diff)
downloadpidgin-b3093d2ef1c1b6c09c854e7b1ca3a22793dde30f.tar.gz
merge of '76e72697f7d6cc9d219da138eac6284c9925fe68'
and '95b50f8a21615f4691e0c8f66dc7d6ed932603ca'
-rw-r--r--libpurple/blist.c53
-rw-r--r--libpurple/blist.h4
-rw-r--r--libpurple/plugins/autoaccept.c6
-rw-r--r--libpurple/plugins/log_reader.c80
-rw-r--r--libpurple/plugins/signals-test.c81
-rw-r--r--libpurple/plugins/statenotify.c7
6 files changed, 173 insertions, 58 deletions
diff --git a/libpurple/blist.c b/libpurple/blist.c
index 3f9ae26bd4..d42cd8db13 100644
--- a/libpurple/blist.c
+++ b/libpurple/blist.c
@@ -42,6 +42,59 @@ static guint save_timer = 0;
static gboolean blist_loaded = FALSE;
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+#ifdef PURPLE_HIDE_STRUCTS
+struct _PurpleBlistNode {
+ PurpleBlistNodeType type;
+ PurpleBlistNode *prev;
+ PurpleBlistNode *next;
+ PurpleBlistNode *parent;
+ PurpleBlistNode *child;
+ GHashTable *settings;
+ void *ui_data;
+ PurpleBlistNodeFlags flags;
+};
+
+struct _PurpleBuddy {
+ PurpleBlistNode node;
+ char *name;
+ char *alias;
+ char *server_alias;
+ void *proto_data;
+ PurpleBuddyIcon *icon;
+ PurpleAccount *account;
+ PurplePresence *presence;
+};
+
+struct _PurpleContact {
+ PurpleBlistNode node;
+ char *alias;
+ int totalsize;
+ int currentsize;
+ int online;
+ PurpleBuddy *priority;
+ gboolean priority_valid;
+};
+
+struct _PurpleGroup {
+ PurpleBlistNode node;
+ char *name;
+ int totalsize;
+ int currentsize;
+ int online;
+};
+
+struct _PurpleChat {
+ PurpleBlistNode node;
+ char *alias;
+ GHashTable *components;
+ PurpleAccount *account;
+};
+
+#endif /* PURPLE_HIDE_STRUCTS */
+
/*********************************************************************
* Private utility functions *
*********************************************************************/
diff --git a/libpurple/blist.h b/libpurple/blist.h
index a10dcd58eb..9e7b56bf10 100644
--- a/libpurple/blist.h
+++ b/libpurple/blist.h
@@ -89,6 +89,8 @@ typedef enum
/* Data Structures */
/**************************************************************************/
+#ifndef PURPLE_HIDE_STRUCTS
+
/**
* A Buddy list node. This can represent a group, a buddy, or anything else.
* This is a base class for struct buddy and struct group and for anything
@@ -154,6 +156,8 @@ struct _PurpleChat {
PurpleAccount *account; /**< The account this chat is attached to */
};
+#endif /* PURPLE_HIDE_STRUCTS */
+
/**
* The Buddy List
diff --git a/libpurple/plugins/autoaccept.c b/libpurple/plugins/autoaccept.c
index b6bf451872..a27087f449 100644
--- a/libpurple/plugins/autoaccept.c
+++ b/libpurple/plugins/autoaccept.c
@@ -104,7 +104,7 @@ file_recv_request_cb(PurpleXfer *xfer, gpointer handle)
return;
}
- node = node->parent;
+ node = purple_blist_node_get_parent(node);
g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node));
pref = purple_prefs_get_string(PREF_PATH);
@@ -179,7 +179,7 @@ static void
save_cb(PurpleBlistNode *node, int choice)
{
if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- node = node->parent;
+ node = purple_blist_node_get_parent(node);
g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node));
purple_blist_node_set_int(node, "autoaccept", choice);
}
@@ -190,7 +190,7 @@ set_auto_accept_settings(PurpleBlistNode *node, gpointer plugin)
char *message;
if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- node = node->parent;
+ node = purple_blist_node_get_parent(node);
g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node));
message = g_strdup_printf(_("When a file-transfer request arrives from %s"),
diff --git a/libpurple/plugins/log_reader.c b/libpurple/plugins/log_reader.c
index 492b253707..82a138cc5d 100644
--- a/libpurple/plugins/log_reader.c
+++ b/libpurple/plugins/log_reader.c
@@ -661,8 +661,10 @@ static GList *msn_logger_list(PurpleLogType type, const char *sn, PurpleAccount
username = g_strdup(purple_normalize(account, account->username));
}
- if (buddy)
- savedfilename = purple_blist_node_get_string(&buddy->node, "log_reader_msn_log_filename");
+ if (buddy) {
+ PurpleBlistNode *node = (PurpleBlistNode *)buddy;
+ savedfilename = purple_blist_node_get_string(node, "log_reader_msn_log_filename");
+ }
if (savedfilename) {
/* As a special case, we allow the null string to kill the parsing
@@ -822,7 +824,8 @@ static GList *msn_logger_list(PurpleLogType type, const char *sn, PurpleAccount
* detected for both buddies.
*/
if (buddy && logfile) {
- purple_blist_node_set_string(&buddy->node, "log_reader_msn_log_filename", logfile);
+ PurpleBlistNode *node = (PurpleBlistNode *)buddy;
+ purple_blist_node_set_string(node, "log_reader_msn_log_filename", logfile);
g_free(logfile);
}
@@ -981,8 +984,8 @@ static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
gboolean from_name_matches;
gboolean to_name_matches;
- if (buddy && buddy->alias)
- their_name = buddy->alias;
+ if (buddy)
+ their_name = purple_buddy_get_alias(buddy);
if (log->account->alias)
{
@@ -1018,13 +1021,17 @@ static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
} else if (to_name_matches) {
name_guessed = NAME_GUESS_THEM;
} else {
- if (buddy && buddy->alias) {
- char *alias = g_strdup(buddy->alias);
+ if (buddy) {
+ const gchar *a = NULL, *server_alias = NULL;
+ gchar *alias = NULL, *temp = NULL;
+
+ a = purple_buddy_get_alias(buddy);
+ if(a)
+ alias = g_strdup(a);
/* "Truncate" the string at the first non-alphanumeric
* character. The idea is to relax the comparison.
*/
- char *temp;
for (temp = alias; *temp ; temp++) {
if (!isalnum(*temp)) {
*temp = '\0';
@@ -1056,9 +1063,9 @@ static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
}
} else if (to_name_matches) {
name_guessed = NAME_GUESS_ME;
- } else if (buddy->server_alias) {
+ } else if ((server_alias = purple_buddy_get_server_alias(buddy))) {
friendly_name_length =
- strlen(buddy->server_alias);
+ strlen(server_alias);
/* Try to guess which user is them.
* The first step is to determine if either of
@@ -1068,13 +1075,13 @@ static char * msn_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
*/
from_name_matches = (purple_str_has_prefix(
from_name,
- buddy->server_alias) &&
+ server_alias) &&
!isalnum(*(from_name +
friendly_name_length)));
to_name_matches = to_name && (
(purple_str_has_prefix(
- to_name, buddy->server_alias) &&
+ to_name, server_alias) &&
!isalnum(*(to_name +
friendly_name_length))));
@@ -1565,18 +1572,31 @@ static char * trillian_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
g_string_append(formatted, "</b>");
footer = NULL;
} else if (strstr(line, " signed off ")) {
- if (buddy != NULL && buddy->alias)
- g_string_append_printf(formatted,
- _("%s has signed off."), buddy->alias);
- else
+ if (buddy != NULL) {
+ const gchar *alias = purple_buddy_get_alias(buddy);
+
+ if(alias != NULL)
+ g_string_append_printf(formatted,
+ _("%s has signed off."), alias);
+ else
+ g_string_append_printf(formatted,
+ _("%s has signed off."), log->name);
+ } else {
g_string_append_printf(formatted,
_("%s has signed off."), log->name);
+ }
line = "";
} else if (strstr(line, " signed on ")) {
- if (buddy != NULL && buddy->alias)
- g_string_append(formatted, buddy->alias);
- else
+ if (buddy != NULL) {
+ const gchar *alias = purple_buddy_get_alias(buddy);
+
+ if(alias)
+ g_string_append(formatted, alias);
+ else
+ g_string_append(formatted, log->name);
+ } else {
g_string_append(formatted, log->name);
+ }
line = " logged in.";
} else if (purple_str_has_prefix(line,
"One or more messages may have been undeliverable.")) {
@@ -1631,11 +1651,15 @@ static char * trillian_logger_read (PurpleLog *log, PurpleLogReadFlags *flags)
footer = "</span></b>";
}
} else if (purple_str_has_prefix(line, data->their_nickname)) {
- if (buddy != NULL && buddy->alias) {
- line += strlen(data->their_nickname) + 2;
- g_string_append_printf(formatted,
- "<span style=\"color: #A82F2F;\">"
- "<b>%s</b></span>: ", buddy->alias);
+ if (buddy != NULL) {
+ const gchar *alias = purple_buddy_get_alias(buddy);
+
+ if(alias != NULL) {
+ line += strlen(data->their_nickname) + 2;
+ g_string_append_printf(formatted,
+ "<span style=\"color: #A82F2F;\">"
+ "<b>%s</b></span>: ", alias);
+ }
}
} else {
const char *line2 = strstr(line, ":");
@@ -2001,10 +2025,14 @@ static char *qip_logger_read(PurpleLog *log, PurpleLogReadFlags *flags)
g_string_append(formatted, "</font> ");
if (is_in_message) {
- if (buddy_name != NULL && buddy != NULL && buddy->alias) {
+ const gchar *alias = NULL;
+
+ if (buddy_name != NULL && buddy != NULL &&
+ (alias = purple_buddy_get_alias(buddy)))
+ {
g_string_append_printf(formatted,
"<span style=\"color: #A82F2F;\">"
- "<b>%s</b></span>: ", buddy->alias);
+ "<b>%s</b></span>: ", alias);
}
} else {
const char *acct_name;
diff --git a/libpurple/plugins/signals-test.c b/libpurple/plugins/signals-test.c
index 2a2033f4a4..220fb87b5f 100644
--- a/libpurple/plugins/signals-test.c
+++ b/libpurple/plugins/signals-test.c
@@ -116,8 +116,9 @@ buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status,
PurpleStatus *status, void *data)
{
purple_debug_misc("signals test", "buddy-status-changed (%s %s to %s)\n",
- buddy->name, purple_status_get_id(old_status),
- purple_status_get_id(status));
+ purple_buddy_get_name(buddy),
+ purple_status_get_id(old_status),
+ purple_status_get_id(status));
}
static void
@@ -125,25 +126,29 @@ buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle,
void *data)
{
purple_debug_misc("signals test", "buddy-idle-changed (%s %s)\n",
- buddy->name, old_idle ? "unidled" : "idled");
+ purple_buddy_get_name(buddy),
+ old_idle ? "unidled" : "idled");
}
static void
buddy_signed_on_cb(PurpleBuddy *buddy, void *data)
{
- purple_debug_misc("signals test", "buddy-signed-on (%s)\n", buddy->name);
+ purple_debug_misc("signals test", "buddy-signed-on (%s)\n",
+ purple_buddy_get_name(buddy));
}
static void
buddy_signed_off_cb(PurpleBuddy *buddy, void *data)
{
- purple_debug_misc("signals test", "buddy-signed-off (%s)\n", buddy->name);
+ purple_debug_misc("signals test", "buddy-signed-off (%s)\n",
+ purple_buddy_get_name(buddy));
}
static void
buddy_added_cb(PurpleBuddy *buddy, void *data)
{
- purple_debug_misc("signals test", "buddy_added_cb (%s)\n", purple_buddy_get_name(buddy));
+ purple_debug_misc("signals test", "buddy_added_cb (%s)\n",
+ purple_buddy_get_name(buddy));
}
static void
@@ -160,17 +165,27 @@ blist_node_aliased(PurpleBlistNode *node, const char *old_alias)
PurpleChat *c = (PurpleChat *)node;
PurpleGroup *g = (PurpleGroup *)node;
- if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- purple_debug_misc("signals test", "blist-node-aliased (Contact: %s, %s)\n", p->alias, old_alias);
- else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- purple_debug_misc("signals test", "blist-node-aliased (Buddy: %s, %s)\n", b->name, old_alias);
- else if (PURPLE_BLIST_NODE_IS_CHAT(node))
- purple_debug_misc("signals test", "blist-node-aliased (Chat: %s, %s)\n", c->alias, old_alias);
- else if (PURPLE_BLIST_NODE_IS_GROUP(node))
- purple_debug_misc("signals test", "blist-node-aliased (Group: %s, %s)\n", g->name, old_alias);
- else
- purple_debug_misc("signals test", "blist-node-aliased (UNKNOWN: %d, %s)\n", node->type, old_alias);
-
+ if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-aliased (Contact: %s, %s)\n",
+ purple_contact_get_alias(p), old_alias);
+ } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-aliased (Buddy: %s, %s)\n",
+ purple_buddy_get_name(b), old_alias);
+ } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-aliased (Chat: %s, %s)\n",
+ purple_chat_get_name(c), old_alias);
+ } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-aliased (Group: %s, %s)\n",
+ purple_group_get_name(g), old_alias);
+ } else {
+ purple_debug_misc("signals test",
+ "blist-node-aliased (UNKNOWN: %d, %s)\n",
+ purple_blist_node_get_type(node), old_alias);
+ }
}
static void
@@ -181,17 +196,27 @@ blist_node_extended_menu_cb(PurpleBlistNode *node, void *data)
PurpleChat *c = (PurpleChat *)node;
PurpleGroup *g = (PurpleGroup *)node;
- if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- purple_debug_misc("signals test", "blist-node-extended-menu (Contact: %s)\n", p->alias);
- else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- purple_debug_misc("signals test", "blist-node-extended-menu (Buddy: %s)\n", b->name);
- else if (PURPLE_BLIST_NODE_IS_CHAT(node))
- purple_debug_misc("signals test", "blist-node-extended-menu (Chat: %s)\n", c->alias);
- else if (PURPLE_BLIST_NODE_IS_GROUP(node))
- purple_debug_misc("signals test", "blist-node-extended-menu (Group: %s)\n", g->name);
- else
- purple_debug_misc("signals test", "blist-node-extended-menu (UNKNOWN: %d)\n", node->type);
-
+ if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-extended-menu (Contact: %s)\n",
+ purple_contact_get_alias(p));
+ } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-extended-menu (Buddy: %s)\n",
+ purple_buddy_get_name(b));
+ } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-extended-menu (Chat: %s)\n",
+ purple_chat_get_name(c));
+ } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
+ purple_debug_misc("signals test",
+ "blist-node-extended-menu (Group: %s)\n",
+ purple_group_get_name(g));
+ } else {
+ purple_debug_misc("signals test",
+ "blist-node-extended-menu (UNKNOWN: %d)\n",
+ purple_blist_node_get_type(node));
+ }
}
diff --git a/libpurple/plugins/statenotify.c b/libpurple/plugins/statenotify.c
index a8f3b4439b..e9f25d5653 100644
--- a/libpurple/plugins/statenotify.c
+++ b/libpurple/plugins/statenotify.c
@@ -15,13 +15,18 @@
static void
write_status(PurpleBuddy *buddy, const char *message)
{
+ PurpleAccount *account = NULL;
PurpleConversation *conv;
const char *who;
char buf[256];
char *escaped;
+ const gchar *buddy_name = NULL;
+
+ account = purple_buddy_get_account(buddy);
+ buddy_name = purple_buddy_get_name(buddy);
conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
- buddy->name, buddy->account);
+ buddy_name, account);
if (conv == NULL)
return;