From c9acaac17b739f6e4dce0cc16cc9bfaa8e3f7ba0 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Fri, 22 Apr 2016 10:57:37 +0900 Subject: [PATCH] add pkgmgrinfo_appinfo_get_metadata_value API Change-Id: I849d476dc4b83f4a98630cb3ae3f88e87036110c Signed-off-by: Junghyun Yeon --- include/pkgmgr-info.h | 37 +++++++++++++++++++++++++++++++++++++ src/pkgmgrinfo_appinfo.c | 25 +++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/include/pkgmgr-info.h b/include/pkgmgr-info.h index ab1ed59..ce0d75b 100644 --- a/include/pkgmgr-info.h +++ b/include/pkgmgr-info.h @@ -2572,6 +2572,43 @@ int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale, int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label); /** + * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value) + * @brief This API gets metadata value by given metadata key + * + * @par This API is for package-manager client application + * @par Sync (or) Async : Synchronous API + * + * @param[in] handle pointer to the application info handle + * @param[in] metadata_key metadata key + * @param[out] metadata_value pointer to hold metadata value + * @return 0 if success, error code(<0) if fail + * @retval PMINFO_R_OK success + * @retval PMINFO_R_EINVAL invalid argument + * @code +static int get_metadata_value(const char *appid, const char *metadata_key) +{ + int ret = 0; + pkgmgrinfo_appinfo_h handle = NULL; + char *metadata_value = NULL; + + ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle); + if (ret != PMINFO_R_OK) + return -1; + + ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value); + if (ret != PMINFO_R_OK) { + pkgmgrinfo_appinfo_destroy_appinfo(handle); + return -1; + } + + pkgmgrinfo_appinfo_destroy_appinfo(handle); + return 0; +} + * @endcode + */ +int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value); + +/** * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component) * @brief This API gets the component of the application * diff --git a/src/pkgmgrinfo_appinfo.c b/src/pkgmgrinfo_appinfo.c index 4004fc0..13c31ba 100644 --- a/src/pkgmgrinfo_appinfo.c +++ b/src/pkgmgrinfo_appinfo.c @@ -1691,6 +1691,31 @@ API int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *loca 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) +{ + 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"); + + GList *list_md = NULL; + metadata_x *metadata = NULL; + pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle; + + list_md = info->app_info->metadata; + + for (; list_md; list_md = list_md->next) { + metadata = (metadata_x *)list_md->data; + if (metadata && metadata->key) { + if (strcasecmp(metadata->key, metadata_key) == 0) { + *metadata_value = (char*)metadata->value; + return PMINFO_R_OK; + } + } + } + + return PMINFO_R_EINVAL; +} + static pkgmgrinfo_app_component __appcomponent_convert(const char *comp) { if (strcasecmp(comp, "uiapp") == 0) -- 2.7.4