From dd2255e10ee944fc409dc54001962a7fea86657f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
Date: Fri, 28 Feb 2025 14:11:24 +0200
Subject: [PATCH] package: use apk_array_foreach

---
 src/package.c | 65 ++++++++++++++++-----------------------------------
 1 file changed, 20 insertions(+), 45 deletions(-)

diff --git a/src/package.c b/src/package.c
index 8001536d..fc1de78e 100644
--- a/src/package.c
+++ b/src/package.c
@@ -29,9 +29,7 @@
 
 struct apk_package *apk_pkg_get_installed(struct apk_name *name)
 {
-	struct apk_provider *p;
-
-	foreach_array_item(p, name->providers)
+	apk_array_foreach(p, name->providers)
 		if (p->pkg->name == name && p->pkg->ipkg != NULL)
 			return p->pkg;
 
@@ -67,7 +65,6 @@ struct apk_installed_package *apk_pkg_install(struct apk_database *db,
 void apk_pkg_uninstall(struct apk_database *db, struct apk_package *pkg)
 {
 	struct apk_installed_package *ipkg = pkg->ipkg;
-	char **trigger;
 	int i;
 
 	if (ipkg == NULL)
@@ -84,8 +81,8 @@ void apk_pkg_uninstall(struct apk_database *db, struct apk_package *pkg)
 	if (apk_array_len(ipkg->triggers) != 0) {
 		list_del(&ipkg->trigger_pkgs_list);
 		list_init(&ipkg->trigger_pkgs_list);
-		foreach_array_item(trigger, ipkg->triggers)
-			free(*trigger);
+		apk_array_foreach_item(trigger, ipkg->triggers)
+			free(trigger);
 	}
 	apk_string_array_free(&ipkg->triggers);
 	apk_string_array_free(&ipkg->pending_triggers);
@@ -198,9 +195,7 @@ int apk_deps_balloc(struct apk_dependency_array **deps, uint32_t capacity, struc
 
 void apk_deps_add(struct apk_dependency_array **deps, struct apk_dependency *dep)
 {
-	struct apk_dependency *d0;
-
-	foreach_array_item(d0, *deps) {
+	apk_array_foreach(d0, *deps) {
 		if (d0->name != dep->name) continue;
 		*d0 = *dep;
 		return;
@@ -211,9 +206,8 @@ void apk_deps_add(struct apk_dependency_array **deps, struct apk_dependency *dep
 void apk_deps_del(struct apk_dependency_array **pdeps, struct apk_name *name)
 {
 	struct apk_dependency_array *deps = *pdeps;
-	struct apk_dependency *d0;
 
-	foreach_array_item(d0, deps) {
+	apk_array_foreach(d0, deps) {
 		if (d0->name != name) continue;
 		size_t nlen = apk_array_len(deps) - 1;
 		*d0 = deps->item[nlen];
@@ -318,22 +312,17 @@ int apk_dep_is_materialized(const struct apk_dependency *dep, const struct apk_p
 
 int apk_dep_analyze(const struct apk_package *deppkg, struct apk_dependency *dep, struct apk_package *pkg)
 {
-	struct apk_dependency *p;
 	struct apk_provider provider;
 
-	if (pkg == NULL)
-		return APK_DEP_IRRELEVANT;
-
+	if (!pkg) return APK_DEP_IRRELEVANT;
 	if (dep->name == pkg->name)
 		return apk_dep_is_materialized(dep, pkg) ? APK_DEP_SATISFIES : APK_DEP_CONFLICTS;
 
-	foreach_array_item(p, pkg->provides) {
-		if (p->name != dep->name)
-			continue;
+	apk_array_foreach(p, pkg->provides) {
+		if (p->name != dep->name) continue;
 		provider = APK_PROVIDER_FROM_PROVIDES(pkg, p);
 		return apk_dep_is_provided(deppkg, dep, &provider) ? APK_DEP_SATISFIES : APK_DEP_CONFLICTS;
 	}
-
 	return APK_DEP_IRRELEVANT;
 }
 
@@ -353,11 +342,8 @@ void apk_blob_push_dep(apk_blob_t *to, struct apk_database *db, struct apk_depen
 
 void apk_blob_push_deps(apk_blob_t *to, struct apk_database *db, struct apk_dependency_array *deps)
 {
-	struct apk_dependency *dep;
-
-	if (deps == NULL) return;
-
-	foreach_array_item(dep, deps) {
+	if (!deps) return;
+	apk_array_foreach(dep, deps) {
 		if (dep != &deps->item[0]) apk_blob_push_blob(to, APK_BLOB_PTR_LEN(" ", 1));
 		apk_blob_push_dep(to, db, dep);
 	}
@@ -365,13 +351,12 @@ void apk_blob_push_deps(apk_blob_t *to, struct apk_database *db, struct apk_depe
 
 int apk_deps_write_layer(struct apk_database *db, struct apk_dependency_array *deps, struct apk_ostream *os, apk_blob_t separator, unsigned layer)
 {
-	struct apk_dependency *dep;
 	apk_blob_t blob;
 	char tmp[256];
 	int n = 0;
 
 	if (deps == NULL) return 0;
-	foreach_array_item(dep, deps) {
+	apk_array_foreach(dep, deps) {
 		if (layer != -1 && dep->layer != layer) continue;
 
 		blob = APK_BLOB_BUF(tmp);
@@ -965,7 +950,6 @@ int apk_pkg_replaces_dir(const struct apk_package *a, const struct apk_package *
 
 int apk_pkg_replaces_file(const struct apk_package *a, const struct apk_package *b)
 {
-	struct apk_dependency *dep;
 	int a_prio = -1, b_prio = -1;
 
 	/* Overlay file? Replace the ownership, but extraction will keep the overlay file. */
@@ -978,7 +962,7 @@ int apk_pkg_replaces_file(const struct apk_package *a, const struct apk_package
 	if (a->origin && a->origin == b->origin) return APK_PKG_REPLACES_YES;
 
 	/* Does the original package replace the new one? */
-	foreach_array_item(dep, a->ipkg->replaces) {
+	apk_array_foreach(dep, a->ipkg->replaces) {
 		if (apk_dep_is_materialized(dep, b)) {
 			a_prio = a->ipkg->replaces_priority;
 			break;
@@ -986,7 +970,7 @@ int apk_pkg_replaces_file(const struct apk_package *a, const struct apk_package
 	}
 
 	/* Does the new package replace the original one? */
-	foreach_array_item(dep, b->ipkg->replaces) {
+	apk_array_foreach(dep, b->ipkg->replaces) {
 		if (apk_dep_is_materialized(dep, a)) {
 			b_prio = b->ipkg->replaces_priority;
 			break;
@@ -1029,11 +1013,9 @@ void apk_pkg_foreach_matching_dependency(
 		void *ctx)
 {
 	unsigned int one_dep_only = (match & APK_FOREACH_GENID_MASK) && !(match & APK_FOREACH_DEP);
-	struct apk_dependency *d;
 
 	if (apk_pkg_match_genid(pkg, match)) return;
-
-	foreach_array_item(d, deps) {
+	apk_array_foreach(d, deps) {
 		if (apk_dep_analyze(pkg, d, mpkg) & match) {
 			cb(pkg, d, mpkg, ctx);
 			if (one_dep_only) break;
@@ -1051,19 +1033,14 @@ static void foreach_reverse_dependency(
 	unsigned int marked = match & APK_FOREACH_MARKED;
 	unsigned int installed = match & APK_FOREACH_INSTALLED;
 	unsigned int one_dep_only = (match & APK_FOREACH_GENID_MASK) && !(match & APK_FOREACH_DEP);
-	struct apk_name **pname0, *name0;
-	struct apk_provider *p0;
-	struct apk_package *pkg0;
-	struct apk_dependency *d0;
-
-	foreach_array_item(pname0, rdepends) {
-		name0 = *pname0;
-		foreach_array_item(p0, name0->providers) {
-			pkg0 = p0->pkg;
+
+	apk_array_foreach_item(name0, rdepends) {
+		apk_array_foreach(p0, name0->providers) {
+			struct apk_package *pkg0 = p0->pkg;
 			if (installed && pkg0->ipkg == NULL) continue;
 			if (marked && !pkg0->marked) continue;
 			if (apk_pkg_match_genid(pkg0, match)) continue;
-			foreach_array_item(d0, pkg0->depends) {
+			apk_array_foreach(d0, pkg0->depends) {
 				if (apk_dep_analyze(pkg0, d0, pkg) & match) {
 					cb(pkg0, d0, pkg, ctx);
 					if (one_dep_only) break;
@@ -1078,9 +1055,7 @@ void apk_pkg_foreach_reverse_dependency(
 		void cb(struct apk_package *pkg0, struct apk_dependency *dep0, struct apk_package *pkg, void *ctx),
 		void *ctx)
 {
-	struct apk_dependency *p;
-
 	foreach_reverse_dependency(pkg, pkg->name->rdepends, match, cb, ctx);
-	foreach_array_item(p, pkg->provides)
+	apk_array_foreach(p, pkg->provides)
 		foreach_reverse_dependency(pkg, p->name->rdepends, match, cb, ctx);
 }
-- 
GitLab