diff options
author | Sung-jae Park <nicesj.park@samsung.com> | 2012-08-30 10:25:41 +0900 |
---|---|---|
committer | Sung-jae Park <nicesj.park@samsung.com> | 2012-08-30 10:56:16 +0900 |
commit | 46807ba87a9c855ac9361d21a08282da16984eda (patch) | |
tree | 4f0f14aa78e0cdc15f6de057046c8efa32c71d54 /pkgmgr_shortcut | |
parent | 8f7883fd8a5c392d28f03a91e36b898643a705f6 (diff) | |
download | shortcut-46807ba87a9c855ac9361d21a08282da16984eda.tar.gz shortcut-46807ba87a9c855ac9361d21a08282da16984eda.tar.bz2 shortcut-46807ba87a9c855ac9361d21a08282da16984eda.zip |
Fix the bug of shortcut parser.
missing appid.
Change-Id: If293884743f602ef0956309545792679794eb811
Diffstat (limited to 'pkgmgr_shortcut')
-rw-r--r-- | pkgmgr_shortcut/src/service_register.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/pkgmgr_shortcut/src/service_register.c b/pkgmgr_shortcut/src/service_register.c index 58e177d..2cd7df4 100644 --- a/pkgmgr_shortcut/src/service_register.c +++ b/pkgmgr_shortcut/src/service_register.c @@ -590,6 +590,7 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char *appid) xmlChar *data; xmlChar *name; xmlChar *icon; + xmlChar *shortcut_appid; xmlNodePtr root; struct i18n_name { xmlChar *name; @@ -638,6 +639,7 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char *appid) key = xmlGetProp(node, (xmlChar *)"extra_key"); data = xmlGetProp(node, (xmlChar *)"extra_data"); + shortcut_appid = xmlGetProp(node, (xmlChar *)"appid"); icon = NULL; name = NULL; @@ -680,19 +682,21 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char *appid) } DbgPrint("appid: %s\n", appid); + DbgPrint("shortcut appid: %s\n", shortcut_appid); DbgPrint("key: %s\n", key); DbgPrint("data: %s\n", data); DbgPrint("icon: %s\n", icon); DbgPrint("Default name: %s\n", name); + if (!shortcut_appid) { + shortcut_appid = xmlStrdup((xmlChar *)appid); + DbgPrint("Use the default appid\n"); + } + begin_transaction(); - if (db_insert_record(appid, (char *)icon, (char *)name, (char *)key, (char *)data) < 0) { + if (db_insert_record((char *)shortcut_appid, (char *)icon, (char *)name, (char *)key, (char *)data) < 0) { ErrPrint("Failed to insert a new record\n"); rollback_transaction(); - xmlFree(key); - xmlFree(data); - xmlFree(icon); - xmlFree(name); dlist_foreach_safe(i18n_list, l, n, i18n) { i18n_list = dlist_remove(i18n_list, l); @@ -701,14 +705,10 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char *appid) free(i18n); } } else { - id = db_get_id(appid, (char *)key, (char *)data); + id = db_get_id((char *)shortcut_appid, (char *)key, (char *)data); if (id < 0) { ErrPrint("Failed to insert a new record\n"); rollback_transaction(); - xmlFree(key); - xmlFree(data); - xmlFree(icon); - xmlFree(name); dlist_foreach_safe(i18n_list, l, n, i18n) { i18n_list = dlist_remove(i18n_list, l); @@ -728,6 +728,12 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char *appid) commit_transaction(); } } + + xmlFree(key); + xmlFree(data); + xmlFree(icon); + xmlFree(name); + xmlFree(shortcut_appid); } return 0; |