X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fpkgmgrinfo_appinfo.c;h=8ea2611e1ddde83155266a4cb947272379937c02;hb=0f86abcf802cdf14ef71d6b55e6c689a3b6debd2;hp=0c2a5796003dfac45c5e119c3f45e06c4ce9649e;hpb=8905b60d211029b2bd6431996598da0070118051;p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git diff --git a/src/pkgmgrinfo_appinfo.c b/src/pkgmgrinfo_appinfo.c index 0c2a579..8ea2611 100644 --- a/src/pkgmgrinfo_appinfo.c +++ b/src/pkgmgrinfo_appinfo.c @@ -7,7 +7,6 @@ #include #include -#include #include #include "pkgmgr-info.h" @@ -37,7 +36,6 @@ static void __cleanup_appinfo(pkgmgr_appinfo_x *data) pkgmgrinfo_basic_free_application(info->app_info); free((void *)info); } - return; } static void __free_applications(gpointer data) @@ -66,7 +64,8 @@ static bool __check_disable_filter_exist(pkgmgrinfo_filter_x *filter, if (filter == NULL) return false; - link = g_slist_find_custom(filter->list, GINT_TO_POINTER(type), __disable_chk_func); + link = g_slist_find_custom(filter->list, + GINT_TO_POINTER(type), __disable_chk_func); if (link) return true; @@ -81,8 +80,8 @@ static int _pkgmgrinfo_get_appinfo(const char *appid, uid_t uid, pkgmgr_appinfo_x *info; if (appid == NULL || filter == NULL || handle == NULL) { - LOGE("invalid parameter"); - return PMINFO_R_EINVAL; + LOGE("invalid parameter"); + return PMINFO_R_EINVAL; } list = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, @@ -90,15 +89,15 @@ static int _pkgmgrinfo_get_appinfo(const char *appid, uid_t uid, if (list == NULL) return PMINFO_R_ERROR; - // TODO: need to use pkginfo-client APIs - ret = _appinfo_get_applications(uid, uid, filter, + ret = _appinfo_get_applications(uid, filter, PMINFO_APPINFO_GET_ALL, list); if (ret != PMINFO_R_OK) { g_hash_table_destroy(list); return ret; } - if (!g_hash_table_size(list)) { + if (!g_hash_table_size(list) || !g_hash_table_lookup(list, appid) || + ((application_x *)g_hash_table_lookup(list, appid))->package == NULL) { _LOGD("appinfo for [%s] is not existed for user [%d]", appid, uid); g_hash_table_destroy(list); @@ -113,17 +112,17 @@ static int _pkgmgrinfo_get_appinfo(const char *appid, uid_t uid, } 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); + info->locale = strdup(info->app_info->locale); + if (!info->locale) { + _LOGE("out of memory"); g_hash_table_destroy(list); free(info); - return PMINFO_R_ENOENT; + return PMINFO_R_ERROR; } - info->locale = strdup(info->app_info->locale); info->package = strdup(info->app_info->package); - if (!info->package || !info->locale) { + if (!info->package) { _LOGE("out of memory"); + free(info->locale); g_hash_table_destroy(list); free(info); return PMINFO_R_ERROR; @@ -138,8 +137,8 @@ static int _pkgmgrinfo_get_appinfo(const char *appid, uid_t uid, return ret; } -API int pkgmgrinfo_appinfo_get_usr_disabled_appinfo(const char *appid, uid_t uid, - pkgmgrinfo_appinfo_h *handle) +API int pkgmgrinfo_appinfo_get_usr_disabled_appinfo( + const char *appid, uid_t uid, pkgmgrinfo_appinfo_h *handle) { int ret; pkgmgrinfo_appinfo_filter_h filter; @@ -173,9 +172,31 @@ API int pkgmgrinfo_appinfo_get_usr_disabled_appinfo(const char *appid, uid_t uid return ret; } -API int pkgmgrinfo_appinfo_get_disabled_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle) +API int pkgmgrinfo_appinfo_get_disabled_appinfo( + const char *appid, pkgmgrinfo_appinfo_h *handle) { - return pkgmgrinfo_appinfo_get_usr_disabled_appinfo(appid, _getuid(), handle); + return pkgmgrinfo_appinfo_get_usr_disabled_appinfo( + appid, _getuid(), handle); +} + +static char *__get_real_appid(const char *appid) +{ + char *str; + char *saveptr; + char *token; + + str = strdup(appid); + if (str == NULL) + return NULL; + + token = strtok_r(str, "::", &saveptr); + if (token == NULL) + return str; + + LOGD("Real appid = %s", token); + token = strdup(token); + free(str); + return token; } API int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, @@ -183,6 +204,7 @@ API int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, { int ret; pkgmgrinfo_appinfo_filter_h filter; + char *real_appid; if (appid == NULL || handle == NULL) { LOGE("invalid parameter"); @@ -193,10 +215,18 @@ API int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, if (ret != PMINFO_R_OK) return ret; + real_appid = __get_real_appid(appid); + if (real_appid == NULL) { + LOGE("Out of memory"); + pkgmgrinfo_appinfo_filter_destroy(filter); + return PMINFO_R_ERROR; + } + ret = pkgmgrinfo_appinfo_filter_add_string(filter, - PMINFO_APPINFO_PROP_APP_ID, appid); + PMINFO_APPINFO_PROP_APP_ID, real_appid); if (ret != PMINFO_R_OK) { pkgmgrinfo_appinfo_filter_destroy(filter); + free(real_appid); return PMINFO_R_ERROR; } @@ -204,6 +234,7 @@ API int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, PMINFO_APPINFO_PROP_APP_DISABLE, false); if (ret != PMINFO_R_OK) { pkgmgrinfo_appinfo_filter_destroy(filter); + free(real_appid); return PMINFO_R_ERROR; } @@ -211,15 +242,18 @@ API int pkgmgrinfo_appinfo_get_usr_appinfo(const char *appid, uid_t uid, PMINFO_APPINFO_PROP_PKG_DISABLE, false); if (ret != PMINFO_R_OK) { pkgmgrinfo_appinfo_filter_destroy(filter); + free(real_appid); return PMINFO_R_ERROR; } - ret = _pkgmgrinfo_get_appinfo(appid, uid, filter, handle); + ret = _pkgmgrinfo_get_appinfo(real_appid, uid, filter, handle); + free(real_appid); pkgmgrinfo_appinfo_filter_destroy(filter); return ret; } -API int pkgmgrinfo_appinfo_get_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle) +API int pkgmgrinfo_appinfo_get_appinfo( + const char *appid, pkgmgrinfo_appinfo_h *handle) { return pkgmgrinfo_appinfo_get_usr_appinfo(appid, _getuid(), handle); } @@ -259,7 +293,8 @@ API int pkgmgrinfo_appinfo_get_usr_all_appinfo(const char *appid, uid_t uid, return ret; } -API int pkgmgrinfo_appinfo_get_all_appinfo(const char *appid, pkgmgrinfo_appinfo_h *handle) +API int pkgmgrinfo_appinfo_get_all_appinfo( + const char *appid, pkgmgrinfo_appinfo_h *handle) { return pkgmgrinfo_appinfo_get_usr_all_appinfo(appid, _getuid(), handle); } @@ -421,7 +456,32 @@ static gpointer __copy_splashscreens(gconstpointer src, gpointer data) return splashscreen; } -static int _appinfo_copy_appinfo(application_x **application, application_x *data) +static gpointer __copy_res_control(gconstpointer src, gpointer data) +{ + res_control_x *tmp = (res_control_x *)src; + res_control_x *res_control; + + res_control = (res_control_x *)calloc(1, sizeof(res_control_x)); + if (res_control == NULL) { + LOGE("memory alloc failed"); + *(int *)data = -1; + return NULL; + } + + if (tmp->res_type) + res_control->res_type = strdup(tmp->res_type); + if (tmp->min_res_version) + res_control->min_res_version = strdup(tmp->min_res_version); + if (tmp->max_res_version) + res_control->max_res_version = strdup(tmp->max_res_version); + if (tmp->auto_close) + res_control->auto_close = strdup(tmp->auto_close); + + return res_control; +} + +static int _appinfo_copy_appinfo( + application_x **application, application_x *data) { application_x *app_info; int ret; @@ -465,7 +525,8 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat if (data->landscapeimg != NULL) app_info->landscapeimg = strdup(data->landscapeimg); if (data->guestmode_visibility != NULL) - app_info->guestmode_visibility = strdup(data->guestmode_visibility); + app_info->guestmode_visibility = + strdup(data->guestmode_visibility); if (data->component != NULL) app_info->component = strdup(data->component); if (data->permission_type != NULL) @@ -497,7 +558,8 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat if (data->effective_appid != NULL) app_info->effective_appid = strdup(data->effective_appid); if (data->splash_screen_display != NULL) - app_info->splash_screen_display = strdup(data->splash_screen_display); + app_info->splash_screen_display = + strdup(data->splash_screen_display); /* GList */ ret = 0; @@ -525,7 +587,17 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat } ret = 0; - app_info->metadata = g_list_copy_deep(data->metadata, __copy_metadata, &ret); + app_info->metadata = g_list_copy_deep(data->metadata, + __copy_metadata, &ret); + if (ret < 0) { + LOGE("memory alloc failed"); + pkgmgrinfo_basic_free_application(app_info); + return PMINFO_R_ERROR; + } + + ret = 0; + app_info->datacontrol = g_list_copy_deep(data->datacontrol, + __copy_datacontrol, &ret); if (ret < 0) { LOGE("memory alloc failed"); pkgmgrinfo_basic_free_application(app_info); @@ -533,7 +605,8 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat } ret = 0; - app_info->datacontrol = g_list_copy_deep(data->datacontrol, __copy_datacontrol, &ret); + app_info->appcontrol = g_list_copy_deep(data->appcontrol, + __copy_appcontrol, &ret); if (ret < 0) { LOGE("memory alloc failed"); pkgmgrinfo_basic_free_application(app_info); @@ -541,7 +614,9 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat } ret = 0; - app_info->appcontrol = g_list_copy_deep(data->appcontrol, __copy_appcontrol, &ret); + app_info->background_category = + g_list_copy_deep(data->background_category, + __copy_str, &ret); if (ret < 0) { LOGE("memory alloc failed"); pkgmgrinfo_basic_free_application(app_info); @@ -549,7 +624,8 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat } ret = 0; - app_info->background_category = g_list_copy_deep(data->background_category, __copy_str, &ret); + app_info->splashscreens = g_list_copy_deep(data->splashscreens, + __copy_splashscreens, &ret); if (ret < 0) { LOGE("memory alloc failed"); pkgmgrinfo_basic_free_application(app_info); @@ -557,7 +633,7 @@ static int _appinfo_copy_appinfo(application_x **application, application_x *dat } ret = 0; - app_info->splashscreens = g_list_copy_deep(data->splashscreens, __copy_splashscreens, &ret); + app_info->res_control = g_list_copy_deep(data->res_control, __copy_res_control, &ret); if (ret < 0) { LOGE("memory alloc failed"); pkgmgrinfo_basic_free_application(app_info); @@ -607,7 +683,8 @@ API int pkgmgrinfo_appinfo_clone_appinfo(pkgmgrinfo_appinfo_h handle, } static int _appinfo_get_filtered_foreach_appinfo(uid_t uid, - pkgmgrinfo_filter_x *filter, int flag, pkgmgrinfo_app_list_cb app_list_cb, + pkgmgrinfo_filter_x *filter, int flag, + pkgmgrinfo_app_list_cb app_list_cb, void *user_data) { application_x *app; @@ -622,9 +699,9 @@ static int _appinfo_get_filtered_foreach_appinfo(uid_t uid, if (list == NULL) return PMINFO_R_ERROR; - ret = _appinfo_get_applications(uid, uid, filter, + ret = _appinfo_get_applications(uid, filter, flag | PMINFO_APPINFO_GET_BASICINFO, list); - if (ret != PMINFO_R_OK) { + if (ret == PMINFO_R_ERROR) { g_hash_table_destroy(list); return ret; } @@ -702,7 +779,8 @@ API int pkgmgrinfo_appinfo_get_list(pkgmgrinfo_pkginfo_h handle, pkgmgrinfo_app_component component, pkgmgrinfo_app_list_cb app_func, void *user_data) { - return pkgmgrinfo_appinfo_get_usr_list(handle, component, app_func, user_data, _getuid()); + return pkgmgrinfo_appinfo_get_usr_list(handle, + component, app_func, user_data, _getuid()); } API int pkgmgrinfo_appinfo_get_usr_installed_list_full( @@ -801,7 +879,8 @@ API int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid) pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(appid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(appid == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->appid == NULL) return PMINFO_R_ERROR; @@ -810,12 +889,14 @@ API int pkgmgrinfo_appinfo_get_appid(pkgmgrinfo_appinfo_h handle, char **appid) return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_pkgname(pkgmgrinfo_appinfo_h handle, char **pkg_name) +API int pkgmgrinfo_appinfo_get_pkgname( + pkgmgrinfo_appinfo_h handle, char **pkg_name) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(pkg_name == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(pkg_name == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->package == NULL) return PMINFO_R_ERROR; @@ -830,7 +911,8 @@ API int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid) pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(pkgid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(pkgid == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->package == NULL) return PMINFO_R_ERROR; @@ -840,10 +922,12 @@ API int pkgmgrinfo_appinfo_get_pkgid(pkgmgrinfo_appinfo_h handle, char **pkgid) return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_pkgtype(pkgmgrinfo_appinfo_h handle, char **pkgtype) +API int pkgmgrinfo_appinfo_get_pkgtype( + pkgmgrinfo_appinfo_h handle, char **pkgtype) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(pkgtype == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(pkgtype == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; *pkgtype = (char *)info->app_info->package_type; @@ -856,7 +940,8 @@ API int pkgmgrinfo_appinfo_get_exec(pkgmgrinfo_appinfo_h handle, char **exec) pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(exec == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(exec == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->exec == NULL) return PMINFO_R_ERROR; @@ -872,7 +957,8 @@ API int pkgmgrinfo_appinfo_get_icon(pkgmgrinfo_appinfo_h handle, char **icon) pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(icon == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(icon == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -904,7 +990,8 @@ API int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label) GList *tmp; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(label == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(label == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -939,11 +1026,13 @@ API int pkgmgrinfo_appinfo_get_label(pkgmgrinfo_appinfo_h handle, char **label) return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label) +API int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, + const char *locale, uid_t uid, char **label) { char *val; - retvm_if(appid == NULL || locale == NULL || label == NULL, PMINFO_R_EINVAL, "Argument is NULL"); + retvm_if(appid == NULL || locale == NULL || label == NULL, + PMINFO_R_EINVAL, "Argument is NULL"); val = _appinfo_get_localed_label(appid, locale, uid); if (val == NULL) return PMINFO_R_ERROR; @@ -952,16 +1041,21 @@ API int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char * return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, char **label) +API int pkgmgrinfo_appinfo_get_localed_label( + const char *appid, const char *locale, char **label) { - return pkgmgrinfo_appinfo_usr_get_localed_label(appid, locale, _getuid(), label); + return pkgmgrinfo_appinfo_usr_get_localed_label( + appid, locale, _getuid(), label); } -API int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value) +API int pkgmgrinfo_appinfo_get_metadata_value( + pkgmgrinfo_appinfo_h handle, const char *metadata_key, + char **metadata_value) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); retvm_if(metadata_key == NULL, PMINFO_R_EINVAL, "metadata_key is NULL"); - retvm_if(metadata_value == NULL, PMINFO_R_EINVAL, "metadata_value is NULL"); + retvm_if(metadata_value == NULL, PMINFO_R_EINVAL, + "metadata_value is NULL"); GList *list_md = NULL; metadata_x *metadata = NULL; @@ -976,7 +1070,8 @@ API int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const if (metadata->value == NULL) *metadata_value = ""; else - *metadata_value = (char *)metadata->value; + *metadata_value = + (char *)metadata->value; return PMINFO_R_OK; } } @@ -1019,13 +1114,16 @@ static const char *__appcomponent_str(pkgmgrinfo_app_component comp) } } -API int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component) +API int pkgmgrinfo_appinfo_get_component( + pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_app_component *component) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; int comp; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(component == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(component == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -1039,12 +1137,14 @@ API int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_type) +API int pkgmgrinfo_appinfo_get_apptype( + pkgmgrinfo_appinfo_h handle, char **app_type) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(app_type == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(app_type == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->type == NULL) return PMINFO_R_ERROR; @@ -1053,7 +1153,8 @@ API int pkgmgrinfo_appinfo_get_apptype(pkgmgrinfo_appinfo_h handle, char **app_t return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, char **icon) +API int pkgmgrinfo_appinfo_get_notification_icon( + pkgmgrinfo_appinfo_h handle, char **icon) { char *val; icon_x *ptr; @@ -1061,7 +1162,8 @@ API int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, ch pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(icon == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(icon == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -1081,13 +1183,15 @@ API int pkgmgrinfo_appinfo_get_notification_icon(pkgmgrinfo_appinfo_h handle, ch return PMINFO_R_ERROR; } -API int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type) +API int pkgmgrinfo_appinfo_get_recent_image_type( + pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_recentimage *type) { char *val; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(type == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(type == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->recentimage == NULL) return PMINFO_R_ERROR; @@ -1103,7 +1207,8 @@ API int pkgmgrinfo_appinfo_get_recent_image_type(pkgmgrinfo_appinfo_h handle, pk return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char **preview_img) +API int pkgmgrinfo_appinfo_get_preview_image( + pkgmgrinfo_appinfo_h handle, char **preview_img) { char *val; image_x *ptr; @@ -1111,7 +1216,8 @@ API int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char * pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(preview_img == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(preview_img == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -1131,13 +1237,16 @@ API int pkgmgrinfo_appinfo_get_preview_image(pkgmgrinfo_appinfo_h handle, char * return PMINFO_R_ERROR; } -API int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_permission_type *permission) +API int pkgmgrinfo_appinfo_get_permission_type( + pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_permission_type *permission) { const char *val; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(permission == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(permission == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); val = info->app_info->permission_type; if (val == NULL) @@ -1153,12 +1262,14 @@ API int pkgmgrinfo_appinfo_get_permission_type(pkgmgrinfo_appinfo_h handle, pkgm return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char **component_type) +API int pkgmgrinfo_appinfo_get_component_type( + pkgmgrinfo_appinfo_h handle, char **component_type) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(component_type == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(component_type == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->component_type == NULL) return PMINFO_R_ERROR; @@ -1168,13 +1279,16 @@ API int pkgmgrinfo_appinfo_get_component_type(pkgmgrinfo_appinfo_h handle, char return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_hwacceleration *hwacceleration) +API int pkgmgrinfo_appinfo_get_hwacceleration( + pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_app_hwacceleration *hwacceleration) { char *val; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(hwacceleration == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(hwacceleration == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->hwacceleration == NULL) return PMINFO_R_ERROR; @@ -1190,13 +1304,16 @@ API int pkgmgrinfo_appinfo_get_hwacceleration(pkgmgrinfo_appinfo_h handle, pkgmg return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_screenreader *screenreader) +API int pkgmgrinfo_appinfo_get_screenreader( + pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_app_screenreader *screenreader) { char *val; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(screenreader == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(screenreader == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL || info->app_info->screenreader == NULL) return PMINFO_R_ERROR; @@ -1212,13 +1329,17 @@ API int pkgmgrinfo_appinfo_get_screenreader(pkgmgrinfo_appinfo_h handle, pkgmgri return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **portrait_img, char **landscape_img) +API int pkgmgrinfo_appinfo_get_effectimage( + pkgmgrinfo_appinfo_h handle, char **portrait_img, + char **landscape_img) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(portrait_img == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); - retvm_if(landscape_img == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(portrait_img == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); + retvm_if(landscape_img == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -1236,7 +1357,8 @@ API int pkgmgrinfo_appinfo_get_effectimage(pkgmgrinfo_appinfo_h handle, char **p return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, char **effectimage_type) +API int pkgmgrinfo_appinfo_get_effectimage_type( + pkgmgrinfo_appinfo_h handle, char **effectimage_type) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1253,12 +1375,14 @@ API int pkgmgrinfo_appinfo_get_effectimage_type(pkgmgrinfo_appinfo_h handle, cha return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char **submode_mainid) +API int pkgmgrinfo_appinfo_get_submode_mainid( + pkgmgrinfo_appinfo_h handle, char **submode_mainid) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(submode_mainid == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(submode_mainid == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); if (info->app_info == NULL) return PMINFO_R_ERROR; @@ -1271,18 +1395,22 @@ API int pkgmgrinfo_appinfo_get_submode_mainid(pkgmgrinfo_appinfo_h handle, char return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_installed_storage *storage) +API int pkgmgrinfo_appinfo_get_installed_storage_location( + pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_installed_storage *storage) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info && info->app_info->installed_storage) { - if (strcmp(info->app_info->installed_storage, "installed_internal") == 0) + if (strcmp(info->app_info->installed_storage, + "installed_internal") == 0) *storage = PMINFO_INTERNAL_STORAGE; - else if (strcmp(info->app_info->installed_storage, "installed_external") == 0) - *storage = PMINFO_EXTERNAL_STORAGE; - else - return PMINFO_R_ERROR; + else if (strcmp(info->app_info->installed_storage, + "installed_external") == 0) + *storage = PMINFO_EXTERNAL_STORAGE; + else + return PMINFO_R_ERROR; } else { return PMINFO_R_ERROR; } @@ -1290,12 +1418,14 @@ API int pkgmgrinfo_appinfo_get_installed_storage_location(pkgmgrinfo_appinfo_h h return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_launch_mode(pkgmgrinfo_appinfo_h handle, char **mode) +API int pkgmgrinfo_appinfo_get_launch_mode( + pkgmgrinfo_appinfo_h handle, char **mode) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(mode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(mode == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); if (info->app_info->launch_mode == NULL) return PMINFO_R_ERROR; @@ -1305,7 +1435,8 @@ API int pkgmgrinfo_appinfo_get_launch_mode(pkgmgrinfo_appinfo_h handle, char **m return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **alias_appid) +API int pkgmgrinfo_appinfo_get_alias_appid( + pkgmgrinfo_appinfo_h handle, char **alias_appid) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1322,7 +1453,8 @@ API int pkgmgrinfo_appinfo_get_alias_appid(pkgmgrinfo_appinfo_h handle, char **a return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char **effective_appid) +API int pkgmgrinfo_appinfo_get_effective_appid( + pkgmgrinfo_appinfo_h handle, char **effective_appid) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1342,7 +1474,8 @@ API int pkgmgrinfo_appinfo_get_effective_appid(pkgmgrinfo_appinfo_h handle, char return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_name) +API int pkgmgrinfo_appinfo_get_tep_name( + pkgmgrinfo_appinfo_h handle, char **tep_name) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1362,7 +1495,8 @@ API int pkgmgrinfo_appinfo_get_tep_name(pkgmgrinfo_appinfo_h handle, char **tep_ return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char **zip_mount_file) +API int pkgmgrinfo_appinfo_get_zip_mount_file( + pkgmgrinfo_appinfo_h handle, char **zip_mount_file) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1382,7 +1516,8 @@ API int pkgmgrinfo_appinfo_get_zip_mount_file(pkgmgrinfo_appinfo_h handle, char return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **root_path) +API int pkgmgrinfo_appinfo_get_root_path( + pkgmgrinfo_appinfo_h handle, char **root_path) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1399,7 +1534,8 @@ API int pkgmgrinfo_appinfo_get_root_path(pkgmgrinfo_appinfo_h handle, char **roo return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **api_version) +API int pkgmgrinfo_appinfo_get_api_version( + pkgmgrinfo_appinfo_h handle, char **api_version) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1416,7 +1552,8 @@ API int pkgmgrinfo_appinfo_get_api_version(pkgmgrinfo_appinfo_h handle, char **a return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int *installed_time) +API int pkgmgrinfo_appinfo_get_installed_time( + pkgmgrinfo_appinfo_h handle, int *installed_time) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1425,7 +1562,8 @@ API int pkgmgrinfo_appinfo_get_installed_time(pkgmgrinfo_appinfo_h handle, int * return PMINFO_R_EINVAL; } - if (info->app_info == NULL || info->app_info->package_installed_time == NULL) + if (info->app_info == NULL || + info->app_info->package_installed_time == NULL) return PMINFO_R_ERROR; *installed_time = atoi(info->app_info->package_installed_time); @@ -1444,7 +1582,8 @@ API int pkgmgrinfo_appinfo_usr_get_datacontrol_info(const char *providerid, return PMINFO_R_EINVAL; } - ret = _appinfo_get_datacontrol_info(providerid, type, uid, appid, access); + ret = _appinfo_get_datacontrol_info( + providerid, type, uid, appid, access); /* FIXME: It should return PMINFO_R_ENOENT but to keep previous * implementation, return PMINFO_R_ERROR. This should be * modified later... @@ -1468,6 +1607,7 @@ API int pkgmgrinfo_appinfo_usr_get_datacontrol_appid(const char *providerid, uid_t uid, char **appid) { int ret; + if (providerid == NULL || appid == NULL) { LOGE("invalid parameter"); return PMINFO_R_EINVAL; @@ -1486,9 +1626,11 @@ API int pkgmgrinfo_appinfo_usr_get_datacontrol_appid(const char *providerid, return ret; } -API int pkgmgrinfo_appinfo_get_datacontrol_appid(const char *providerid, char **appid) +API int pkgmgrinfo_appinfo_get_datacontrol_appid( + const char *providerid, char **appid) { - return pkgmgrinfo_appinfo_usr_get_datacontrol_appid(providerid, _getuid(), appid); + return pkgmgrinfo_appinfo_usr_get_datacontrol_appid( + providerid, _getuid(), appid); } API int pkgmgrinfo_appinfo_usr_get_datacontrol_trusted_info( @@ -1497,13 +1639,14 @@ API int pkgmgrinfo_appinfo_usr_get_datacontrol_trusted_info( { int ret; char *trusted = NULL; + if (providerid == NULL || type == NULL || appid == NULL || is_trusted == NULL) { LOGE("invalid parameter"); return PMINFO_R_EINVAL; } - ret = _appinfo_get_datacontrol_trusted_info(providerid, type, uid, + ret = _appinfo_get_datacontrol_trusted_info(providerid, type, uid, appid, &trusted); /* FIXME: It should return PMINFO_R_ENOENT but to keep previous @@ -1536,13 +1679,14 @@ API int pkgmgrinfo_appinfo_usr_foreach_datacontrol_privileges( int count = 0; GList *list = NULL; GList *tmp = NULL; + if (providerid == NULL || type == NULL || privilege_func == NULL) { LOGE("invalid parameter"); return PMINFO_R_EINVAL; } ret = _appinfo_get_datacontrol_privileges(providerid, type, uid, &list); - if (PMINFO_R_ERROR) { + if (ret == PMINFO_R_ERROR) { g_list_free_full(list, free); return ret; } @@ -1567,12 +1711,15 @@ API int pkgmgrinfo_appinfo_foreach_datacontrol_privileges( providerid, type, privilege_func, user_data, _getuid()); } -API int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *support_mode) +API int pkgmgrinfo_appinfo_get_support_mode( + pkgmgrinfo_appinfo_h handle, int *support_mode) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(support_mode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(support_mode == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; + if (info->app_info->support_mode) *support_mode = atoi(info->app_info->support_mode); else @@ -1582,10 +1729,11 @@ API int pkgmgrinfo_appinfo_get_support_mode(pkgmgrinfo_appinfo_h handle, int *s } API int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle, - pkgmgrinfo_app_category_list_cb category_func, void *user_data) + pkgmgrinfo_app_category_list_cb category_func, void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(category_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL"); + retvm_if(category_func == NULL, PMINFO_R_EINVAL, + "Callback function is NULL"); int ret = -1; const char *category; GList *tmp; @@ -1606,10 +1754,11 @@ API int pkgmgrinfo_appinfo_foreach_category(pkgmgrinfo_appinfo_h handle, } API int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle, - pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data) + pkgmgrinfo_app_metadata_list_cb metadata_func, void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(metadata_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL"); + retvm_if(metadata_func == NULL, PMINFO_R_EINVAL, + "Callback function is NULL"); int ret = -1; metadata_x *ptr; GList *tmp; @@ -1623,7 +1772,8 @@ API int pkgmgrinfo_appinfo_foreach_metadata(pkgmgrinfo_appinfo_h handle, if (ptr == NULL) continue; if (ptr->key) { - ret = metadata_func(ptr->key, ptr->value ? ptr->value : "", user_data); + ret = metadata_func(ptr->key, ptr->value ? + ptr->value : "", user_data); if (ret < 0) break; } @@ -1645,7 +1795,7 @@ API int pkgmgrinfo_appinfo_usr_foreach_appcontrol_privileges(const char *appid, return PMINFO_R_EINVAL; } - ret = _appinfo_get_appcontrol_privileges(appid, operation, uid, + ret = _appinfo_get_appcontrol_privileges(appid, operation, uid, &privilege_list); if (ret == PMINFO_R_ENOENT) { return PMINFO_R_OK; @@ -1654,7 +1804,7 @@ API int pkgmgrinfo_appinfo_usr_foreach_appcontrol_privileges(const char *appid, return ret; } - for (tmp_list = privilege_list; tmp_list != NULL; + for (tmp_list = privilege_list; tmp_list != NULL; tmp_list = g_list_next(tmp_list)) { ret = privilege_func((char *)tmp_list->data, user_data); if (ret != 0) @@ -1675,10 +1825,11 @@ API int pkgmgrinfo_appinfo_foreach_appcontrol_privileges(const char *appid, } API int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle, - pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data) + pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(appcontrol_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL"); + retvm_if(appcontrol_func == NULL, PMINFO_R_EINVAL, + "Callback function is NULL"); int ret; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; appcontrol_x *appcontrol; @@ -1689,9 +1840,11 @@ API int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle, for (tmp = info->app_info->appcontrol; tmp; tmp = tmp->next) { appcontrol = (appcontrol_x *)tmp->data; - if (appcontrol == NULL || !strcasecmp(appcontrol->visibility, "remote-only")) + if (appcontrol == NULL || !strcasecmp( + appcontrol->visibility, "remote-only")) continue; - ret = appcontrol_func(appcontrol->operation, appcontrol->uri, appcontrol->mime, user_data); + ret = appcontrol_func(appcontrol->operation, + appcontrol->uri, appcontrol->mime, user_data); if (ret < 0) break; } @@ -1699,11 +1852,13 @@ API int pkgmgrinfo_appinfo_foreach_appcontrol(pkgmgrinfo_appinfo_h handle, return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_foreach_remote_appcontrol(pkgmgrinfo_appinfo_h handle, - pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data) +API int pkgmgrinfo_appinfo_foreach_remote_appcontrol( + pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_app_control_list_cb appcontrol_func, void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(appcontrol_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL"); + retvm_if(appcontrol_func == NULL, PMINFO_R_EINVAL, + "Callback function is NULL"); int ret; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; appcontrol_x *appcontrol; @@ -1714,9 +1869,11 @@ API int pkgmgrinfo_appinfo_foreach_remote_appcontrol(pkgmgrinfo_appinfo_h handle for (tmp = info->app_info->appcontrol; tmp; tmp = tmp->next) { appcontrol = (appcontrol_x *)tmp->data; - if (appcontrol == NULL || !strcasecmp(appcontrol->visibility, "local-only")) + if (appcontrol == NULL || !strcasecmp( + appcontrol->visibility, "local-only")) continue; - ret = appcontrol_func(appcontrol->operation, appcontrol->uri, appcontrol->mime, user_data); + ret = appcontrol_func(appcontrol->operation, appcontrol->uri, + appcontrol->mime, user_data); if (ret < 0) break; } @@ -1783,10 +1940,42 @@ API int pkgmgrinfo_appinfo_foreach_splash_screen(pkgmgrinfo_appinfo_h handle, return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodisplay) +API int pkgmgrinfo_appinfo_foreach_res_control(pkgmgrinfo_appinfo_h handle, + pkgmgrinfo_app_res_control_list_cb res_control_func, + void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(nodisplay == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(res_control_func == NULL, PMINFO_R_EINVAL, + "Callback function is NULL"); + int ret = -1; + res_control_x *res_control; + GList *tmp; + pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; + + if (info->app_info == NULL) + return PMINFO_R_ERROR; + + for (tmp = info->app_info->res_control; tmp; tmp = tmp->next) { + res_control = (res_control_x *)tmp->data; + if (res_control == NULL) + continue; + ret = res_control_func(res_control->res_type, + res_control->min_res_version, + res_control->max_res_version, + res_control->auto_close, + user_data); + if (ret < 0) + break; + } + return PMINFO_R_OK; +} + +API int pkgmgrinfo_appinfo_is_nodisplay( + pkgmgrinfo_appinfo_h handle, bool *nodisplay) +{ + retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); + retvm_if(nodisplay == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->nodisplay == NULL) @@ -1797,10 +1986,12 @@ API int pkgmgrinfo_appinfo_is_nodisplay(pkgmgrinfo_appinfo_h handle, bool *nodis return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multiple) +API int pkgmgrinfo_appinfo_is_multiple( + pkgmgrinfo_appinfo_h handle, bool *multiple) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(multiple == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(multiple == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->multiple == NULL) @@ -1811,10 +2002,12 @@ API int pkgmgrinfo_appinfo_is_multiple(pkgmgrinfo_appinfo_h handle, bool *multip return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h handle, bool *indicator_disp) +API int pkgmgrinfo_appinfo_is_indicator_display_allowed( + pkgmgrinfo_appinfo_h handle, bool *indicator_disp) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(indicator_disp == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(indicator_disp == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->indicatordisplay == NULL) @@ -1825,10 +2018,12 @@ API int pkgmgrinfo_appinfo_is_indicator_display_allowed(pkgmgrinfo_appinfo_h han return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *taskmanage) +API int pkgmgrinfo_appinfo_is_taskmanage( + pkgmgrinfo_appinfo_h handle, bool *taskmanage) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(taskmanage == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(taskmanage == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->taskmanage == NULL) @@ -1839,10 +2034,12 @@ API int pkgmgrinfo_appinfo_is_taskmanage(pkgmgrinfo_appinfo_h handle, bool *tas return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enabled) +API int pkgmgrinfo_appinfo_is_enabled( + pkgmgrinfo_appinfo_h handle, bool *enabled) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(enabled == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(enabled == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->is_disabled == NULL) @@ -1853,10 +2050,12 @@ API int pkgmgrinfo_appinfo_is_enabled(pkgmgrinfo_appinfo_h handle, bool *enable return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot) +API int pkgmgrinfo_appinfo_is_onboot( + pkgmgrinfo_appinfo_h handle, bool *onboot) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(onboot == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(onboot == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->onboot == NULL) @@ -1867,10 +2066,12 @@ API int pkgmgrinfo_appinfo_is_onboot(pkgmgrinfo_appinfo_h handle, bool *onboot) return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *autorestart) +API int pkgmgrinfo_appinfo_is_autorestart( + pkgmgrinfo_appinfo_h handle, bool *autorestart) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(autorestart == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(autorestart == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->autorestart == NULL) @@ -1881,10 +2082,12 @@ API int pkgmgrinfo_appinfo_is_autorestart(pkgmgrinfo_appinfo_h handle, bool *au return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainapp) +API int pkgmgrinfo_appinfo_is_mainapp( + pkgmgrinfo_appinfo_h handle, bool *mainapp) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(mainapp == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(mainapp == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->mainapp == NULL) @@ -1895,10 +2098,12 @@ API int pkgmgrinfo_appinfo_is_mainapp(pkgmgrinfo_appinfo_h handle, bool *mainap return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload) +API int pkgmgrinfo_appinfo_is_preload( + pkgmgrinfo_appinfo_h handle, bool *preload) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(preload == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(preload == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->preload == NULL) @@ -1909,10 +2114,12 @@ API int pkgmgrinfo_appinfo_is_preload(pkgmgrinfo_appinfo_h handle, bool *preload return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode) +API int pkgmgrinfo_appinfo_is_submode( + pkgmgrinfo_appinfo_h handle, bool *submode) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(submode == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(submode == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->submode == NULL) @@ -1923,7 +2130,8 @@ API int pkgmgrinfo_appinfo_is_submode(pkgmgrinfo_appinfo_h handle, bool *submode return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *process_pool) +API int pkgmgrinfo_appinfo_is_process_pool( + pkgmgrinfo_appinfo_h handle, bool *process_pool) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -1940,7 +2148,8 @@ API int pkgmgrinfo_appinfo_is_process_pool(pkgmgrinfo_appinfo_h handle, bool *pr return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_category_exist(pkgmgrinfo_appinfo_h handle, const char *category, bool *exist) +API int pkgmgrinfo_appinfo_is_category_exist( + pkgmgrinfo_appinfo_h handle, const char *category, bool *exist) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); retvm_if(category == NULL, PMINFO_R_EINVAL, "category is NULL"); @@ -2028,10 +2237,12 @@ API int pkgmgrinfo_appinfo_is_system(pkgmgrinfo_appinfo_h handle, bool *system) return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_is_disabled(pkgmgrinfo_appinfo_h handle, bool *disabled) +API int pkgmgrinfo_appinfo_is_disabled( + pkgmgrinfo_appinfo_h handle, bool *disabled) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(disabled == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL"); + retvm_if(disabled == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; if (info->app_info == NULL || info->app_info->is_disabled == NULL) @@ -2047,7 +2258,8 @@ API int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global) pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(global == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(global == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); if (info->app_info == NULL || info->app_info->for_all_users == NULL) return PMINFO_R_ERROR; @@ -2057,7 +2269,8 @@ API int pkgmgrinfo_appinfo_is_global(pkgmgrinfo_appinfo_h handle, bool *global) return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle, bool *splash_screen_display) +API int pkgmgrinfo_appinfo_get_splash_screen_display( + pkgmgrinfo_appinfo_h handle, bool *splash_screen_display) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -2066,15 +2279,18 @@ API int pkgmgrinfo_appinfo_get_splash_screen_display(pkgmgrinfo_appinfo_h handle return PMINFO_R_EINVAL; } - if (info->app_info == NULL || info->app_info->splash_screen_display == NULL) + if (info->app_info == NULL || + info->app_info->splash_screen_display == NULL) return PMINFO_R_ERROR; - *splash_screen_display = _get_bool_value(info->app_info->splash_screen_display); + *splash_screen_display = + _get_bool_value(info->app_info->splash_screen_display); return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_get_setup_appid(pkgmgrinfo_appinfo_h handle, char **setup_appid) +API int pkgmgrinfo_appinfo_get_setup_appid( + pkgmgrinfo_appinfo_h handle, char **setup_appid) { pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; @@ -2108,28 +2324,48 @@ API int pkgmgrinfo_appinfo_is_support_ambient(pkgmgrinfo_appinfo_h handle, return PMINFO_R_OK; } +API int pkgmgrinfo_appinfo_get_light_user_switch_mode( + pkgmgrinfo_appinfo_h handle, char **mode) +{ + pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; + + if (info == NULL || mode == NULL) { + _LOGE("Invalid parameter"); + return PMINFO_R_EINVAL; + } + + if (info->app_info == NULL || info->app_info->light_user_switch_mode == NULL) + return PMINFO_R_ERROR; + + *mode = info->app_info->light_user_switch_mode; + + return PMINFO_R_OK; +} + API int pkgmgrinfo_appinfo_destroy_appinfo(pkgmgrinfo_appinfo_h handle) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; + __cleanup_appinfo(info); return PMINFO_R_OK; } API int pkgmgrinfo_appinfo_filter_create(pkgmgrinfo_appinfo_filter_h *handle) { - return (pkgmgrinfo_pkginfo_filter_create(handle)); + return pkgmgrinfo_pkginfo_filter_create(handle); } API int pkgmgrinfo_appinfo_filter_destroy(pkgmgrinfo_appinfo_filter_h handle) { - return (pkgmgrinfo_pkginfo_filter_destroy(handle)); + return pkgmgrinfo_pkginfo_filter_destroy(handle); } static gint __compare_func(gconstpointer data1, gconstpointer data2) { pkgmgrinfo_node_x *node1 = (pkgmgrinfo_node_x *)data1; pkgmgrinfo_node_x *node2 = (pkgmgrinfo_node_x *)data2; + if (node1->prop == node2->prop) return 0; else if (node1->prop > node2->prop) @@ -2141,12 +2377,15 @@ static gint __compare_func(gconstpointer data1, gconstpointer data2) API int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, const char *property, const int value) { - retvm_if(handle == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); - retvm_if(property == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); + retvm_if(handle == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); + retvm_if(property == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); char buf[PKG_VALUE_STRING_LEN_MAX] = {'\0'}; char *val = NULL; GSList *link = NULL; int prop = -1; + prop = _pminfo_appinfo_convert_to_prop_int(property); if (prop < E_PMINFO_APPINFO_PROP_APP_MIN_INT || prop > E_PMINFO_APPINFO_PROP_APP_MAX_INT) { @@ -2154,7 +2393,8 @@ API int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, return PMINFO_R_EINVAL; } pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x *)handle; - pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)calloc(1, sizeof(pkgmgrinfo_node_x)); + pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)calloc(1, + sizeof(pkgmgrinfo_node_x)); if (node == NULL) { _LOGE("Out of Memory!!!\n"); return PMINFO_R_ERROR; @@ -2169,11 +2409,18 @@ API int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, } node->prop = prop; node->value = val; - /*If API is called multiple times for same property, we should override the previous values. - Last value set will be used for filtering.*/ - link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func); - if (link) + + /* + * If API is called multiple times for same property, + * we should override the previous values. + * Last value set will be used for filtering. + */ + link = g_slist_find_custom(filter->list, + (gconstpointer)node, __compare_func); + if (link) { + _pkgmgrinfo_node_destroy(link->data); filter->list = g_slist_delete_link(filter->list, link); + } filter->list = g_slist_append(filter->list, (gpointer)node); return PMINFO_R_OK; @@ -2182,11 +2429,14 @@ API int pkgmgrinfo_appinfo_filter_add_int(pkgmgrinfo_appinfo_filter_h handle, API int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, const char *property, const bool value) { - retvm_if(handle == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); - retvm_if(property == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); + retvm_if(handle == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); + retvm_if(property == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); char *val = NULL; GSList *link = NULL; int prop = -1; + prop = _pminfo_appinfo_convert_to_prop_bool(property); if (prop < E_PMINFO_APPINFO_PROP_APP_MIN_BOOL || prop > E_PMINFO_APPINFO_PROP_APP_MAX_BOOL) { @@ -2194,7 +2444,8 @@ API int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, return PMINFO_R_EINVAL; } pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x *)handle; - pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)calloc(1, sizeof(pkgmgrinfo_node_x)); + pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)calloc(1, + sizeof(pkgmgrinfo_node_x)); if (node == NULL) { _LOGE("Out of Memory!!!\n"); return PMINFO_R_ERROR; @@ -2211,11 +2462,17 @@ API int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, } node->prop = prop; node->value = val; - /*If API is called multiple times for same property, we should override the previous values. - Last value set will be used for filtering.*/ - link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func); - if (link) + /* + * If API is called multiple times for same property, + * we should override the previous values. + * Last value set will be used for filtering. + */ + link = g_slist_find_custom(filter->list, + (gconstpointer)node, __compare_func); + if (link) { + _pkgmgrinfo_node_destroy(link->data); filter->list = g_slist_delete_link(filter->list, link); + } filter->list = g_slist_append(filter->list, (gpointer)node); return PMINFO_R_OK; @@ -2224,9 +2481,12 @@ API int pkgmgrinfo_appinfo_filter_add_bool(pkgmgrinfo_appinfo_filter_h handle, API int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, const char *property, const char *value) { - retvm_if(handle == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); - retvm_if(property == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); - retvm_if(value == NULL, PMINFO_R_EINVAL, "Filter handle input parameter is NULL\n"); + retvm_if(handle == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); + retvm_if(property == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); + retvm_if(value == NULL, PMINFO_R_EINVAL, + "Filter handle input parameter is NULL\n"); char *val = NULL; pkgmgrinfo_node_x *ptr = NULL; char prev[PKG_STRING_LEN_MAX] = {'\0'}; @@ -2234,6 +2494,7 @@ API int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, GSList *link = NULL; int prop = -1; int ret; + prop = _pminfo_appinfo_convert_to_prop_str(property); if (prop < E_PMINFO_APPINFO_PROP_APP_MIN_STR || prop > E_PMINFO_APPINFO_PROP_APP_MAX_STR) { @@ -2241,7 +2502,8 @@ API int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, return PMINFO_R_EINVAL; } pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x *)handle; - pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)calloc(1, sizeof(pkgmgrinfo_node_x)); + pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)calloc(1, + sizeof(pkgmgrinfo_node_x)); if (node == NULL) { _LOGE("Out of Memory!!!\n"); return PMINFO_R_ERROR; @@ -2250,9 +2512,12 @@ API int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, switch (prop) { case E_PMINFO_APPINFO_PROP_APP_COMPONENT: node->value = strdup(value); - link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func); - if (link) + link = g_slist_find_custom(filter->list, + (gconstpointer)node, __compare_func); + if (link) { + _pkgmgrinfo_node_destroy(link->data); filter->list = g_slist_delete_link(filter->list, link); + } filter->list = g_slist_append(filter->list, (gpointer)node); break; case E_PMINFO_APPINFO_PROP_APP_CATEGORY: @@ -2263,13 +2528,16 @@ API int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, node = NULL; return PMINFO_R_ERROR; } - link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func); + link = g_slist_find_custom(filter->list, + (gconstpointer)node, __compare_func); if (link) { ptr = (pkgmgrinfo_node_x *)link->data; strncpy(prev, ptr->value, PKG_STRING_LEN_MAX - 1); _LOGI("Previous value is %s\n", prev); + _pkgmgrinfo_node_destroy(ptr); filter->list = g_slist_delete_link(filter->list, link); - ret = snprintf(temp, PKG_STRING_LEN_MAX - 1, "%s,%s", prev, value); + ret = snprintf(temp, PKG_STRING_LEN_MAX - 1, + "%s,%s", prev, value); if (ret < 0 || ret > PKG_STRING_LEN_MAX - 1) { _LOGE("snprintf fail\n"); free(node); @@ -2279,37 +2547,47 @@ API int pkgmgrinfo_appinfo_filter_add_string(pkgmgrinfo_appinfo_filter_h handle, strncpy(val, temp, PKG_STRING_LEN_MAX); _LOGI("New value is %s\n", val); node->value = val; - filter->list = g_slist_append(filter->list, (gpointer)node); + filter->list = g_slist_append( + filter->list, (gpointer)node); memset(temp, '\0', PKG_STRING_LEN_MAX); } else { snprintf(temp, PKG_STRING_LEN_MAX - 1, "%s", value); strncpy(val, temp, PKG_STRING_LEN_MAX); _LOGI("First value is %s\n", val); node->value = val; - filter->list = g_slist_append(filter->list, (gpointer)node); + filter->list = g_slist_append( + filter->list, (gpointer)node); memset(temp, '\0', PKG_STRING_LEN_MAX); } break; default: node->value = strndup(value, PKG_STRING_LEN_MAX - 1); - link = g_slist_find_custom(filter->list, (gconstpointer)node, __compare_func); - if (link) + link = g_slist_find_custom(filter->list, + (gconstpointer)node, __compare_func); + if (link) { + _pkgmgrinfo_node_destroy(link->data); filter->list = g_slist_delete_link(filter->list, link); + } filter->list = g_slist_append(filter->list, (gpointer)node); break; } return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid) +API int pkgmgrinfo_appinfo_usr_filter_count( + pkgmgrinfo_appinfo_filter_h handle, int *count, uid_t uid) { GHashTable *list; + int ret; + int query_count; + pkgmgrinfo_filter_x *filter; if (handle == NULL || count == NULL) { _LOGE("invalid parameter"); return PMINFO_R_EINVAL; } + filter = (pkgmgrinfo_filter_x *)handle; list = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, __free_applications); if (list == NULL) @@ -2333,14 +2611,18 @@ API int pkgmgrinfo_appinfo_usr_filter_count(pkgmgrinfo_appinfo_filter_h handle, } } - // TODO: use pkginfo-client APIs - *count = g_hash_table_size(list); + ret = _appinfo_get_applications(uid, filter, 0, list); + query_count = g_hash_table_size(list); g_hash_table_destroy(list); + if (ret == PMINFO_R_ERROR) + return ret; + *count = query_count; return PMINFO_R_OK; } -API int pkgmgrinfo_appinfo_filter_count(pkgmgrinfo_appinfo_filter_h handle, int *count) +API int pkgmgrinfo_appinfo_filter_count( + pkgmgrinfo_appinfo_filter_h handle, int *count) { return pkgmgrinfo_appinfo_usr_filter_count(handle, count, _getuid()); } @@ -2368,24 +2650,28 @@ API int pkgmgrinfo_appinfo_usr_filter_foreach_appinfo( return PMINFO_R_ERROR; } - return _appinfo_get_filtered_foreach_appinfo(uid, handle, PMINFO_APPINFO_GET_ALL, app_cb, - user_data); + return _appinfo_get_filtered_foreach_appinfo(uid, + handle, PMINFO_APPINFO_GET_ALL, app_cb, user_data); } -API int pkgmgrinfo_appinfo_filter_foreach_appinfo(pkgmgrinfo_appinfo_filter_h handle, - pkgmgrinfo_app_list_cb app_cb, void *user_data) +API int pkgmgrinfo_appinfo_filter_foreach_appinfo( + pkgmgrinfo_appinfo_filter_h handle, + pkgmgrinfo_app_list_cb app_cb, void *user_data) { - return pkgmgrinfo_appinfo_usr_filter_foreach_appinfo(handle, app_cb, user_data, _getuid()); + return pkgmgrinfo_appinfo_usr_filter_foreach_appinfo( + handle, app_cb, user_data, _getuid()); } -API int pkgmgrinfo_appinfo_metadata_filter_create(pkgmgrinfo_appinfo_metadata_filter_h *handle) +API int pkgmgrinfo_appinfo_metadata_filter_create( + pkgmgrinfo_appinfo_metadata_filter_h *handle) { - return (pkgmgrinfo_pkginfo_filter_create(handle)); + return pkgmgrinfo_pkginfo_filter_create(handle); } -API int pkgmgrinfo_appinfo_metadata_filter_destroy(pkgmgrinfo_appinfo_metadata_filter_h handle) +API int pkgmgrinfo_appinfo_metadata_filter_destroy( + pkgmgrinfo_appinfo_metadata_filter_h handle) { - return (pkgmgrinfo_pkginfo_filter_destroy(handle)); + return pkgmgrinfo_pkginfo_filter_destroy(handle); } API int pkgmgrinfo_appinfo_metadata_filter_add( @@ -2429,6 +2715,7 @@ API int pkgmgrinfo_appinfo_usr_metadata_filter_foreach( } pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x *)handle; + if (pkgmgrinfo_appinfo_filter_add_bool(filter, PMINFO_APPINFO_PROP_APP_DISABLE, false)) return PMINFO_R_ERROR; @@ -2437,7 +2724,8 @@ API int pkgmgrinfo_appinfo_usr_metadata_filter_foreach( PMINFO_APPINFO_PROP_PKG_DISABLE, false)) return PMINFO_R_ERROR; - return _appinfo_get_filtered_foreach_appinfo(uid, handle, PMINFO_APPINFO_GET_ALL, app_cb, + return _appinfo_get_filtered_foreach_appinfo(uid, handle, + PMINFO_APPINFO_GET_ALL, app_cb, user_data); } @@ -2449,13 +2737,15 @@ API int pkgmgrinfo_appinfo_metadata_filter_foreach( user_data, _getuid()); } -API int pkgmgrinfo_appinfo_is_guestmode_visibility(pkgmgrinfo_appinfo_h handle, bool *status) +API int pkgmgrinfo_appinfo_is_guestmode_visibility( + pkgmgrinfo_appinfo_h handle, bool *status) { const char *val; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL\n"); - retvm_if(status == NULL, PMINFO_R_EINVAL, "Argument supplied to hold return value is NULL\n"); + retvm_if(status == NULL, PMINFO_R_EINVAL, + "Argument supplied to hold return value is NULL\n"); val = info->app_info->guestmode_visibility; *status = _get_bool_value(val); @@ -2467,7 +2757,8 @@ API int pkgmgrinfo_appinfo_foreach_appcontrol_v2(pkgmgrinfo_appinfo_h handle, void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(appcontrol_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL"); + retvm_if(appcontrol_func == NULL, + PMINFO_R_EINVAL, "Callback function is NULL"); int ret; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; appcontrol_x *appcontrol; @@ -2479,7 +2770,8 @@ API int pkgmgrinfo_appinfo_foreach_appcontrol_v2(pkgmgrinfo_appinfo_h handle, for (tmp = info->app_info->appcontrol; tmp; tmp = tmp->next) { appcontrol = (appcontrol_x *)tmp->data; if (appcontrol == NULL || - !strcasecmp(appcontrol->visibility, "remote-only")) + !strcasecmp(appcontrol->visibility, + "remote-only")) continue; ret = appcontrol_func(appcontrol->operation, appcontrol->uri, appcontrol->mime, appcontrol->id, user_data); @@ -2496,7 +2788,8 @@ API int pkgmgrinfo_appinfo_foreach_remote_appcontrol_v2( void *user_data) { retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL"); - retvm_if(appcontrol_func == NULL, PMINFO_R_EINVAL, "Callback function is NULL"); + retvm_if(appcontrol_func == NULL, + PMINFO_R_EINVAL, "Callback function is NULL"); int ret; pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; appcontrol_x *appcontrol; @@ -2508,7 +2801,8 @@ API int pkgmgrinfo_appinfo_foreach_remote_appcontrol_v2( for (tmp = info->app_info->appcontrol; tmp; tmp = tmp->next) { appcontrol = (appcontrol_x *)tmp->data; if (appcontrol == NULL || - !strcasecmp(appcontrol->visibility, "local-only")) + !strcasecmp(appcontrol->visibility, + "local-only")) continue; ret = appcontrol_func(appcontrol->operation, appcontrol->uri, appcontrol->mime, appcontrol->id, user_data);