summaryrefslogtreecommitdiff
path: root/libpurple/savedstatuses.c
diff options
context:
space:
mode:
authorAnkit Vani <a@nevitus.org>2014-01-20 23:44:09 +0530
committerAnkit Vani <a@nevitus.org>2014-01-20 23:44:09 +0530
commit649951388304375bee2621f1e78689952052a97c (patch)
tree1db391b0520f246507725054691d3e129e0325da /libpurple/savedstatuses.c
parent1e4a4bdcd88fda3b0ec09595189dc07306a3adb3 (diff)
downloadpidgin-649951388304375bee2621f1e78689952052a97c.tar.gz
Migrate old protocol IDs to new if *.xml version < 1.1
Diffstat (limited to 'libpurple/savedstatuses.c')
-rw-r--r--libpurple/savedstatuses.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/libpurple/savedstatuses.c b/libpurple/savedstatuses.c
index a1090ba5c3..99d22f20f2 100644
--- a/libpurple/savedstatuses.c
+++ b/libpurple/savedstatuses.c
@@ -373,7 +373,7 @@ schedule_save(void)
*********************************************************************/
static PurpleSavedStatusSub *
-parse_substatus(PurpleXmlNode *substatus)
+parse_substatus(PurpleXmlNode *substatus, const char *version)
{
PurpleSavedStatusSub *ret;
PurpleXmlNode *node;
@@ -389,6 +389,16 @@ parse_substatus(PurpleXmlNode *substatus)
const char *protocol;
acct_name = purple_xmlnode_get_data(node);
protocol = purple_xmlnode_get_attrib(node, "protocol");
+
+ if (purple_version_strcmp(version, "1.1") < 0) {
+ if (acct_name && protocol && !strncmp(protocol, "prpl-", 5)) {
+ purple_debug_info("savedstatuses", "status.xml: Migrating "
+ "substatus for account %s from version %s to 1.1\n",
+ acct_name, version);
+ protocol += 5;
+ }
+ }
+
if ((acct_name != NULL) && (protocol != NULL))
ret->account = purple_accounts_find(acct_name, protocol);
g_free(acct_name);
@@ -451,7 +461,7 @@ parse_substatus(PurpleXmlNode *substatus)
* I know. Moving, huh?
*/
static PurpleSavedStatus *
-parse_status(PurpleXmlNode *status)
+parse_status(PurpleXmlNode *status, const char *version)
{
PurpleSavedStatus *ret;
PurpleXmlNode *node;
@@ -513,7 +523,7 @@ parse_status(PurpleXmlNode *status)
node = purple_xmlnode_get_next_twin(node))
{
PurpleSavedStatusSub *new;
- new = parse_substatus(node);
+ new = parse_substatus(node, version);
if (new != NULL)
ret->substatuses = g_list_prepend(ret->substatuses, new);
}
@@ -550,7 +560,7 @@ load_statuses(void)
status = purple_xmlnode_get_next_twin(status))
{
PurpleSavedStatus *new;
- new = parse_status(status);
+ new = parse_status(status, version);
saved_statuses = g_list_prepend(saved_statuses, new);
}
saved_statuses = g_list_sort(saved_statuses, saved_statuses_sort_func);