summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSangyoon Jang <jeremy.jang@samsung.com>2018-10-29 17:41:13 +0900
committer장상윤/Tizen Platform Lab(SR)/Engineer/삼성전자 <jeremy.jang@samsung.com>2018-11-02 10:26:28 +0900
commit2c44fa4f05f198984a256c348a520ee5cb058b07 (patch)
tree6f713c040625b1b950eadf9fe02a116ddea7bbdf
parent31f7aa294dc0dc72dffc1d4669ea7504428b0bf3 (diff)
downloadcapability-manager-2c44fa4f05f198984a256c348a520ee5cb058b07.tar.gz
capability-manager-2c44fa4f05f198984a256c348a520ee5cb058b07.tar.bz2
capability-manager-2c44fa4f05f198984a256c348a520ee5cb058b07.zip
Add capmgr_application_info_clone()
Change-Id: I84233af4d2aef6ef9587b00cfeb331a240aa9fbe Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
-rw-r--r--include/capability_manager.h15
-rw-r--r--src/client.cc24
2 files changed, 39 insertions, 0 deletions
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())