32 #include "xbps_api_impl.h"
64 prop_array_t orphans_user;
73 struct orphan_data *od = arg;
76 prop_object_iterator_t iter;
77 const char *pkgdep, *curpkgname, *curpkgver;
79 unsigned int ndep = 0, cnt = 0;
80 bool automatic =
false;
88 prop_dictionary_get_bool(obj,
"automatic-install", &automatic);
92 prop_dictionary_get_cstring_nocopy(obj,
"pkgver", &curpkgver);
94 if (reqby == NULL || ((cnt = prop_array_count(reqby)) == 0)) {
98 prop_array_add(od->array, obj);
105 if (od->orphans_user != NULL && cnt == 1) {
106 for (i = 0; i < prop_array_count(od->orphans_user); i++) {
107 prop_array_get_cstring_nocopy(od->orphans_user,
110 prop_array_add(od->array, obj);
115 iter = prop_array_iterator(reqby);
124 while ((obj2 = prop_object_iterator_next(iter)) != NULL) {
125 pkgdep = prop_string_cstring_nocopy(obj2);
126 if (pkgdep == NULL) {
127 prop_object_iterator_release(iter);
130 if (xbps_find_pkg_in_array(od->array, pkgdep))
132 if (od->orphans_user == NULL)
136 if (pkgdepname == NULL) {
137 prop_object_iterator_release(iter);
140 for (i = 0; i < prop_array_count(od->orphans_user); i++) {
141 prop_array_get_cstring_nocopy(od->orphans_user,
143 if (strcmp(curpkgname, pkgdepname) == 0) {
150 prop_object_iterator_release(iter);
154 if (!prop_array_add(od->array, obj))
163 prop_array_t array = NULL;
164 struct orphan_data od;
170 if ((od.array = prop_array_create()) == NULL)
176 od.orphans_user = orphans_user;
180 prop_object_release(od.array);
183 array = prop_array_copy(od.array);
184 prop_array_make_immutable(array);
185 prop_object_release(od.array);