return 0;
}
-static int __send_sizeinfo_cb(const pkgmgrinfo_pkginfo_h handle,
- void *user_data)
-{
- int ret;
- char *pkgid;
- char *ext_image_path;
- char *ext_tep_path;
- int data_size = 0;
- int total_size = 0;
- char total_buf[MAX_PKG_BUF_LEN];
- char data_buf[MAX_PKG_BUF_LEN];
- pkgmgr_installer *pi = (pkgmgr_installer *)user_data;
-
- pkg_size_info_t temp_pkg_size_info = {0, };
-
- ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
- if (ret != PMINFO_R_OK) {
- LOGE("pkgmgrinfo_pkginfo_get_pkgid() failed");
- return -1;
- }
-
- ext_image_path = __get_external_image_path_by_handle(handle);
- ext_tep_path = __get_external_tep_path_by_handle(handle);
- ret = __get_pkg_size_info(pkgid, ext_image_path, ext_tep_path,
- &temp_pkg_size_info);
- if (ret < 0)
- LOGW("failed to get size of some path");
- /* even if it's an error, store all the valid result */
-
- if (ext_image_path)
- free(ext_image_path);
- if (ext_tep_path)
- free(ext_tep_path);
-
- total_size = temp_pkg_size_info.app_size +
- temp_pkg_size_info.data_size + temp_pkg_size_info.cache_size;
- data_size = temp_pkg_size_info.data_size +
- temp_pkg_size_info.cache_size;
-
- /* send size info to client */
- snprintf(total_buf, sizeof(total_buf), "%d", total_size);
- snprintf(data_buf, sizeof(data_buf), "%d", data_size);
-
- ret = pkgmgr_installer_send_signal(pi,
- PKGMGR_INSTALLER_GET_SIZE_KEY_STR,
- pkgid, data_buf, total_buf);
- if (ret)
- return ret;
-
- ret = pkgmgr_installer_send_signal_for_uid(pi, target_uid,
- PKGMGR_INSTALLER_GET_SIZE_KEY_STR,
- pkgid, data_buf, total_buf);
-
- return ret;
-}
-
static int __send_result_to_signal(pkgmgr_installer *pi, const char *req_key,
const char *pkgid, pkg_size_info_t *info)
{
else
size = info.app_size + info.data_size + info.cache_size;
break;
- case PM_GET_SIZE_INFO:
- /* send each result to signal */
- ret = pkgmgrinfo_pkginfo_get_usr_list_full(__send_sizeinfo_cb,
- PMINFO_PKGINFO_GET_BASICINFO, pi, target_uid);
- if (ret < 0)
- LOGE("failed to get all packages");
- break;
case PM_GET_PKG_SIZE_INFO:
/* send result to signal */
ret = __get_pkg_size_info(pkgid, ext_image_path, ext_tep_path,
LOGE("failed to write to fifo");
}
- /* Only PM_GET_SIZE_INFO type needs 'end' signal,
- * because the result is sent on each package's calculation.
- * So, the callback needs to know the end of results.
- * This is common operation since previous tizen version.
- * Related API : pkgmgr_client_request_size_info
- */
- if (get_type == PM_GET_SIZE_INFO) {
- if (pkgmgr_installer_send_signal(pi,
- PKGMGR_INSTALLER_GET_SIZE_KEY_STR,
- pkgid,
- PKGMGR_INSTALLER_GET_SIZE_KEY_STR,
- PKGMGR_INSTALLER_END_KEY_STR))
- LOGE("failed to send finished signal");
- if (pkgmgr_installer_send_signal_for_uid(pi, target_uid,
- PKGMGR_INSTALLER_GET_SIZE_KEY_STR,
- pkgid,
- PKGMGR_INSTALLER_GET_SIZE_KEY_STR,
- PKGMGR_INSTALLER_END_KEY_STR))
- LOGE("failed to send finished signal");
- }
-
if (ext_image_path)
free(ext_image_path);
if (ext_tep_path)