diff options
author | Junghyun Yeon <jungh.yeon@samsung.com> | 2016-10-06 14:39:39 +0900 |
---|---|---|
committer | Junghyun Yeon <jungh.yeon@samsung.com> | 2016-10-06 14:39:39 +0900 |
commit | dc6c6ae2937d59a66d5b3718747d77f909f97401 (patch) | |
tree | 7e382aebf8337f35e65c025761348192f09597c6 | |
parent | 6a6b68d975ddb2aa13e6cc14f4d2e9a3250fa1b5 (diff) | |
download | app-manager-dc6c6ae2937d59a66d5b3718747d77f909f97401.tar.gz app-manager-dc6c6ae2937d59a66d5b3718747d77f909f97401.tar.bz2 app-manager-dc6c6ae2937d59a66d5b3718747d77f909f97401.zip |
Change behavior of app_info_create correctly
- Changed to getting appinfo based on appid first
- If it fails, treat appid as pkgid and try to get
appinfo of mainapp of pkg
Change-Id: I3785bd17f529dc11e3a39ae46b721be6aa44b1f1
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
-rw-r--r-- | src/app_info.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/app_info.c b/src/app_info.c index 919e96d..7c89093 100644 --- a/src/app_info.c +++ b/src/app_info.c @@ -226,25 +226,29 @@ API int app_info_create(const char *app_id, app_info_h *app_info) if (info == NULL) return app_manager_error(APP_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL); - retval = pkgmgrinfo_pkginfo_get_usr_pkginfo(app_id, getuid(), &pkginfo); - if (retval < 0) { - if (pkgmgrinfo_appinfo_get_usr_appinfo(app_id, getuid(), &appinfo)) { - free(info); - return app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL); - } - + retval = pkgmgrinfo_appinfo_get_usr_appinfo(app_id, getuid(), &appinfo); + if (!retval) { info->app_id = strdup(app_id); info->pkg_app_info = appinfo; *app_info = info; return APP_MANAGER_ERROR_NONE; } + retval = pkgmgrinfo_pkginfo_get_usr_pkginfo(app_id, getuid(), &pkginfo); + if (retval < 0) { + free(info); + return app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL); + } + retval = pkgmgrinfo_pkginfo_get_mainappid(pkginfo, &main_appid); - if (retval < 0) + if (retval < 0) { + free(info); + pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo); app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL); - + }
if (pkgmgrinfo_appinfo_get_usr_appinfo(main_appid, getuid(), &appinfo)) { free(info); + pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo); return app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL); } |