Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
libpkg: Reduce code duplication in pkg_conflicts_register_chain()
Mark Johnston committed 3 years ago
commit ff8b94ae77eb1a8907bb66b414cadccd107e7512
parent fe323a1
1 file changed +16 -27
modified libpkg/pkg_jobs_conflicts.c
@@ -275,44 +275,33 @@ pkg_conflicts_register_chain(struct pkg_jobs *j, struct pkg_job_universe_item *u
	struct pkg_job_universe_item *u2, const char *path)
{
	struct pkg_job_universe_item *cur1, *cur2;
+
	enum pkg_conflict_type type;
	bool ret = false;

	cur1 = u1;
-

	do {
-

		cur2 = u2;
		do {
			struct pkg *p1 = cur1->pkg, *p2 = cur2->pkg;

-
			if (p1->type == PKG_INSTALLED && p2->type == PKG_INSTALLED) {
-
				/* Local and local packages cannot conflict */
-
				cur2 = cur2->prev;
-
				continue;
-
			}
-
			else if (p1->type == PKG_INSTALLED || p2->type == PKG_INSTALLED) {
-
				/* local <-> remote conflict */
-
				if (pkg_conflicts_need_conflict(j, p1, p2)) {
-
					pkg_emit_conflicts(p1, p2, path);
-
					pkg_conflicts_register_unsafe(p1, p2, path,
-
						PKG_CONFLICT_REMOTE_LOCAL);
-
					j->conflicts_registered ++;
-
					ret = true;
-
				}
-
			}
-
			else {
-
				/* two remote packages */
-
				if (pkg_conflicts_need_conflict(j, p1, p2)) {
-
					pkg_emit_conflicts(p1, p2, path);
-
					pkg_conflicts_register_unsafe(p1, p2, path,
-
						PKG_CONFLICT_REMOTE_REMOTE);
-
					j->conflicts_registered ++;
-
					ret = true;
-
				}
+
			if (p1->type == PKG_INSTALLED && p2->type == PKG_INSTALLED)
+
				type = PKG_CONFLICT_LOCAL_LOCAL;
+
			else if (p1->type == PKG_INSTALLED || p2->type == PKG_INSTALLED)
+
				type = PKG_CONFLICT_REMOTE_LOCAL;
+
			else
+
				type = PKG_CONFLICT_REMOTE_REMOTE;
+

+
			/* A pair of installed packages cannot conflict. */
+
			if (type != PKG_CONFLICT_LOCAL_LOCAL &&
+
			    pkg_conflicts_need_conflict(j, p1, p2)) {
+
				pkg_emit_conflicts(p1, p2, path);
+
				pkg_conflicts_register_unsafe(p1, p2, path,
+
				    type);
+
				j->conflicts_registered++;
+
				ret = true;
			}
			cur2 = cur2->prev;
		} while (cur2 != u2);
-

		cur1 = cur1->prev;
	} while (cur1 != u1);