Add capmgr_application_info_clone()
authorSangyoon Jang <jeremy.jang@samsung.com>
Mon, 29 Oct 2018 08:41:13 +0000 (17:41 +0900)
committer장상윤/Tizen Platform Lab(SR)/Engineer/삼성전자 <jeremy.jang@samsung.com>
Fri, 2 Nov 2018 01:26:28 +0000 (10:26 +0900)
Change-Id: I84233af4d2aef6ef9587b00cfeb331a240aa9fbe
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
include/capability_manager.h
src/client.cc

index a8affce..4f7019b 100644 (file)
@@ -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().
index de41c94..a6a08b7 100644 (file)
@@ -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())