diff options
author | Ankit Vani <a@nevitus.org> | 2014-01-20 23:44:09 +0530 |
---|---|---|
committer | Ankit Vani <a@nevitus.org> | 2014-01-20 23:44:09 +0530 |
commit | 649951388304375bee2621f1e78689952052a97c (patch) | |
tree | 1db391b0520f246507725054691d3e129e0325da /libpurple/savedstatuses.c | |
parent | 1e4a4bdcd88fda3b0ec09595189dc07306a3adb3 (diff) | |
download | pidgin-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.c | 18 |
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); |