Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
When iterating through repos to check for database access, igore the ones which aren't enabled.
Matthew Seaman committed 12 years ago
commit 1ff24ec8300e742645bd9165940c1a2e73499d65
parent 00bd664
5 files changed +32 -10
modified libpkg/pkg.h.in
@@ -1400,7 +1400,7 @@ int pkg_to_old(struct pkg *pkg);
int pkg_register_old(struct pkg *pkg);
int pkg_sshserve(void);

-
int pkg_repos_count(void);
+
int pkg_repos_count(bool);
int pkg_repos(struct pkg_repo **);
const char *pkg_repo_url(struct pkg_repo *r);
const char *pkg_repo_ident(struct pkg_repo *r);
modified libpkg/pkg_config.c
@@ -1260,9 +1260,27 @@ pkg_shutdown(void)
}

int
-
pkg_repos_count(void)
+
pkg_repos_count(bool activated_only)
{
-
	return (HASH_COUNT(repos));
+
	int	count;
+

+
	if (!activated_only) {
+
		struct pkg_repo *r = NULL;
+

+
		count = 0;
+

+
		while(1) {
+
			HASH_NEXT(repos, r);
+
			if (r == NULL)
+
				break;
+

+
			if (r->enable)
+
				count++;
+
		}
+
	} else
+
		count = HASH_COUNT(repos);
+

+
	return (count);
}

int
modified libpkg/pkgdb.c
@@ -958,6 +958,10 @@ pkgdb_access(unsigned mode, unsigned database)
		struct pkg_repo	*r = NULL;

		while (pkg_repos(&r) == EPKG_OK) {
+
			/* Ignore any repos marked as inactive */
+
			if (!pkg_repo_enabled(r))
+
				continue;
+

			retval = database_access(mode, dbdir, pkg_repo_name(r));
			if (retval != EPKG_OK)
				return (retval);
@@ -3409,8 +3413,8 @@ pkgdb_search(struct pkgdb *db, const char *pattern, match_t match,
			return (NULL);
		}
	} else {
-
		if (pkg_repos_count() == 0) {
-
			pkg_emit_error("No repositories configured");
+
		if (pkg_repos_count(true) == 0) {
+
			pkg_emit_error("No active repositories configured");
			sbuf_delete(sql);
			return (NULL);
		}
modified pkg/stats.c
@@ -95,7 +95,7 @@ exec_stats(__unused int argc, __unused char **argv)
		}
	}

-
	if (opt & STATS_REMOTE && pkg_repos_count() > 0) {
+
	if (opt & STATS_REMOTE && pkg_repos_count(false) > 0) {
		printf("Remote package database(s):\n");
		printf("\tNumber of repositories: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_REMOTE_REPOS));
		printf("\tPackages available: %" PRId64 "\n", pkgdb_stats(db, PKG_STATS_REMOTE_COUNT));
modified pkg/utils.c
@@ -602,13 +602,13 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
				switch (pkg_version_change(pkg)) {
				case PKG_DOWNGRADE:
					pkg_printf("\tDowngrading %n: %V -> %v", pkg, pkg, pkg);
-
					if (pkg_repos_count() > 1)
+
					if (pkg_repos_count(false) > 1)
						pkg_printf(" [%N]", pkg);
					printf("\n");
					break;
				case PKG_REINSTALL:
					pkg_printf("\tReinstalling %n-%v", pkg, pkg);
-
					if (pkg_repos_count() > 1)
+
					if (pkg_repos_count(false) > 1)
						pkg_printf(" [%N]", pkg);
					if (why != NULL)
						printf(" (%s)", why);
@@ -616,7 +616,7 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
					break;
				case PKG_UPGRADE:
					pkg_printf("\tUpgrading %n: %V -> %v", pkg, pkg, pkg);
-
					if (pkg_repos_count() > 1)
+
					if (pkg_repos_count(false) > 1)
						pkg_printf(" [%N]", pkg);
					printf("\n");
					break;
@@ -627,7 +627,7 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
				newsize += flatsize;

				pkg_printf("\tInstalling %n: %v", pkg, pkg);
-
				if (pkg_repos_count() > 1)
+
				if (pkg_repos_count(false) > 1)
					pkg_printf(" [%N]", pkg);
				printf("\n");
			}