Add Foreach depdency API for Archiveinfo
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_archiveinfo.c
index 33c5cd3..d020661 100644 (file)
@@ -80,6 +80,8 @@ API int pkgmgrinfo_archiveinfo_destroy_archiveinfo(
        }
 
        free(info->icon_buf);
+       g_list_free_full(info->privilege_list, free);
+       g_list_free_full(info->dependency_list, free);
        free(info);
 
        return PMINFO_R_OK;
@@ -226,3 +228,30 @@ API int pkgmgrinfo_archiveinfo_get_icon(pkgmgrinfo_archiveinfo_h handle,
 
        return PMINFO_R_OK;
 }
+
+API int pkgmgrinfo_archiveinfo_foreach_dependency(
+               pkgmgrinfo_archiveinfo_h handle,
+               pkgmgrinfo_pkg_dependency_list_cb callback, void *user_data)
+{
+       GList *tmp;
+       pkg_dependency_info_t *dependency_info;
+       package_manager_pkg_detail_info_t *info =
+               (package_manager_pkg_detail_info_t *)handle;
+
+       if (info == NULL || callback == NULL) {
+               _LOGE("invalid parameter");
+               return PMINFO_R_EINVAL;
+       }
+
+       for (tmp = info->dependency_list; tmp != NULL;
+                       tmp = g_list_next(tmp)) {
+               dependency_info = (pkg_dependency_info_t *)tmp->data;
+               if (callback(info->pkgid,
+                               dependency_info->pkgid,
+                               dependency_info->type,
+                               dependency_info->required_version,
+                               user_data) != 0)
+                       return PMINFO_R_ERROR;
+       }
+       return PMINFO_R_OK;
+}