return PMINFO_R_OK;
}
-static int _appinfo_get_component_info(sqlite3 *db, const char *appid,
- GList **components)
-{
- static const char query_raw[] =
- "SELECT component_id, type, launch_mode "
- "FROM package_app_component_info "
- "WHERE app_id=%Q";
- int ret;
- char *query;
- sqlite3_stmt *stmt;
- int idx;
- component_x *info;
-
- query = sqlite3_mprintf(query_raw, appid);
- if (query == NULL) {
- LOGE("out of memory");
- return PMINFO_R_ERROR;
- }
-
- ret = sqlite3_prepare_v2(db, query, strlen(query), &stmt, NULL);
- sqlite3_free(query);
- if (ret != SQLITE_OK) {
- LOGE("prepare failed: %s", sqlite3_errmsg(db));
- return PMINFO_R_ERROR;
- }
-
- while (sqlite3_step(stmt) == SQLITE_ROW) {
- info = calloc(1, sizeof(component_x));
- if (info == NULL) {
- LOGE("out of memory");
- sqlite3_finalize(stmt);
- return PMINFO_R_ERROR;
- }
-
- idx = 0;
- _save_column_str(stmt, idx++, &info->id);
- _save_column_str(stmt, idx++, &info->type);
- _save_column_str(stmt, idx++, &info->launch_mode);
- *components = g_list_append(*components, info);
- }
-
- sqlite3_finalize(stmt);
-
- return PMINFO_R_OK;
-}
-
static GList *__get_background_category(const char *value)
{
GList *category_list = NULL;
info->background_category = __get_background_category(
bg_category_str);
free(bg_category_str);
+ bg_category_str = NULL;
}
info->for_all_users =
}
}
- if (info->component &&
- !strcmp(info->component, "componentbasedapp")) {
- if (_appinfo_get_component_info(db, info->appid,
- &info->components)) {
- ret = PMINFO_R_ERROR;
- goto catch;
- }
- }
-
if (is_check_storage &&
__appinfo_check_installed_storage(info) != PMINFO_R_OK) {
ret = PMINFO_R_ERROR;
}
info->app_info = (application_x *)g_hash_table_lookup(list, appid);
+ if (!info->app_info || !info->app_info->package) {
+ _LOGD("appinfo for [%s] is not existed for user [%d]",
+ appid, uid);
+ g_hash_table_destroy(list);
+ free(locale);
+ return PMINFO_R_ENOENT;
+ }
info->locale = locale;
info->package = strdup(info->app_info->package);
+ if (!info->package) {
+ _LOGE("out of memory");
+ g_hash_table_destroy(list);
+ free(locale);
+ return PMINFO_R_ERROR;
+ }
/* just free list only */
g_hash_table_steal(list, (gconstpointer)appid);
return splashscreen;
}
-static gpointer __copy_components(gconstpointer src, gpointer data)
-{
- component_x *tmp = (component_x *)src;
- component_x *component;
-
- component = (component_x *)calloc(1, sizeof(component_x));
- if (component == NULL) {
- LOGE("memory alloc failed");
- *(int *)data = -1;
- return NULL;
- }
-
- if (tmp->id)
- component->id = strdup(tmp->id);
- if (tmp->type)
- component->type = strdup(tmp->type);
- if (tmp->launch_mode)
- component->launch_mode = strdup(tmp->launch_mode);
-
- return component;
-}
-
static int _appinfo_copy_appinfo(application_x **application, application_x *data)
{
application_x *app_info;
return PMINFO_R_ERROR;
}
- ret = 0;
- app_info->components = g_list_copy_deep(data->components,
- __copy_components, &ret);
- if (ret < 0) {
- LOGE("memory alloc failed");
- pkgmgrinfo_basic_free_application(app_info);
- return PMINFO_R_ERROR;
- }
-
*application = app_info;
return PMINFO_R_OK;
return PMINFO_R_OK;
}
-
-API int pkgmgrinfo_appinfo_foreach_component_info(pkgmgrinfo_appinfo_h handle,
- pkgmgrinfo_component_info_list_cb callback, void *user_data)
-{
- retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
- retvm_if(callback == NULL, PMINFO_R_EINVAL, "callback is NULL");
- pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
- pkgmgr_compinfo_x compinfo;
- GList *tmp;
-
- if (info->app_info == NULL)
- return PMINFO_R_ERROR;
-
- compinfo.appid = info->app_info->appid;
- for (tmp = info->app_info->components; tmp; tmp = tmp->next) {
- compinfo.comp_info = (component_x *)tmp->data;
- if (callback(&compinfo, user_data) < 0)
- break;
- }
-
- return PMINFO_R_OK;
-}