condition = NULL;
}
+ if (filter->list_metadata) {
+ len += strlen(" AND (");
+ strncat(buf, " AND (", MAX_QUERY_LEN - len - 1);
+ }
+ for (list = filter->list_metadata; list; list = list->next) {
+ joined |= __get_metadata_filter_condition(list->data,
+ &condition, bind_params);
+ if (condition == NULL)
+ continue;
+ len += strlen(condition);
+ strncat(buf, condition, sizeof(buf) - len - 1);
+ free(condition);
+ condition = NULL;
+
+ len += strlen(" OR ");
+ strncat(buf, " OR ", MAX_QUERY_LEN - len - 1);
+ }
+ if (filter->list_metadata) {
+ len += strlen("1=0)");
+ strncat(buf, "1=0)", MAX_QUERY_LEN - len - 1);
+ }
+
if (joined & E_PMINFO_APPINFO_JOIN_LOCALIZED_INFO) {
strncat(tmp_query, join_localized_info, MAX_QUERY_LEN - len - 1);
len += strlen(join_localized_info);
return PMINFO_R_ERROR;
}
+ if (pkgmgrinfo_appinfo_filter_add_bool(filter,
+ PMINFO_APPINFO_PROP_APP_CHECK_STORAGE, false)) {
+ pkgmgrinfo_appinfo_filter_destroy(filter);
+ return PMINFO_R_ERROR;
+ }
+
ret = _appinfo_get_filtered_foreach_appinfo(uid, filter, flag, app_func,
user_data);
_getuid(), flag, user_data);
}
-API int pkgmgrinfo_appinfo_get_usr_install_list(pkgmgrinfo_app_list_cb app_func,
- uid_t uid, void *user_data)
-{
- return pkgmgrinfo_appinfo_get_usr_installed_list_full(app_func,
- uid, PMINFO_APPINFO_GET_ALL, user_data);
-}
-
-API int pkgmgrinfo_appinfo_get_install_list(pkgmgrinfo_app_list_cb app_func,
- void *user_data)
-{
- return pkgmgrinfo_appinfo_get_usr_installed_list_full(app_func,
- _getuid(), PMINFO_APPINFO_GET_ALL, user_data);
-}
-
API int pkgmgrinfo_appinfo_get_usr_installed_list(
pkgmgrinfo_app_list_cb app_func, uid_t uid, void *user_data)
{
pkgmgrinfo_appinfo_metadata_filter_h handle,
const char *key, const char *value)
{
- int ret;
-
- ret = pkgmgrinfo_appinfo_filter_add_string(handle,
- PMINFO_APPINFO_PROP_APP_METADATA_KEY, key);
- if (ret != PMINFO_R_OK)
- return ret;
+ pkgmgrinfo_filter_x *filter = (pkgmgrinfo_filter_x *)handle;
+ pkgmgrinfo_metadata_node_x *node;
/* value can be NULL.
* In that case all apps with specified key should be displayed
*/
- if (value && strlen(value)) {
- ret = pkgmgrinfo_appinfo_filter_add_string(handle,
- PMINFO_APPINFO_PROP_APP_METADATA_VALUE, value);
- if (ret != PMINFO_R_OK)
- return ret;
+ if (key == NULL) {
+ LOGE("invalid parameter");
+ return PMINFO_R_EINVAL;
+ }
+
+ node = calloc(1, sizeof(pkgmgrinfo_metadata_node_x));
+ if (node == NULL) {
+ LOGE("out of memory");
+ return PMINFO_R_ERROR;
}
+ node->key = strdup(key);
+ if (value && strlen(value))
+ node->value = strdup(value);
+
+ filter->list_metadata = g_slist_append(filter->list_metadata,
+ (gpointer)node);
+
return PMINFO_R_OK;
}