From: Sangyoon Jang Date: Mon, 29 Oct 2018 08:41:13 +0000 (+0900) Subject: Add capmgr_application_info_clone() X-Git-Tag: accepted/tizen/unified/20190215.055035~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2c44fa4f05f198984a256c348a520ee5cb058b07;p=platform%2Fcore%2Fapi%2Fcapability-manager.git Add capmgr_application_info_clone() Change-Id: I84233af4d2aef6ef9587b00cfeb331a240aa9fbe Signed-off-by: Sangyoon Jang --- diff --git a/include/capability_manager.h b/include/capability_manager.h index a8affce..4f7019b 100644 --- a/include/capability_manager.h +++ b/include/capability_manager.h @@ -515,6 +515,21 @@ int capmgr_application_info_foreach_applications( void* user_data); /** + * @brief Clones the remote application information handle. + * @since_tizen 5.0 + * @param[in] remote_app_info The remote application info handle + * @param[out] remote_app_info_clone A newly created remote application information handle, if successfully cloned + * @return @c 0 on success, + * otherwise a negative error value + * @retval #CAPMGR_ERROR_NONE Successful + * @retval #CAPMGR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CAPMGR_ERROR_OUT_OF_MEMORY Out of memory + */ +int capmgr_application_info_clone( + const capmgr_application_info_h remote_app_info, + capmgr_application_info_h* remote_app_info_clone); + +/** * @brief Gets the application ID from given remote application information. * @since_tizen 5.0 * @remarks You must release @a appid using free(). diff --git a/src/client.cc b/src/client.cc index de41c94..a6a08b7 100644 --- a/src/client.cc +++ b/src/client.cc @@ -543,6 +543,30 @@ API int capmgr_app_control_send(capmgr_app_control_h app_control, return CAPMGR_ERROR_NONE; } +API int capmgr_application_info_clone( + const capmgr_application_info_h remote_app_info, + capmgr_application_info_h* remote_app_info_clone) { + if (!remote_app_info || !remote_app_info_clone) + return CAPMGR_ERROR_INVALID_PARAMETER; + + struct capmgr_application_info_s* clone; + try { + clone = new struct capmgr_application_info_s(); + } catch (const std::bad_alloc& e) { + LOG(ERROR) << e.what(); + return CAPMGR_ERROR_OUT_OF_MEMORY; + } + + clone->appid = remote_app_info->appid; + clone->pkgid = remote_app_info->pkgid; + clone->label = remote_app_info->label; + clone->version = remote_app_info->version; + + *remote_app_info_clone = clone; + + return CAPMGR_ERROR_NONE; +} + API int capmgr_application_info_get_appid( capmgr_application_info_h remote_app_info, char** appid) { if (!remote_app_info || !appid || remote_app_info->appid.empty())