--- a/libpurple/account.c Fri Dec 03 01:55:19 2021 -0600
+++ b/libpurple/account.c Fri Dec 03 01:56:48 2021 -0600
@@ -29,6 +29,7 @@
+#include "purpleaccountmanager.h" #include "purpleaccountpresence.h"
#include "purpleconversationmanager.h"
#include "purplecredentialmanager.h"
@@ -1152,22 +1153,24 @@
*****************************************************************************/
-purple_account_new(const char *username, const char *protocol_id)
+purple_account_new(const gchar *username, const gchar *protocol_id) { + PurpleAccountManager *manager = NULL; g_return_val_if_fail(username != NULL, NULL);
g_return_val_if_fail(protocol_id != NULL, NULL);
- account = purple_accounts_find(username, protocol_id);
+ manager = purple_account_manager_get_default(); + account = purple_account_manager_find(manager, username, protocol_id);
- account = g_object_new(PURPLE_TYPE_ACCOUNT,
- "protocol-id", protocol_id,
+ account = g_object_new( + "protocol-id", protocol_id, --- a/libpurple/accounts.c Fri Dec 03 01:55:19 2021 -0600
+++ b/libpurple/accounts.c Fri Dec 03 01:56:48 2021 -0600
@@ -26,6 +26,7 @@
+#include "purpleaccountmanager.h" #include "purpleconversationmanager.h"
#include "purplecredentialmanager.h"
@@ -33,7 +34,6 @@
static PurpleAccountUiOps *account_ui_ops = NULL;
-static GList *accounts = NULL;
static guint save_timer = 0;
static gboolean accounts_loaded = FALSE;
@@ -49,20 +49,24 @@
/*********************************************************************
*********************************************************************/
+accounts_to_xmlnode_helper(PurpleAccount *account, gpointer data) { + PurpleXmlNode *node = data, *child = NULL; + child = _purple_account_to_xmlnode(account); + purple_xmlnode_insert_child(node, child); accounts_to_xmlnode(void)
- PurpleXmlNode *node, *child;
+ PurpleAccountManager *manager = purple_account_manager_get_default(); + PurpleXmlNode *node = NULL; node = purple_xmlnode_new("account");
purple_xmlnode_set_attrib(node, "version", "1.0");
- for (cur = purple_accounts_get_all(); cur != NULL; cur = cur->next)
- child = _purple_account_to_xmlnode(cur->data);
- purple_xmlnode_insert_child(node, child);
+ purple_account_manager_foreach(manager, accounts_to_xmlnode_helper, node); @@ -505,23 +509,27 @@
+ PurpleAccountManager *manager = NULL; PurpleXmlNode *node, *child;
node = purple_util_read_xml_from_config_file("accounts.xml", _("accounts"));
- for (child = purple_xmlnode_get_child(node, "account"); child != NULL;
- child = purple_xmlnode_get_next_twin(child))
+ manager = purple_account_manager_get_default(); + for(child = purple_xmlnode_get_child(node, "account"); child != NULL; + child = purple_xmlnode_get_next_twin(child)) new_acct = parse_account(child);
- purple_accounts_add(new_acct);
+ purple_account_manager_add(manager, new_acct); purple_xmlnode_free(node);
@@ -529,38 +537,6 @@
_purple_buddy_icons_account_loaded_cb();
-purple_accounts_add(PurpleAccount *account)
- g_return_if_fail(account != NULL);
- if (g_list_find(accounts, account) != NULL)
- accounts = g_list_append(accounts, account);
- purple_accounts_schedule_save();
- purple_signal_emit(purple_accounts_get_handle(), "account-added", account);
-purple_accounts_remove(PurpleAccount *account)
- g_return_if_fail(account != NULL);
- accounts = g_list_remove(accounts, account);
- purple_accounts_schedule_save();
- /* Clearing the error ensures that account-error-changed is emitted,
- * which is the end of the guarantee that the the error's pointer is
- purple_account_clear_current_error(account);
- purple_signal_emit(purple_accounts_get_handle(), "account-removed", account);
purple_accounts_delete_set(GObject *obj, GAsyncResult *res, gpointer d) {
PurpleCredentialManager *manager = PURPLE_CREDENTIAL_MANAGER(obj);
@@ -584,10 +560,11 @@
purple_accounts_delete(PurpleAccount *account)
- PurpleBlistNode *gnode, *cnode, *bnode;
+ PurpleAccountManager *manager = NULL; + PurpleBlistNode *gnode = NULL, *cnode = NULL, *bnode = NULL; PurpleConversationManager *conv_manager = NULL;
PurpleCredentialManager *cred_manager = NULL;
g_return_if_fail(account != NULL);
@@ -602,36 +579,41 @@
purple_notify_close_with_handle(account);
purple_request_close_with_handle(account);
- purple_accounts_remove(account);
+ manager = purple_account_manager_get_default(); + purple_account_manager_remove(manager, account); /* Remove this account's buddies */
- for (gnode = purple_blist_get_default_root(); gnode != NULL;
- gnode = purple_blist_node_get_sibling_next(gnode)) {
- if (!PURPLE_IS_GROUP(gnode))
+ for(gnode = purple_blist_get_default_root(); gnode != NULL; + gnode = purple_blist_node_get_sibling_next(gnode)) + if(!PURPLE_IS_GROUP(gnode)) { cnode = purple_blist_node_get_first_child(gnode);
PurpleBlistNode *cnode_next = purple_blist_node_get_sibling_next(cnode);
if(PURPLE_IS_CONTACT(cnode)) {
bnode = purple_blist_node_get_first_child(cnode);
PurpleBlistNode *bnode_next = purple_blist_node_get_sibling_next(bnode);
if (PURPLE_IS_BUDDY(bnode)) {
PurpleBuddy *b = (PurpleBuddy *)bnode;
- if (purple_buddy_get_account(b) == account)
+ if(purple_buddy_get_account(b) == account) { purple_blist_remove_buddy(b);
- } else if (PURPLE_IS_CHAT(cnode)) {
+ } else if(PURPLE_IS_CHAT(cnode)) { PurpleChat *c = (PurpleChat *)cnode;
- if (purple_chat_get_account(c) == account)
+ if(purple_chat_get_account(c) == account) { purple_blist_remove_chat(c);
@@ -662,112 +644,34 @@
-purple_accounts_reorder(PurpleAccount *account, guint new_index)
+purple_accounts_restore_current_status(PurpleAccount *account, + G_GNUC_UNUSED gpointer data) { + gboolean enabled = FALSE, online = FALSE; + enabled = purple_account_get_enabled(account, purple_core_get_ui()); + online = purple_presence_is_online(purple_account_get_presence(account)); - g_return_if_fail(account != NULL);
- g_return_if_fail(new_index <= g_list_length(accounts));
- index = g_list_index(accounts, account);
+ if(enabled && online) { + purple_account_connect(account);
- purple_debug_error("accounts",
- "Unregistered account (%s) discovered during reorder!\n",
- purple_account_get_username(account));
+purple_accounts_restore_current_statuses() { + PurpleAccountManager *manager = NULL; + /* If we're not connected to the Internet right now, we bail on this */ + if (!purple_network_is_available()) { + g_warning("Network not connected; skipping reconnect"); - l = g_list_nth(accounts, index);
- if (new_index > (guint)index)
- /* Remove the old one. */
- accounts = g_list_delete_link(accounts, l);
- /* Insert it where it should go. */
- accounts = g_list_insert(accounts, account, new_index);
- purple_accounts_schedule_save();
-purple_accounts_get_all(void)
-purple_accounts_get_all_active(void)
- GList *all = purple_accounts_get_all();
- PurpleAccount *account = all->data;
- if (purple_account_get_enabled(account, purple_core_get_ui()))
- list = g_list_append(list, account);
-purple_accounts_find(const char *name, const char *protocol_id)
- PurpleAccount *account = NULL;
- g_return_val_if_fail(name != NULL, NULL);
- g_return_val_if_fail(protocol_id != NULL, NULL);
- for (l = purple_accounts_get_all(); l != NULL; l = l->next) {
- account = (PurpleAccount *)l->data;
- if (!purple_strequal(purple_account_get_protocol_id(account), protocol_id))
- who = g_strdup(purple_normalize(account, name));
- if (purple_strequal(purple_normalize(account, purple_account_get_username(account)), who)) {
-purple_accounts_restore_current_statuses()
- PurpleAccount *account;
- /* If we're not connected to the Internet right now, we bail on this */
- if (!purple_network_is_available())
- purple_debug_warning("accounts", "Network not connected; skipping reconnect\n");
- for (l = purple_accounts_get_all(); l != NULL; l = l->next)
- account = (PurpleAccount *)l->data;
- if (purple_account_get_enabled(account, purple_core_get_ui()) &&
- (purple_presence_is_online(purple_account_get_presence(account))))
- purple_account_connect(account);
+ manager = purple_account_manager_get_default(); + purple_account_manager_foreach(manager, + purple_accounts_restore_current_status, static PurpleAccountUiOps *
@@ -979,9 +883,52 @@
- for (; accounts; accounts = g_list_delete_link(accounts, accounts))
- g_object_unref(G_OBJECT(accounts->data));
purple_signals_disconnect_by_handle(handle);
purple_signals_unregister_by_instance(handle);
+/****************************************************************************** + *****************************************************************************/ +purple_accounts_add(PurpleAccount *account) { + PurpleAccountManager *manager = purple_account_manager_get_default(); + purple_account_manager_add(manager, account); +purple_accounts_remove(PurpleAccount *account) { + PurpleAccountManager *manager = purple_account_manager_get_default(); + purple_account_manager_remove(manager, account); +purple_accounts_get_all(void) { + PurpleAccountManager *manager = purple_account_manager_get_default(); + return purple_account_manager_get_all(manager); +purple_accounts_get_all_active(void) { + PurpleAccountManager *manager = purple_account_manager_get_default(); + return purple_account_manager_get_active(manager); +purple_accounts_reorder(PurpleAccount *account, guint new_index) { + PurpleAccountManager *manager = purple_account_manager_get_default(); + purple_account_manager_reorder(manager, account, new_index); +purple_accounts_find(const char *name, const char *protocol_id) { + PurpleAccountManager *manager = purple_account_manager_get_default(); + return purple_account_manager_find(manager, name, protocol_id); --- a/libpurple/accounts.h Fri Dec 03 01:55:19 2021 -0600
+++ b/libpurple/accounts.h Fri Dec 03 01:56:48 2021 -0600
@@ -119,6 +119,7 @@
* Adds an account to the list of accounts.
+G_DEPRECATED_FOR(purple_account_manager_add) void purple_accounts_add(PurpleAccount *account);
@@ -127,6 +128,7 @@
* Removes an account from the list of accounts.
+G_DEPRECATED_FOR(purple_account_manager_remove) void purple_accounts_remove(PurpleAccount *account);
@@ -148,6 +150,7 @@
+G_DEPRECATED_FOR(purple_account_manager_reorder) void purple_accounts_reorder(PurpleAccount *account, guint new_index);
@@ -157,6 +160,7 @@
* Returns: (element-type PurpleAccount) (transfer none): A list of all accounts.
+G_DEPRECATED_FOR(purple_account_manager_get_all) GList *purple_accounts_get_all(void);
@@ -167,6 +171,7 @@
* Returns: (element-type PurpleAccount) (transfer container): A list of all
+G_DEPRECATED_FOR(purple_account_manager_get_active) GList *purple_accounts_get_all_active(void);
@@ -178,6 +183,7 @@
* Returns: (transfer none): The account, if found, or %NULL otherwise.
+G_DEPRECATED_FOR(purple_account_manager_find) PurpleAccount *purple_accounts_find(const char *name, const char *protocol);
--- a/libpurple/buddylist.c Fri Dec 03 01:55:19 2021 -0600
+++ b/libpurple/buddylist.c Fri Dec 03 01:56:48 2021 -0600
@@ -29,6 +29,7 @@
+#include "purpleaccountmanager.h" #include "purpleprivate.h"
#include "purpleprotocol.h"
#include "purpleprotocolchat.h"
@@ -360,8 +361,8 @@
+blist_to_xmlnode(void) { + PurpleAccountManager *manager = purple_account_manager_get_default(); PurpleXmlNode *node, *child, *grandchild;
@@ -394,7 +395,8 @@
/* Write privacy settings */
child = purple_xmlnode_new_child(node, "privacy");
- for (cur = purple_accounts_get_all(); cur != NULL; cur = cur->next)
+ for(cur = purple_account_manager_get_all(manager); cur != NULL; grandchild = accountprivacy_to_xmlnode(cur->data);
purple_xmlnode_insert_child(child, grandchild);
@@ -497,9 +499,9 @@
-parse_buddy(PurpleGroup *group, PurpleContact *contact, PurpleXmlNode *bnode)
+parse_buddy(PurpleGroup *group, PurpleContact *contact, PurpleXmlNode *bnode) { + PurpleAccountManager *manager = purple_account_manager_get_default(); char *name = NULL, *alias = NULL;
const char *acct_name, *proto;
@@ -508,28 +510,33 @@
acct_name = purple_xmlnode_get_attrib(bnode, "account");
proto = purple_xmlnode_get_attrib(bnode, "proto");
- if (!acct_name || !proto)
+ if(!acct_name || !proto) { - account = purple_accounts_find(acct_name, proto);
+ account = purple_account_manager_find(manager, acct_name, proto);
- if ((x = purple_xmlnode_get_child(bnode, "name")))
+ if((x = purple_xmlnode_get_child(bnode, "name"))) { name = purple_xmlnode_get_data(x);
- if ((x = purple_xmlnode_get_child(bnode, "alias")))
+ if((x = purple_xmlnode_get_child(bnode, "alias"))) { alias = purple_xmlnode_get_data(x);
buddy = purple_buddy_new(account, name, alias);
purple_blist_add_buddy(buddy, contact, group,
_purple_blist_get_last_child((PurpleBlistNode*)contact));
- for (x = purple_xmlnode_get_child(bnode, "setting"); x; x = purple_xmlnode_get_next_twin(x)) {
+ for(x = purple_xmlnode_get_child(bnode, "setting"); x; x = purple_xmlnode_get_next_twin(x)) { parse_setting((PurpleBlistNode*)buddy, x);
@@ -568,8 +575,9 @@
parse_chat(PurpleGroup *group, PurpleXmlNode *cnode)
+ PurpleAccount *account; + PurpleAccountManager *manager = purple_account_manager_get_default(); - PurpleAccount *account;
const char *acct_name, *proto;
@@ -578,20 +586,23 @@
acct_name = purple_xmlnode_get_attrib(cnode, "account");
proto = purple_xmlnode_get_attrib(cnode, "proto");
- if (!acct_name || !proto)
+ if(!acct_name || !proto) { - account = purple_accounts_find(acct_name, proto);
+ account = purple_account_manager_find(manager, acct_name, proto);
- if ((x = purple_xmlnode_get_child(cnode, "alias")))
+ if((x = purple_xmlnode_get_child(cnode, "alias"))) { alias = purple_xmlnode_get_data(x);
components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
- for (x = purple_xmlnode_get_child(cnode, "component"); x; x = purple_xmlnode_get_next_twin(x)) {
+ for(x = purple_xmlnode_get_child(cnode, "component"); x; x = purple_xmlnode_get_next_twin(x)) { @@ -604,7 +615,7 @@
purple_blist_add_chat(chat, group,
_purple_blist_get_last_child((PurpleBlistNode*)group));
- for (x = purple_xmlnode_get_child(cnode, "setting"); x; x = purple_xmlnode_get_next_twin(x)) {
+ for(x = purple_xmlnode_get_child(cnode, "setting"); x; x = purple_xmlnode_get_next_twin(x)) { parse_setting((PurpleBlistNode*)chat, x);
@@ -638,24 +649,28 @@
+ PurpleAccountManager *manager = NULL; PurpleXmlNode *purple, *blist, *privacy;
purple = purple_util_read_xml_from_config_file("blist.xml", _("buddy list"));
+ manager = purple_account_manager_get_default(); blist = purple_xmlnode_get_child(purple, "blist");
PurpleXmlNode *groupnode;
localized_default_group_name = g_strdup(
purple_xmlnode_get_attrib(blist,
"localized-default-group"));
- for (groupnode = purple_xmlnode_get_child(blist, "group"); groupnode != NULL;
+ for(groupnode = purple_xmlnode_get_child(blist, "group"); groupnode != NULL; groupnode = purple_xmlnode_get_next_twin(groupnode)) {
@@ -665,11 +680,11 @@
privacy = purple_xmlnode_get_child(purple, "privacy");
- for (anode = privacy->child; anode; anode = anode->next) {
+ for(anode = privacy->child; anode; anode = anode->next) { + PurpleAccount *account; - PurpleAccount *account;
const char *acct_name, *proto, *mode;
@@ -677,27 +692,30 @@
proto = purple_xmlnode_get_attrib(anode, "proto");
mode = purple_xmlnode_get_attrib(anode, "mode");
- if (!acct_name || !proto || !mode)
+ if(!acct_name || !proto || !mode) { - account = purple_accounts_find(acct_name, proto);
+ account = purple_account_manager_find(manager, acct_name, proto);
purple_account_set_privacy_type(account, (imode != 0 ? imode : PURPLE_ACCOUNT_PRIVACY_ALLOW_ALL));
- for (x = anode->child; x; x = x->next) {
+ for(x = anode->child; x; x = x->next) { - if (x->type != PURPLE_XMLNODE_TYPE_TAG)
+ if(x->type != PURPLE_XMLNODE_TYPE_TAG) { - if (purple_strequal(x->name, "permit")) {
+ if(purple_strequal(x->name, "permit")) { name = purple_xmlnode_get_data(x);
purple_account_privacy_permit_add(account, name, TRUE);
- } else if (purple_strequal(x->name, "block")) {
+ } else if(purple_strequal(x->name, "block")) { name = purple_xmlnode_get_data(x);
purple_account_privacy_deny_add(account, name, TRUE);
@@ -727,17 +745,18 @@
+ PurpleAccountManager *manager = NULL; PurpleBuddyList *gbl = g_object_new(buddy_list_type, NULL);
buddies_cache = g_hash_table_new_full(g_direct_hash, g_direct_equal,
NULL, (GDestroyNotify)g_hash_table_destroy);
groups_cache = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
- for (account = purple_accounts_get_all(); account != NULL; account = account->next)
- purple_blist_buddies_cache_add_account(account->data);
+ manager = purple_account_manager_get_default(); + for(l = purple_account_manager_get_all(manager); l != NULL; l = l->next) { + purple_blist_buddies_cache_add_account(PURPLE_ACCOUNT(l->data)); --- a/libpurple/purpleprotocol.c Fri Dec 03 01:55:19 2021 -0600
+++ b/libpurple/purpleprotocol.c Fri Dec 03 01:56:48 2021 -0600
@@ -22,7 +22,7 @@
#include "purpleprotocol.h"
+#include "purpleaccountmanager.h" @@ -145,6 +145,25 @@
g_object_notify_by_pspec(G_OBJECT(protocol), properties[PROP_OPTIONS]);
+purple_protocol_foreach_account_disconnect(PurpleAccount *account, + const gchar *protocol_id = (const gchar *)data; + /* I'm not sure that we can finalize a protocol plugin if an account is + * still using it.. Right now accounts don't ref protocols, but maybe + if(purple_account_is_disconnected(account)) { + if(purple_strequal(protocol_id, purple_account_get_protocol_id(account))) { + purple_account_disconnect(account); /******************************************************************************
*****************************************************************************/
@@ -228,12 +247,16 @@
purple_protocol_finalize(GObject *object) {
+ PurpleAccountManager *manager = purple_account_manager_get_default(); PurpleProtocol *protocol = PURPLE_PROTOCOL(object);
PurpleProtocolPrivate *priv = NULL;
priv = purple_protocol_get_instance_private(protocol);
+ purple_account_manager_foreach(manager, + purple_protocol_foreach_account_disconnect, g_clear_pointer(&priv->id, g_free);
g_clear_pointer(&priv->name, g_free);
g_clear_pointer(&priv->description, g_free);
@@ -241,22 +264,6 @@
g_clear_pointer(&priv->icon_search_path, g_free);
g_clear_pointer(&priv->icon_resource_path, g_free);
- /* I'm not sure that we can finalize a protocol plugin if an account is
- * still using it.. Right now accounts don't ref protocols, but maybe
- accounts = purple_accounts_get_all_active();
- for (l = accounts; l != NULL; l = l->next) {
- PurpleAccount *account = PURPLE_ACCOUNT(l->data);
- if (purple_account_is_disconnected(account))
- if (purple_strequal(priv->id, purple_account_get_protocol_id(account)))
- purple_account_disconnect(account);
/* these seem to be fallbacks if the subclass protocol doesn't do it's own
* clean up? I kind of want to delete them... - gk 2021-03-03
--- a/libpurple/savedstatuses.c Fri Dec 03 01:55:19 2021 -0600
+++ b/libpurple/savedstatuses.c Fri Dec 03 01:56:48 2021 -0600
@@ -27,6 +27,7 @@
+#include "purpleaccountmanager.h" #include "purplemarkup.h"
#include "savedstatuses.h"
@@ -374,42 +375,46 @@
node = purple_xmlnode_get_child(substatus, "account");
acct_name = purple_xmlnode_get_data(node);
protocol = purple_xmlnode_get_attrib(node, "protocol");
- if ((acct_name != NULL) && (protocol != NULL))
- ret->account = purple_accounts_find(acct_name, protocol);
+ if(acct_name != NULL && protocol != NULL) { + PurpleAccountManager *manager = NULL; + manager = purple_account_manager_get_default(); + ret->account = purple_account_manager_find(manager, acct_name, - if (ret->account == NULL)
+ if(ret->account == NULL) { node = purple_xmlnode_get_child(substatus, "state");
- if ((node != NULL) && ((data = purple_xmlnode_get_data(node)) != NULL))
+ if((node != NULL) && ((data = purple_xmlnode_get_data(node)) != NULL)) { ret->type = purple_status_type_find_with_id(
purple_account_get_status_types(ret->account), data);
+ if(ret->type == NULL) { node = purple_xmlnode_get_child(substatus, "message");
- if ((node != NULL) && ((data = purple_xmlnode_get_data(node)) != NULL))
+ if((node != NULL) && ((data = purple_xmlnode_get_data(node)) != NULL)) { @@ -846,14 +851,15 @@
-purple_savedstatus_set_idleaway(gboolean idleaway)
+purple_savedstatus_set_idleaway(gboolean idleaway) { + PurpleAccountManager *manager = NULL; + PurpleSavedStatus *old, *saved_status; - PurpleSavedStatus *old, *saved_status;
- if (purple_savedstatus_is_idleaway() == idleaway)
+ if(purple_savedstatus_is_idleaway() == idleaway) { /* Don't need to do anything */
old = purple_savedstatus_get_current();
saved_status = idleaway ? purple_savedstatus_get_idleaway()
@@ -861,16 +867,19 @@
purple_prefs_set_bool("/purple/savedstatus/isidleaway", idleaway);
/* Changing our status makes us un-idle */
- if (idleaway && (purple_savedstatus_get_primitive_type(old) != PURPLE_STATUS_AVAILABLE))
+ if(idleaway && (purple_savedstatus_get_primitive_type(old) != PURPLE_STATUS_AVAILABLE)) /* Our global status is already "away," so don't change anything */
- accounts = purple_accounts_get_all_active();
- for (node = accounts; node != NULL; node = node->next)
+ manager = purple_account_manager_get_default(); + accounts = purple_account_manager_get_active(manager); + for (node = accounts; node != NULL; node = node->next) { PurplePresence *presence;
@@ -1085,10 +1094,10 @@
-purple_savedstatus_activate(PurpleSavedStatus *saved_status)
+purple_savedstatus_activate(PurpleSavedStatus *saved_status) { + PurpleAccountManager *manager = NULL; + PurpleSavedStatus *old = purple_savedstatus_get_current(); - PurpleSavedStatus *old = purple_savedstatus_get_current();
g_return_if_fail(saved_status != NULL);
@@ -1096,13 +1105,14 @@
saved_status->lastused = time(NULL);
saved_status->usage_count++;
saved_statuses = g_list_remove(saved_statuses, saved_status);
- saved_statuses = g_list_insert_sorted(saved_statuses, saved_status, saved_statuses_sort_func);
+ saved_statuses = g_list_insert_sorted(saved_statuses, saved_status, + saved_statuses_sort_func); purple_prefs_set_int("/purple/savedstatus/default",
- purple_savedstatus_get_creation_time(saved_status));
+ purple_savedstatus_get_creation_time(saved_status)); - accounts = purple_accounts_get_all_active();
- for (node = accounts; node != NULL; node = node->next)
+ manager = purple_account_manager_get_default(); + accounts = purple_account_manager_get_active(manager); + for(node = accounts; node != NULL; node = node->next) { @@ -1112,11 +1122,11 @@
- if (purple_savedstatus_is_idleaway()) {
+ if(purple_savedstatus_is_idleaway()) { purple_savedstatus_set_idleaway(FALSE);
- purple_signal_emit(purple_savedstatuses_get_handle(), "savedstatus-changed",
+ purple_signal_emit(purple_savedstatuses_get_handle(), + "savedstatus-changed", saved_status, old);