# HG changeset patch
# User andrew.victor@mxit.com
# Date 1315247672 0
# Node ID e21500d6134785876afb984ef54e4031c6e1a605
# Parent 5d81b452dcc42c2fbd984ce5defa0360ca8a0910# Parent 36608dc2a3ad293f89a67a595a2df811cf4224e6
merge of '2825cfec5e2f9ce0b43361fdd7bdd21c4ea69b24'
and '4a5d49d94ae44a21c23f7977dd7b6b9f69dfb000'
diff -r 5d81b452dcc4 -r e21500d61347 ChangeLog
--- a/ChangeLog Sat Sep 03 15:11:20 2011 +0000
+++ b/ChangeLog Mon Sep 05 18:34:32 2011 +0000
@@ -14,6 +14,11 @@
* The buddy's name was not centered vertically in the buddy-list if they
did not have a status-message or mood set.
+ XMPP:
+ * Strip element prefixes from XHTML-IM messages as they're presented
+ to the core (and UIs) as incoming messages (Thijs Alkemade).
+ (#14529)
+
version 2.10.0 (08/18/2011):
Pidgin:
* Make the max size of incoming smileys a pref instead of hardcoding it.
diff -r 5d81b452dcc4 -r e21500d61347 ChangeLog.API
--- a/ChangeLog.API Sat Sep 03 15:11:20 2011 +0000
+++ b/ChangeLog.API Mon Sep 05 18:34:32 2011 +0000
@@ -46,7 +46,9 @@
* purple_xfer_set_protocol_data
* purple_xfer_set_status
* purple_xfer_set_ui_data
- * purple_xfer_set_watcher
+ * purple_xfer_set_watcher
+ * xmlnode_get_default_namespace
+ * xmlnode_strip_prefixes
Changed:
* purple_connection_error now takes a PurpleConnectionError
@@ -64,6 +66,10 @@
* purple_dnsquery_a now takes a PurpleAccount as the first parameter
* purple_srv_resolve now takes a PurpleAccount as the first parameter
* purple_txt_resolve now takes a PurpleAccount as the first parameter
+ * purple_account_add_buddy now takes an invite message as the last
+ parameter
+ * purple_account_add_buddies now takes an invite message as the last
+ parameter
Removed:
* _GntFileType
@@ -99,6 +105,8 @@
* pidgin_set_custom_buddy_icon
* pidgin_setup_screenname_autocomplete
* PidginConversation.sg
+ * purple_account_add_buddies_with_invite
+ * purple_account_add_buddy_with_invite
* purple_buddy_icons_has_custom_icon
* purple_buddy_icons_find_custom_icon
* purple_buddy_icons_set_custom_icon
@@ -134,6 +142,8 @@
* purple_util_fetch_url_request_len_with_account. Use
purple_util_fetch_url_request_len, instead.
* PurpleConnectionUiOps.report_disconnect_reason
+ * PurplePluginProtocolInfo.add_buddy_with_invite
+ * PurplePluginProtocolInfo.add_buddies_with_invite
* serv_got_attention
* serv_send_attention
* struct _GtkIMHtmlFontDetail
diff -r 5d81b452dcc4 -r e21500d61347 configure.ac
--- a/configure.ac Sat Sep 03 15:11:20 2011 +0000
+++ b/configure.ac Mon Sep 05 18:34:32 2011 +0000
@@ -1070,7 +1070,7 @@
fi
if test "x$STATIC_PRPLS" = "xall" ; then
- STATIC_PRPLS="bonjour gg irc jabber msn myspace mxit novell oscar sametime silc simple yahoo zephyr"
+ STATIC_PRPLS="bonjour gg irc jabber msn mxit myspace novell oscar sametime silc simple yahoo zephyr"
fi
if test "x$have_meanwhile" != "xyes" ; then
STATIC_PRPLS=`echo $STATIC_PRPLS | $sedpath 's/sametime//'`
@@ -1115,8 +1115,8 @@
irc) static_irc=yes ;;
jabber) static_jabber=yes ;;
msn) static_msn=yes ;;
+ mxit) static_mxit=yes ;;
myspace) static_myspace=yes ;;
- mxit) static_mxit=yes ;;
novell) static_novell=yes ;;
oscar) static_oscar=yes ;;
aim) static_oscar=yes ;;
@@ -1134,8 +1134,8 @@
AM_CONDITIONAL(STATIC_IRC, test "x$static_irc" = "xyes")
AM_CONDITIONAL(STATIC_JABBER, test "x$static_jabber" = "xyes")
AM_CONDITIONAL(STATIC_MSN, test "x$static_msn" = "xyes")
+AM_CONDITIONAL(STATIC_MXIT, test "x$static_mxit" = "xyes")
AM_CONDITIONAL(STATIC_MYSPACE, test "x$static_myspace" = "xyes")
-AM_CONDITIONAL(STATIC_MXIT, test "x$static_mxit" = "xyes")
AM_CONDITIONAL(STATIC_NOVELL, test "x$static_novell" = "xyes")
AM_CONDITIONAL(STATIC_OSCAR, test "x$static_oscar" = "xyes")
AM_CONDITIONAL(STATIC_SAMETIME, test "x$static_sametime" = "xyes" -a "x$have_meanwhile" = "xyes")
@@ -1149,7 +1149,7 @@
AC_ARG_WITH(dynamic_prpls, [AC_HELP_STRING([--with-dynamic-prpls], [specify which protocols to build dynamically])], [DYNAMIC_PRPLS=`echo $withval | $sedpath 's/,/ /g'`])
if test "x$DYNAMIC_PRPLS" = "xall" ; then
- DYNAMIC_PRPLS="bonjour gg irc jabber msn myspace mxit novell oscar sametime silc simple yahoo zephyr"
+ DYNAMIC_PRPLS="bonjour gg irc jabber msn mxit myspace novell oscar sametime silc simple yahoo zephyr"
fi
if test "x$have_meanwhile" != "xyes"; then
DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/sametime//'`
@@ -1168,8 +1168,8 @@
irc) dynamic_irc=yes ;;
jabber) dynamic_jabber=yes ;;
msn) dynamic_msn=yes ;;
+ mxit) dynamic_mxit=yes ;;
myspace) dynamic_myspace=yes ;;
- mxit) dynamic_mxit=yes ;;
novell) dynamic_novell=yes ;;
null) dynamic_null=yes ;;
oscar) dynamic_oscar=yes ;;
diff -r 5d81b452dcc4 -r e21500d61347 finch/gntblist.c
--- a/finch/gntblist.c Sat Sep 03 15:11:20 2011 +0000
+++ b/finch/gntblist.c Mon Sep 05 18:34:32 2011 +0000
@@ -663,7 +663,7 @@
purple_blist_add_buddy(buddy, NULL, grp, NULL);
}
- purple_account_add_buddy_with_invite(account, buddy, invite);
+ purple_account_add_buddy(account, buddy, invite);
}
static void
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/account.c
--- a/libpurple/account.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/account.c Mon Sep 05 18:34:32 2011 +0000
@@ -2518,7 +2518,7 @@
}
void
-purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy)
+purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy, const char *message)
{
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc;
@@ -2535,40 +2535,13 @@
prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
if (prpl_info != NULL) {
- if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy_with_invite))
- prpl_info->add_buddy_with_invite(gc, buddy, purple_buddy_get_group(buddy), NULL);
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy))
- prpl_info->add_buddy(gc, buddy, purple_buddy_get_group(buddy));
+ if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy))
+ prpl_info->add_buddy(gc, buddy, purple_buddy_get_group(buddy), message);
}
}
void
-purple_account_add_buddy_with_invite(PurpleAccount *account, PurpleBuddy *buddy, const char *message)
-{
- PurplePluginProtocolInfo *prpl_info = NULL;
- PurpleConnection *gc;
- PurplePlugin *prpl = NULL;
-
- g_return_if_fail(account != NULL);
- g_return_if_fail(buddy != NULL);
-
- gc = purple_account_get_connection(account);
- if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
-
- if (prpl != NULL)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
- if (prpl_info != NULL) {
- if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy_with_invite))
- prpl_info->add_buddy_with_invite(gc, buddy, purple_buddy_get_group(buddy), message);
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy))
- prpl_info->add_buddy(gc, buddy, purple_buddy_get_group(buddy));
- }
-}
-
-void
-purple_account_add_buddies(PurpleAccount *account, GList *buddies)
+purple_account_add_buddies(PurpleAccount *account, GList *buddies, const char *message)
{
PurplePluginProtocolInfo *prpl_info = NULL;
PurpleConnection *gc = purple_account_get_connection(account);
@@ -2589,73 +2562,13 @@
groups = g_list_append(groups, purple_buddy_get_group(buddy));
}
- if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddies_with_invite))
- prpl_info->add_buddies_with_invite(gc, buddies, groups, NULL);
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddies))
- prpl_info->add_buddies(gc, buddies, groups);
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy_with_invite)) {
- GList *curb = buddies, *curg = groups;
-
- while ((curb != NULL) && (curg != NULL)) {
- prpl_info->add_buddy_with_invite(gc, curb->data, curg->data, NULL);
- curb = curb->next;
- curg = curg->next;
- }
- }
+ if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddies))
+ prpl_info->add_buddies(gc, buddies, groups, message);
else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy)) {
GList *curb = buddies, *curg = groups;
while ((curb != NULL) && (curg != NULL)) {
- prpl_info->add_buddy(gc, curb->data, curg->data);
- curb = curb->next;
- curg = curg->next;
- }
- }
-
- g_list_free(groups);
- }
-}
-
-void
-purple_account_add_buddies_with_invite(PurpleAccount *account, GList *buddies, const char *message)
-{
- PurplePluginProtocolInfo *prpl_info = NULL;
- PurpleConnection *gc = purple_account_get_connection(account);
- PurplePlugin *prpl = NULL;
-
- if (gc != NULL)
- prpl = purple_connection_get_prpl(gc);
-
- if (prpl != NULL)
- prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
- if (prpl_info) {
- GList *cur, *groups = NULL;
-
- /* Make a list of what group each buddy is in */
- for (cur = buddies; cur != NULL; cur = cur->next) {
- PurpleBuddy *buddy = cur->data;
- groups = g_list_append(groups, purple_buddy_get_group(buddy));
- }
-
- if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddies_with_invite))
- prpl_info->add_buddies_with_invite(gc, buddies, groups, message);
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy_with_invite)) {
- GList *curb = buddies, *curg = groups;
-
- while ((curb != NULL) && (curg != NULL)) {
- prpl_info->add_buddy_with_invite(gc, curb->data, curg->data, message);
- curb = curb->next;
- curg = curg->next;
- }
- }
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddies))
- prpl_info->add_buddies(gc, buddies, groups);
- else if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, add_buddy)) {
- GList *curb = buddies, *curg = groups;
-
- while ((curb != NULL) && (curg != NULL)) {
- prpl_info->add_buddy(gc, curb->data, curg->data);
+ prpl_info->add_buddy(gc, curb->data, curg->data, message);
curb = curb->next;
curg = curg->next;
}
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/account.h
--- a/libpurple/account.h Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/account.h Mon Sep 05 18:34:32 2011 +0000
@@ -958,40 +958,18 @@
*
* @param account The account.
* @param buddy The buddy to add.
- *
- * @deprecated Use purple_account_add_buddy_with_invite and \c NULL message.
+ * @param message The invite message. This may be ignored by a prpl.
*/
-void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy);
-/**
- * Adds a buddy to the server-side buddy list for the specified account.
- *
- * @param account The account.
- * @param buddy The buddy to add.
- * @param message The invite message. This may be ignored by a prpl.
- *
- * @since 2.8.0
- */
-void purple_account_add_buddy_with_invite(PurpleAccount *account, PurpleBuddy *buddy, const char *message);
+void purple_account_add_buddy(PurpleAccount *account, PurpleBuddy *buddy, const char *message);
/**
* Adds a list of buddies to the server-side buddy list.
*
* @param account The account.
* @param buddies The list of PurpleBlistNodes representing the buddies to add.
- *
- * @deprecated Use purple_account_add_buddies_with_invite and \c NULL message.
+ * @param message The invite message. This may be ignored by a prpl.
*/
-void purple_account_add_buddies(PurpleAccount *account, GList *buddies);
-/**
- * Adds a list of buddies to the server-side buddy list.
- *
- * @param account The account.
- * @param buddies The list of PurpleBlistNodes representing the buddies to add.
- * @param message The invite message. This may be ignored by a prpl.
- *
- * @since 2.8.0
- */
-void purple_account_add_buddies_with_invite(PurpleAccount *account, GList *buddies, const char *message);
+void purple_account_add_buddies(PurpleAccount *account, GList *buddies, const char *message);
/**
* Removes a buddy from the server-side buddy list.
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/blist.c
--- a/libpurple/blist.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/blist.c Mon Sep 05 18:34:32 2011 +0000
@@ -1313,7 +1313,7 @@
purple_account_remove_buddies(account, buddies, groups);
g_list_free(groups);
- purple_account_add_buddies(account, buddies);
+ purple_account_add_buddies(account, buddies, NULL);
}
g_list_free(buddies);
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/plugins/perl/common/Account.xs
--- a/libpurple/plugins/perl/common/Account.xs Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/plugins/perl/common/Account.xs Mon Sep 05 18:34:32 2011 +0000
@@ -199,9 +199,10 @@
Purple::Account account
void
-purple_account_add_buddies(account, list)
+purple_account_add_buddies(account, list, message)
Purple::Account account
SV * list
+ const char *message
PREINIT:
GList *t_GL;
int i, t_len;
@@ -212,13 +213,14 @@
for (i = 0; i <= t_len; i++)
t_GL = g_list_append(t_GL, SvPVutf8_nolen(*av_fetch((AV *)SvRV(list), i, 0)));
- purple_account_add_buddies(account, t_GL);
+ purple_account_add_buddies(account, t_GL, message);
g_list_free(t_GL);
void
-purple_account_add_buddy(account, buddy)
- Purple::Account account
- Purple::BuddyList::Buddy buddy
+purple_account_add_buddy(account, buddy, message)
+ Purple::Account account
+ Purple::BuddyList::Buddy buddy
+ const char * message
void
purple_account_change_password(account, a, b)
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/Makefile.am
--- a/libpurple/protocols/Makefile.am Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/Makefile.am Mon Sep 05 18:34:32 2011 +0000
@@ -1,5 +1,5 @@
EXTRA_DIST = Makefile.mingw
-DIST_SUBDIRS = bonjour gg irc jabber msn myspace mxit novell null oscar sametime silc simple yahoo zephyr
+DIST_SUBDIRS = bonjour gg irc jabber msn mxit myspace novell null oscar sametime silc simple yahoo zephyr
SUBDIRS = $(DYNAMIC_PRPLS) $(STATIC_PRPLS)
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/bonjour/bonjour.c
--- a/libpurple/protocols/bonjour/bonjour.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/bonjour/bonjour.c Mon Sep 05 18:34:32 2011 +0000
@@ -256,7 +256,7 @@
* if there is no add_buddy callback.
*/
static void
-bonjour_fake_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) {
+bonjour_fake_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char *message) {
purple_debug_error("bonjour", "Buddy '%s' manually added; removing. "
"Bonjour buddies must be discovered and not manually added.\n",
purple_buddy_get_name(buddy));
@@ -484,6 +484,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_NO_PASSWORD,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -549,15 +550,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/gg/gg.c
--- a/libpurple/protocols/gg/gg.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/gg/gg.c Mon Sep 05 18:34:32 2011 +0000
@@ -2467,7 +2467,7 @@
}
-static void ggp_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
+static void ggp_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
{
PurpleAccount *account;
GGPInfo *info = purple_connection_get_protocol_data(gc);
@@ -2655,6 +2655,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_REGISTER_NOSCREENNAME | OPT_PROTO_IM_IMAGE,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -2720,15 +2721,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* can_do_media */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info = {
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/irc/irc.c
--- a/libpurple/protocols/irc/irc.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/irc/irc.c Mon Sep 05 18:34:32 2011 +0000
@@ -607,7 +607,7 @@
}
}
-static void irc_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
+static void irc_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
{
struct irc_conn *irc = purple_connection_get_protocol_data(gc);
struct irc_buddy *ib;
@@ -917,6 +917,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_CHAT_TOPIC | OPT_PROTO_PASSWORD_OPTIONAL |
OPT_PROTO_SLASH_COMMANDS_NATIVE,
NULL, /* user_splits */
@@ -983,15 +984,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static gboolean load_plugin (PurplePlugin *plugin) {
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/jabber/libxmpp.c
--- a/libpurple/protocols/jabber/libxmpp.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c Mon Sep 05 18:34:32 2011 +0000
@@ -53,6 +53,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_MAIL_CHECK |
#ifdef HAVE_CYRUS_SASL
OPT_PROTO_PASSWORD_OPTIONAL |
@@ -122,16 +123,12 @@
jabber_unregister_account, /* unregister_user */
jabber_send_attention, /* send_attention */
jabber_attention_types, /* attention_types */
-
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
jabber_initiate_media, /* initiate_media */
jabber_get_media_caps, /* get_media_caps */
jabber_get_moods, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static gboolean load_plugin(PurplePlugin *plugin)
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/jabber/message.c
--- a/libpurple/protocols/jabber/message.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/jabber/message.c Mon Sep 05 18:34:32 2011 +0000
@@ -638,6 +638,8 @@
jabber_message_add_remote_smileys(js, to, packet);
}
+ xmlnode_strip_prefixes(child);
+
/* reformat xhtml so that img tags with a "cid:" src gets
translated to the bare text of the emoticon (the "alt" attrib) */
/* this is done also when custom smiley retrieval is turned off,
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/jabber/roster.c
--- a/libpurple/protocols/jabber/roster.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/jabber/roster.c Mon Sep 05 18:34:32 2011 +0000
@@ -358,7 +358,7 @@
}
void jabber_roster_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
- PurpleGroup *group)
+ PurpleGroup *group, const char *message)
{
JabberStream *js = purple_connection_get_protocol_data(gc);
char *who;
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/jabber/roster.h
--- a/libpurple/protocols/jabber/roster.h Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/jabber/roster.h Mon Sep 05 18:34:32 2011 +0000
@@ -32,7 +32,7 @@
JabberIqType type, const char *id, xmlnode *query);
void jabber_roster_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
- PurpleGroup *group);
+ PurpleGroup *group, const char *message);
void jabber_roster_alias_change(PurpleConnection *gc, const char *name,
const char *alias);
void jabber_roster_group_change(PurpleConnection *gc, const char *name,
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/msn/msn.c
--- a/libpurple/protocols/msn/msn.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/msn/msn.c Mon Sep 05 18:34:32 2011 +0000
@@ -2930,6 +2930,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_MAIL_CHECK|OPT_PROTO_INVITE_MESSAGE,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -2951,7 +2952,7 @@
msn_set_status, /* set_away */
msn_set_idle, /* set_idle */
NULL, /* change_passwd */
- NULL, /* add_buddy */
+ msn_add_buddy, /* add_buddy */
NULL, /* add_buddies */
msn_rem_buddy, /* remove_buddy */
NULL, /* remove_buddies */
@@ -2995,15 +2996,12 @@
NULL, /* unregister_user */
msn_send_attention, /* send_attention */
msn_attention_types, /* attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
msn_get_account_text_table, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
msn_set_public_alias, /* set_public_alias */
- msn_get_public_alias, /* get_public_alias */
- msn_add_buddy, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ msn_get_public_alias /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/mxit/mxit.c
--- a/libpurple/protocols/mxit/mxit.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/mxit/mxit.c Mon Sep 05 18:34:32 2011 +0000
@@ -668,6 +668,7 @@
/*========================================================================================================================*/
static PurplePluginProtocolInfo proto_info = {
+ sizeof( PurplePluginProtocolInfo ), /* struct_size */
OPT_PROTO_REGISTER_NOSCREENNAME | OPT_PROTO_UNIQUE_CHATNAME | OPT_PROTO_IM_IMAGE | OPT_PROTO_INVITE_MESSAGE, /* options */
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -696,7 +697,7 @@
mxit_set_status, /* set_status */
NULL, /* set_idle */
NULL, /* change_passwd */
- NULL, /* add_buddy [roster.c] */
+ mxit_add_buddy, /* add_buddy [roster.c] */
NULL, /* add_buddies */
mxit_remove_buddy, /* remove_buddy [roster.c] */
NULL, /* remove_buddies */
@@ -740,15 +741,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* attention_types */
- sizeof( PurplePluginProtocolInfo ), /* struct_size */
mxit_get_text_table, /* get_account_text_table */
mxit_media_initiate, /* initiate_media */
mxit_media_caps, /* get_media_caps */
mxit_get_moods, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- mxit_add_buddy, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/myspace/myspace.c
--- a/libpurple/protocols/myspace/myspace.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/myspace/myspace.c Mon Sep 05 18:34:32 2011 +0000
@@ -2627,7 +2627,7 @@
* Add a buddy to user's buddy list.
*/
static void
-msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
+msim_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
{
MsimSession *session;
MsimMessage *msg;
@@ -3007,6 +3007,7 @@
* Callbacks called by Purple, to access this plugin.
*/
static PurplePluginProtocolInfo prpl_info = {
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
/* options */
OPT_PROTO_USE_POINTSIZE /* specify font size in sane point size */
| OPT_PROTO_MAIL_CHECK,
@@ -3076,15 +3077,12 @@
NULL, /* unregister_user */
msim_send_attention, /* send_attention */
msim_attention_types, /* attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
msim_get_account_text_table, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
/**
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/novell/novell.c
--- a/libpurple/protocols/novell/novell.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/novell/novell.c Mon Sep 05 18:34:32 2011 +0000
@@ -2545,7 +2545,7 @@
}
static void
-novell_add_buddy(PurpleConnection * gc, PurpleBuddy *buddy, PurpleGroup * group)
+novell_add_buddy(PurpleConnection * gc, PurpleBuddy *buddy, PurpleGroup * group, const char *message)
{
NMFolder *folder = NULL;
NMContact *contact;
@@ -3474,6 +3474,7 @@
}
static PurplePluginProtocolInfo prpl_info = {
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
0,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -3539,15 +3540,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info = {
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/null/nullprpl.c
--- a/libpurple/protocols/null/nullprpl.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/null/nullprpl.c Mon Sep 05 18:34:32 2011 +0000
@@ -548,7 +548,7 @@
}
static void nullprpl_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
- PurpleGroup *group)
+ PurpleGroup *group, const char *message)
{
const char *username = gc->account->username;
PurpleConnection *buddy_gc = get_nullprpl_gc(buddy->name);
@@ -571,20 +571,20 @@
username,
NULL, /* local account id (rarely used) */
NULL, /* alias */
- NULL); /* message */
+ message); /* message */
}
}
}
static void nullprpl_add_buddies(PurpleConnection *gc, GList *buddies,
- GList *groups) {
+ GList *groups, const char *message) {
GList *buddy = buddies;
GList *group = groups;
purple_debug_info("nullprpl", "adding multiple buddies\n");
while (buddy && group) {
- nullprpl_add_buddy(gc, (PurpleBuddy *)buddy->data, (PurpleGroup *)group->data);
+ nullprpl_add_buddy(gc, (PurpleBuddy *)buddy->data, (PurpleGroup *)group->data, message);
buddy = g_list_next(buddy);
group = g_list_next(group);
}
@@ -1052,6 +1052,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_NO_PASSWORD | OPT_PROTO_CHAT_TOPIC, /* options */
NULL, /* user_splits, initialized in nullprpl_init() */
NULL, /* protocol_options, initialized in nullprpl_init() */
@@ -1125,15 +1126,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static void nullprpl_init(PurplePlugin *plugin)
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/oscar/libaim.c
--- a/libpurple/protocols/oscar/libaim.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/oscar/libaim.c Mon Sep 05 18:34:32 2011 +0000
@@ -29,6 +29,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE | OPT_PROTO_INVITE_MESSAGE,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -50,7 +51,7 @@
oscar_set_status, /* set_status */
oscar_set_idle, /* set_idle */
oscar_change_passwd, /* change_passwd */
- NULL, /* add_buddy */
+ oscar_add_buddy, /* add_buddy */
NULL, /* add_buddies */
oscar_remove_buddy, /* remove_buddy */
NULL, /* remove_buddies */
@@ -94,15 +95,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- oscar_add_buddy, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/oscar/libicq.c
--- a/libpurple/protocols/oscar/libicq.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/oscar/libicq.c Mon Sep 05 18:34:32 2011 +0000
@@ -38,6 +38,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE | OPT_PROTO_INVITE_MESSAGE,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -59,7 +60,7 @@
oscar_set_status, /* set_status */
oscar_set_idle, /* set_idle */
oscar_change_passwd, /* change_passwd */
- NULL, /* add_buddy */
+ oscar_add_buddy, /* add_buddy */
NULL, /* add_buddies */
oscar_remove_buddy, /* remove_buddy */
NULL, /* remove_buddies */
@@ -103,16 +104,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
-
- sizeof(PurplePluginProtocolInfo), /* struct_size */
icq_get_account_text_table, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* can_do_media */
oscar_get_purple_moods, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- oscar_add_buddy, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/oscar/oscar.c
--- a/libpurple/protocols/oscar/oscar.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/oscar/oscar.c Mon Sep 05 18:34:32 2011 +0000
@@ -3806,7 +3806,7 @@
}
purple_account_remove_buddies(account, moved_buddies, groups);
- purple_account_add_buddies(account, moved_buddies);
+ purple_account_add_buddies(account, moved_buddies, NULL);
g_list_free(groups);
purple_debug_info("oscar",
"ssi: moved all buddies from group %s to %s\n", old_name, gname);
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/sametime/sametime.c
--- a/libpurple/protocols/sametime/sametime.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/sametime/sametime.c Mon Sep 05 18:34:32 2011 +0000
@@ -1398,7 +1398,7 @@
}
if(add_buds) {
- purple_account_add_buddies(acct, add_buds);
+ purple_account_add_buddies(acct, add_buds, NULL);
g_list_free(add_buds);
}
}
@@ -4513,7 +4513,8 @@
static void mw_prpl_add_buddy(PurpleConnection *gc,
PurpleBuddy *buddy,
- PurpleGroup *group) {
+ PurpleGroup *group,
+ const char *message) {
struct mwPurplePluginData *pd = purple_connection_get_protocol_data(gc);
struct mwServiceResolve *srvc;
@@ -4560,7 +4561,8 @@
static void mw_prpl_add_buddies(PurpleConnection *gc,
GList *buddies,
- GList *groups) {
+ GList *groups,
+ const char *message) {
struct mwPurplePluginData *pd;
GHashTable *group_sets;
@@ -5152,6 +5154,7 @@
static PurplePluginProtocolInfo mw_prpl_info = {
+ .struct_size = sizeof(PurplePluginProtocolInfo),
.options = OPT_PROTO_IM_IMAGE,
.user_splits = NULL, /*< set in mw_plugin_init */
.protocol_options = NULL, /*< set in mw_plugin_init */
@@ -5211,8 +5214,7 @@
.new_xfer = mw_prpl_new_xfer,
.offline_message = NULL,
.whiteboard_prpl_ops = NULL,
- .send_raw = NULL,
- .struct_size = sizeof(PurplePluginProtocolInfo)
+ .send_raw = NULL
};
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/silc/buddy.c
--- a/libpurple/protocols/silc/buddy.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/silc/buddy.c Mon Sep 05 18:34:32 2011 +0000
@@ -1396,7 +1396,7 @@
silc_buffer_free(attrs);
}
-void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
+void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
{
/* Don't add if the buddy is already on the list.
*
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/silc/silc.c
--- a/libpurple/protocols/silc/silc.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/silc/silc.c Mon Sep 05 18:34:32 2011 +0000
@@ -2050,6 +2050,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME |
OPT_PROTO_PASSWORD_OPTIONAL | OPT_PROTO_IM_IMAGE |
OPT_PROTO_SLASH_COMMANDS_NATIVE,
@@ -2117,15 +2118,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/silc/silcpurple.h
--- a/libpurple/protocols/silc/silcpurple.h Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/silc/silcpurple.h Mon Sep 05 18:34:32 2011 +0000
@@ -105,7 +105,7 @@
SilcVerifyPublicKey completion,
void *context);
GList *silcpurple_buddy_menu(PurpleBuddy *buddy);
-void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
+void silcpurple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message);
void silcpurple_send_buddylist(PurpleConnection *gc);
void silcpurple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
void silcpurple_buddy_keyagr_request(SilcClient client,
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/simple/simple.c
--- a/libpurple/protocols/simple/simple.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/simple/simple.c Mon Sep 05 18:34:32 2011 +0000
@@ -193,7 +193,7 @@
}
}
-static void simple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
+static void simple_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group, const char *message)
{
struct simple_account_data *sip = purple_connection_get_protocol_data(gc);
struct simple_buddy *b;
@@ -223,7 +223,7 @@
buddies = purple_find_buddies(account, NULL);
while (buddies) {
PurpleBuddy *buddy = buddies->data;
- simple_add_buddy(gc, buddy, purple_buddy_get_group(buddy));
+ simple_add_buddy(gc, buddy, purple_buddy_get_group(buddy), NULL);
buddies = g_slist_delete_link(buddies, buddies);
}
@@ -2046,6 +2046,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
0,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -2111,15 +2112,12 @@
NULL, /* unregister_user */
NULL, /* send_attention */
NULL, /* get_attention_types */
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/yahoo/libyahoo.c
--- a/libpurple/protocols/yahoo/libyahoo.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/yahoo/libyahoo.c Mon Sep 05 18:34:32 2011 +0000
@@ -194,6 +194,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_MAIL_CHECK | OPT_PROTO_CHAT_TOPIC,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -257,19 +258,14 @@
NULL, /* send_raw */
NULL, /* roomlist_room_serialize */
NULL, /* unregister_user */
-
yahoo_send_attention,
yahoo_attention_types,
-
- sizeof(PurplePluginProtocolInfo), /* struct_size */
yahoo_get_account_text_table, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/yahoo/libyahoojp.c
--- a/libpurple/protocols/yahoo/libyahoojp.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/yahoo/libyahoojp.c Mon Sep 05 18:34:32 2011 +0000
@@ -90,6 +90,7 @@
static PurplePluginProtocolInfo prpl_info =
{
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_MAIL_CHECK | OPT_PROTO_CHAT_TOPIC,
NULL, /* user_splits */
NULL, /* protocol_options */
@@ -157,15 +158,12 @@
yahoo_send_attention,
yahoo_attention_types,
- sizeof(PurplePluginProtocolInfo), /* struct_size */
yahoojp_get_account_text_table, /* get_account_text_table */
NULL, /* initiate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info =
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/yahoo/libymsg.c
--- a/libpurple/protocols/yahoo/libymsg.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/yahoo/libymsg.c Mon Sep 05 18:34:32 2011 +0000
@@ -4056,7 +4056,7 @@
buddy = (PurpleBuddy *) node;
gc = purple_account_get_connection(purple_buddy_get_account(buddy));
- yahoo_add_buddy(gc, buddy, NULL);
+ yahoo_add_buddy(gc, buddy, NULL, NULL);
}
@@ -4945,7 +4945,7 @@
}
-void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g)
+void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g, const char *message)
{
YahooData *yd = purple_connection_get_protocol_data(gc);
struct yahoo_packet *pkt;
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/yahoo/libymsg.h
--- a/libpurple/protocols/yahoo/libymsg.h Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/yahoo/libymsg.h Mon Sep 05 18:34:32 2011 +0000
@@ -371,7 +371,7 @@
unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state);
void yahoo_set_status(PurpleAccount *account, PurpleStatus *status);
void yahoo_set_idle(PurpleConnection *gc, int idle);
-void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g);
+void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g, const char *message);
void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
void yahoo_add_deny(PurpleConnection *gc, const char *who);
void yahoo_rem_deny(PurpleConnection *gc, const char *who);
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/protocols/zephyr/zephyr.c
--- a/libpurple/protocols/zephyr/zephyr.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/protocols/zephyr/zephyr.c Mon Sep 05 18:34:32 2011 +0000
@@ -2853,6 +2853,7 @@
static PurplePlugin *my_protocol = NULL;
static PurplePluginProtocolInfo prpl_info = {
+ sizeof(PurplePluginProtocolInfo), /* struct_size */
OPT_PROTO_CHAT_TOPIC | OPT_PROTO_NO_PASSWORD,
NULL, /* ??? user_splits */
NULL, /* ??? protocol_options */
@@ -2919,15 +2920,12 @@
NULL,
NULL,
NULL,
- sizeof(PurplePluginProtocolInfo), /* struct_size */
NULL, /* get_account_text_table */
NULL, /* initate_media */
NULL, /* get_media_caps */
NULL, /* get_moods */
NULL, /* set_public_alias */
- NULL, /* get_public_alias */
- NULL, /* add_buddy_with_invite */
- NULL /* add_buddies_with_invite */
+ NULL /* get_public_alias */
};
static PurplePluginInfo info = {
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/prpl.h
--- a/libpurple/prpl.h Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/prpl.h Mon Sep 05 18:34:32 2011 +0000
@@ -205,6 +205,27 @@
*/
struct _PurplePluginProtocolInfo
{
+ /**
+ * The size of the PurplePluginProtocolInfo. This should always be sizeof(PurplePluginProtocolInfo).
+ * This allows adding more functions to this struct without requiring a major version bump.
+ */
+ unsigned long struct_size;
+
+ /* NOTE:
+ * If more functions are added, they should accessed using the following syntax:
+ *
+ * if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, new_function))
+ * prpl->new_function(...);
+ *
+ * instead of
+ *
+ * if (prpl->new_function != NULL)
+ * prpl->new_function(...);
+ *
+ * The PURPLE_PROTOCOL_PLUGIN_HAS_FUNC macro can be used for the older member
+ * functions (e.g. login, send_im etc.) too.
+ */
+
PurpleProtocolOptions options; /**< Protocol options. */
GList *user_splits; /**< A GList of PurpleAccountUserSplit */
@@ -316,6 +337,7 @@
void (*set_idle)(PurpleConnection *, int idletime);
void (*change_passwd)(PurpleConnection *, const char *old_pass,
const char *new_pass);
+
/**
* Add a buddy to a group on the server.
*
@@ -324,11 +346,10 @@
* authorization and the user is not already authorized to see the
* status of \a buddy, \a add_buddy should request authorization.
*
- * @deprecated Since 2.8.0, add_buddy_with_invite is preferred.
- * @see add_buddy_with_invite
+ * If authorization is required, then use the supplied invite message.
*/
- void (*add_buddy)(PurpleConnection *, PurpleBuddy *buddy, PurpleGroup *group);
- void (*add_buddies)(PurpleConnection *, GList *buddies, GList *groups);
+ void (*add_buddy)(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char *message);
+ void (*add_buddies)(PurpleConnection *pc, GList *buddies, GList *groups, const char *message);
void (*remove_buddy)(PurpleConnection *, PurpleBuddy *buddy, PurpleGroup *group);
void (*remove_buddies)(PurpleConnection *, GList *buddies, GList *groups);
void (*add_permit)(PurpleConnection *, const char *name);
@@ -517,27 +538,6 @@
gboolean (*send_attention)(PurpleConnection *gc, const char *username, guint type);
GList *(*get_attention_types)(PurpleAccount *acct);
- /**
- * The size of the PurplePluginProtocolInfo. This should always be sizeof(PurplePluginProtocolInfo).
- * This allows adding more functions to this struct without requiring a major version bump.
- */
- unsigned long struct_size;
-
- /* NOTE:
- * If more functions are added, they should accessed using the following syntax:
- *
- * if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, new_function))
- * prpl->new_function(...);
- *
- * instead of
- *
- * if (prpl->new_function != NULL)
- * prpl->new_function(...);
- *
- * The PURPLE_PROTOCOL_PLUGIN_HAS_FUNC macro can be used for the older member
- * functions (e.g. login, send_im etc.) too.
- */
-
/** This allows protocols to specify additional strings to be used for
* various purposes. The idea is to stuff a bunch of strings in this hash
* table instead of expanding the struct for every addition. This hash
@@ -615,26 +615,10 @@
void (*get_public_alias)(PurpleConnection *gc,
PurpleGetPublicAliasSuccessCallback success_cb,
PurpleGetPublicAliasFailureCallback failure_cb);
-
- /**
- * Add a buddy to a group on the server.
- *
- * This PRPL function may be called in situations in which the buddy is
- * already in the specified group. If the protocol supports
- * authorization and the user is not already authorized to see the
- * status of \a buddy, \a add_buddy should request authorization.
- *
- * If authorization is required, then use the supplied invite message.
- *
- * @since 2.8.0
- */
- void (*add_buddy_with_invite)(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char *message);
- void (*add_buddies_with_invite)(PurpleConnection *pc, GList *buddies, GList *groups, const char *message);
};
#define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \
- (((G_STRUCT_OFFSET(PurplePluginProtocolInfo, member) < G_STRUCT_OFFSET(PurplePluginProtocolInfo, struct_size)) \
- || (G_STRUCT_OFFSET(PurplePluginProtocolInfo, member) < prpl->struct_size)) && \
+ (G_STRUCT_OFFSET(PurplePluginProtocolInfo, member) < prpl->struct_size && \
prpl->member != NULL)
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/tests/test_xmlnode.c
--- a/libpurple/tests/test_xmlnode.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/tests/test_xmlnode.c Mon Sep 05 18:34:32 2011 +0000
@@ -21,6 +21,101 @@
}
END_TEST
+#define check_doc_structure(x) { \
+ xmlnode *ping, *child1, *child2; \
+ fail_if(x == NULL, "Failed to parse document"); \
+ ping = xmlnode_get_child(x, "ping"); \
+ fail_if(ping == NULL, "Failed to find 'ping' child"); \
+ child1 = xmlnode_get_child(ping, "child1"); \
+ fail_if(child1 == NULL, "Failed to find 'child1'"); \
+ child2 = xmlnode_get_child(child1, "child2"); \
+ fail_if(child2 == NULL, "Failed to find 'child2'"); \
+ xmlnode_new_child(child2, "a"); \
+ \
+ assert_string_equal("jabber:client", xmlnode_get_namespace(x)); \
+ /* NOTE: xmlnode_get_namespace() returns the namespace of the element, not the
+ * current default namespace. See http://www.w3.org/TR/xml-names/#defaulting and
+ * http://www.w3.org/TR/xml-names/#dt-defaultNS.
+ */ \
+ assert_string_equal("urn:xmpp:ping", xmlnode_get_namespace(ping)); \
+ assert_string_equal("jabber:client", xmlnode_get_namespace(child1)); \
+ assert_string_equal("urn:xmpp:ping", xmlnode_get_namespace(child2)); \
+ /*
+ * This fails (well, actually crashes [the ns is NULL]) unless
+ * xmlnode_new_child() actually sets the element namespace.
+ assert_string_equal("jabber:client", xmlnode_get_namespace(xmlnode_get_child(child2, "a")));
+ */ \
+ \
+ assert_string_equal("jabber:client", xmlnode_get_default_namespace(x)); \
+ assert_string_equal("jabber:client", xmlnode_get_default_namespace(ping)); \
+ assert_string_equal("jabber:client", xmlnode_get_default_namespace(child1)); \
+ assert_string_equal("jabber:client", xmlnode_get_default_namespace(child2)); \
+}
+
+START_TEST(test_xmlnode_prefixes)
+{
+ const char *xml_doc =
+ ""
+ ""
+ ""
+ "" /* xmlns='jabber:child' */
+ ""
+ ""
+ "";
+ char *str;
+ xmlnode *xml, *reparsed;
+
+ xml = xmlnode_from_str(xml_doc, -1);
+ check_doc_structure(xml);
+
+ /* Check that xmlnode_from_str(xmlnode_to_str(xml, NULL), -1) is idempotent. */
+ str = xmlnode_to_str(xml, NULL);
+ fail_if(str == NULL, "Failed to serialize XMLnode");
+ reparsed = xmlnode_from_str(str, -1);
+ fail_if(reparsed == NULL, "Failed to reparse xml document");
+ check_doc_structure(reparsed);
+
+ g_free(str);
+ xmlnode_free(xml);
+ xmlnode_free(reparsed);
+}
+END_TEST
+
+
+START_TEST(test_strip_prefixes)
+{
+ const char *xml_doc = ""
+ ""
+ "xvlc xvlc"
+ ""
+ ""
+ "xvlc xvlc"
+ ""
+ ""
+ "";
+ const char *out = ""
+ ""
+ "xvlc xvlc"
+ ""
+ ""
+ "xvlc xvlc
"
+ ""
+ ""
+ "";
+ char *str;
+ xmlnode *xml;
+
+ xml = xmlnode_from_str(xml_doc, -1);
+ fail_if(xml == NULL, "Failed to parse XML");
+
+ xmlnode_strip_prefixes(xml);
+ str = xmlnode_to_str(xml, NULL);
+ assert_string_equal_free(out, str);
+
+ xmlnode_free(xml);
+}
+END_TEST
+
Suite *
xmlnode_suite(void)
{
@@ -28,6 +123,9 @@
TCase *tc = tcase_create("xmlnode");
tcase_add_test(tc, test_xmlnode_billion_laughs_attack);
+ tcase_add_test(tc, test_xmlnode_prefixes);
+ tcase_add_test(tc, test_strip_prefixes);
+
suite_add_tcase(s, tc);
return s;
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/xmlnode.c
--- a/libpurple/xmlnode.c Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/xmlnode.c Mon Sep 05 18:34:32 2011 +0000
@@ -78,6 +78,19 @@
node = new_node(name, XMLNODE_TYPE_TAG);
xmlnode_insert_child(parent, node);
+#if 0
+ /* This would give xmlnodes more appropriate namespacing
+ * when creating them. Otherwise, unless an explicit namespace
+ * is set, xmlnode_get_namespace() will return NULL, when
+ * there may be a default namespace.
+ *
+ * I'm unconvinced that it's useful, and concerned it may break things.
+ *
+ * _insert_child would need the same thing, probably (assuming
+ * xmlns->node == NULL)
+ */
+ xmlnode_set_namespace(node, xmlnode_get_default_namespace(node))
+#endif
return node;
}
@@ -249,19 +262,53 @@
void xmlnode_set_namespace(xmlnode *node, const char *xmlns)
{
+ char *tmp;
g_return_if_fail(node != NULL);
- g_free(node->xmlns);
+ tmp = node->xmlns;
node->xmlns = g_strdup(xmlns);
+
+ if (node->namespace_map) {
+ g_hash_table_insert(node->namespace_map,
+ g_strdup(""), g_strdup(xmlns));
+ }
+
+ g_free(tmp);
}
-const char *xmlnode_get_namespace(xmlnode *node)
+const char *xmlnode_get_namespace(const xmlnode *node)
{
g_return_val_if_fail(node != NULL, NULL);
return node->xmlns;
}
+const char *xmlnode_get_default_namespace(const xmlnode *node)
+{
+ const xmlnode *current_node;
+ const char *ns = NULL;
+
+ g_return_val_if_fail(node != NULL, NULL);
+
+ current_node = node;
+ while (current_node) {
+ /* If this node does *not* have a prefix, node->xmlns is the default
+ * namespace. Otherwise, it's the prefix namespace.
+ */
+ if (!current_node->prefix && current_node->xmlns) {
+ return current_node->xmlns;
+ } else if (current_node->namespace_map) {
+ ns = g_hash_table_lookup(current_node->namespace_map, "");
+ if (ns && *ns)
+ return ns;
+ }
+
+ current_node = current_node->parent;
+ }
+
+ return ns;
+}
+
void xmlnode_set_prefix(xmlnode *node, const char *prefix)
{
g_return_if_fail(node != NULL);
@@ -276,6 +323,53 @@
return node->prefix;
}
+const char *xmlnode_get_prefix_namespace(const xmlnode *node, const char *prefix)
+{
+ const xmlnode *current_node;
+
+ g_return_val_if_fail(node != NULL, NULL);
+ g_return_val_if_fail(prefix != NULL, xmlnode_get_default_namespace(node));
+
+ current_node = node;
+ while (current_node) {
+ if (current_node->prefix && g_str_equal(prefix, current_node->prefix) &&
+ current_node->xmlns) {
+ return current_node->xmlns;
+ } else if (current_node->namespace_map) {
+ const char *ns = g_hash_table_lookup(current_node->namespace_map, prefix);
+ if (ns && *ns) {
+ return ns;
+ }
+ }
+
+ current_node = current_node->parent;
+ }
+
+ return NULL;
+}
+
+void xmlnode_strip_prefixes(xmlnode *node)
+{
+ xmlnode *child;
+ const char *prefix;
+
+ g_return_if_fail(node != NULL);
+
+ for (child = node->child; child; child = child->next) {
+ if (child->type == XMLNODE_TYPE_TAG)
+ xmlnode_strip_prefixes(child);
+ }
+
+ prefix = xmlnode_get_prefix(node);
+ if (prefix) {
+ const char *ns = xmlnode_get_prefix_namespace(node, prefix);
+ xmlnode_set_namespace(node, ns);
+ xmlnode_set_prefix(node, NULL);
+ } else {
+ xmlnode_set_namespace(node, xmlnode_get_default_namespace(node));
+ }
+}
+
xmlnode *xmlnode_get_parent(const xmlnode *child)
{
g_return_val_if_fail(child != NULL, NULL);
@@ -443,12 +537,22 @@
if (node->namespace_map) {
g_hash_table_foreach(node->namespace_map,
(GHFunc)xmlnode_to_str_foreach_append_ns, text);
- } else if (node->xmlns) {
- if(!node->parent || !purple_strequal(node->xmlns, node->parent->xmlns))
+ } else {
+ /* Figure out if this node has a different default namespace from parent */
+ const char *xmlns = NULL;
+ const char *parent_xmlns = NULL;
+ if (!prefix)
+ xmlns = node->xmlns;
+
+ if (!xmlns)
+ xmlns = xmlnode_get_default_namespace(node);
+ if (node->parent)
+ parent_xmlns = xmlnode_get_default_namespace(node->parent);
+ if (!purple_strequal(xmlns, parent_xmlns))
{
- char *xmlns = g_markup_escape_text(node->xmlns, -1);
- g_string_append_printf(text, " xmlns='%s'", xmlns);
- g_free(xmlns);
+ char *escaped_xmlns = g_markup_escape_text(xmlns, -1);
+ g_string_append_printf(text, " xmlns='%s'", escaped_xmlns);
+ g_free(escaped_xmlns);
}
}
for(c = node->child; c; c = c->next)
diff -r 5d81b452dcc4 -r e21500d61347 libpurple/xmlnode.h
--- a/libpurple/xmlnode.h Sat Sep 03 15:11:20 2011 +0000
+++ b/libpurple/xmlnode.h Mon Sep 05 18:34:32 2011 +0000
@@ -221,7 +221,35 @@
* @param node The node to get the namepsace from
* @return The namespace of this node
*/
-const char *xmlnode_get_namespace(xmlnode *node);
+const char *xmlnode_get_namespace(const xmlnode *node);
+
+/**
+ * Returns the current default namespace. The default
+ * namespace is the current namespace which applies to child
+ * elements which are unprefixed and which do not contain their
+ * own namespace.
+ *
+ * For example, given:
+ *
+ *
+ *
+ *
+ * The default namespace of all nodes (including 'child1') is "jabber:client",
+ * though the namespace for 'element' is "http://example.org/ns1".
+ *
+ * @param node The node for which to return the default namespace
+ * @return The default namespace of this node
+ */
+const char *xmlnode_get_default_namespace(const xmlnode *node);
+
+/**
+ * Returns the defined namespace for a prefix.
+ *
+ * @param node The node from which to start the search.
+ * @param prefix The prefix for which to return the associated namespace.
+ * @return The namespace for this prefix.
+ */
+const char *xmlnode_get_prefix_namespace(const xmlnode *node, const char *prefix);
/**
* Sets the prefix of a node
@@ -240,6 +268,19 @@
const char *xmlnode_get_prefix(const xmlnode *node);
/**
+ * Remove all element prefixes from an xmlnode tree. The prefix's
+ * namespace is transformed into the default namespace for an element.
+ *
+ * Note that this will not necessarily remove all prefixes in use
+ * (prefixed attributes may still exist), and that this usage may
+ * break some applications (SOAP / XPath apparently often rely on
+ * the prefixes having the same name.
+ *
+ * @param node The node from which to strip prefixes
+ */
+void xmlnode_strip_prefixes(xmlnode *node);
+
+/**
* Gets the parent node.
*
* @param child The child node.
diff -r 5d81b452dcc4 -r e21500d61347 pidgin/Makefile.mingw
--- a/pidgin/Makefile.mingw Sat Sep 03 15:11:20 2011 +0000
+++ b/pidgin/Makefile.mingw Mon Sep 05 18:34:32 2011 +0000
@@ -95,8 +95,6 @@
minidialog.c \
pidginstock.c \
pidgintooltip.c \
- win32/MinimizeToTray.c \
- win32/gtkdocklet-win32.c \
win32/gtkwin32dep.c \
win32/untar.c \
win32/wspell.c
diff -r 5d81b452dcc4 -r e21500d61347 pidgin/gtkblist.c
--- a/pidgin/gtkblist.c Sat Sep 03 15:11:20 2011 +0000
+++ b/pidgin/gtkblist.c Mon Sep 05 18:34:32 2011 +0000
@@ -7040,7 +7040,7 @@
purple_blist_add_buddy(b, NULL, g, NULL);
}
- purple_account_add_buddy_with_invite(account, b, invite);
+ purple_account_add_buddy(account, b, invite);
/* Offer to merge people with the same alias. */
if (whoalias != NULL && g != NULL)
diff -r 5d81b452dcc4 -r e21500d61347 pidgin/gtkconv.c
--- a/pidgin/gtkconv.c Sat Sep 03 15:11:20 2011 +0000
+++ b/pidgin/gtkconv.c Mon Sep 05 18:34:32 2011 +0000
@@ -6690,7 +6690,7 @@
if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM)
{
- gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL) || (prpl_info->add_buddy_with_invite != NULL));
+ gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL));
gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL));
gtk_widget_set_sensitive(win->menu.send_file,
(prpl_info->send_file != NULL && (!prpl_info->can_receive_file ||
diff -r 5d81b452dcc4 -r e21500d61347 pidgin/gtkdocklet.c
--- a/pidgin/gtkdocklet.c Sat Sep 03 15:11:20 2011 +0000
+++ b/pidgin/gtkdocklet.c Mon Sep 05 18:34:32 2011 +0000
@@ -1036,6 +1036,7 @@
void *accounts_handle = purple_accounts_get_handle();
void *status_handle = purple_savedstatuses_get_handle();
void *docklet_handle = pidgin_docklet_get_handle();
+ gchar *tmp;
purple_prefs_add_none(PIDGIN_PREFS_ROOT "/docklet");
purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/docklet/blink", FALSE);
@@ -1051,8 +1052,9 @@
purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/docklet/gtk/embedded", FALSE);
}
- gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(),
- DATADIR G_DIR_SEPARATOR_S "pixmaps" G_DIR_SEPARATOR_S "pidgin" G_DIR_SEPARATOR_S "tray");
+ tmp = g_build_path(G_DIR_SEPARATOR_S, DATADIR, "pixmaps", "pidgin", "tray", NULL);
+ gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), tmp);
+ g_free(tmp);
if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/docklet/show"), "always"))
docklet_gtk_status_create(FALSE);