Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Add utility to iterate over all origins in repo.
Vsevolod Stakhov committed 13 years ago
commit a2b971f272720a82c7915146c24e1cc81cc7f20f
parent 42037d3efff1cf506f9578bc6829d43c791714d5
3 files changed +33 -2
modified libpkg/pkgdb.c
@@ -59,7 +59,6 @@
#define PKGLT	(1U << 2)
#define PKGEQ	(1U << 3)

-
static struct pkgdb_it *pkgdb_it_new(struct pkgdb *, sqlite3_stmt *, int);
static void pkgdb_regex(sqlite3_context *, int, sqlite3_value **);
static void pkgdb_regex_delete(void *);
static void pkgdb_pkglt(sqlite3_context *, int, sqlite3_value **);
@@ -1201,7 +1200,7 @@ pkgdb_transaction_rollback(sqlite3 *sqlite, const char *savepoint)
}


-
static struct pkgdb_it *
+
struct pkgdb_it *
pkgdb_it_new(struct pkgdb *db, sqlite3_stmt *s, int type)
{
	struct pkgdb_it	*it;
modified libpkg/pkgdb_repo.c
@@ -846,3 +846,26 @@ pkgdb_repo_check_version(struct pkgdb *db, const char *database)

	return (ret);
}
+

+
struct pkgdb_it *
+
pkgdb_repo_origins(struct pkgdb *db)
+
{
+
	sqlite3_stmt *stmt = NULL;
+
	int ret;
+
	const char query_sql[] = ""
+
		"SELECT origin, manifestdigest "
+
		"FROM packages "
+
		"ORDER BY origin;";
+

+
	assert(db != NULL);
+
	assert(db->type == PKGDB_REMOTE);
+

+
	ret = sqlite3_prepare_v2(db->sqlite, query_sql, -1,
+
			&stmt, NULL);
+
	if (ret != SQLITE_OK) {
+
		ERROR_SQLITE(db->sqlite);
+
		return (NULL);
+
	}
+

+
	return (pkgdb_it_new(db, stmt, PKG_REMOTE));
+
}
modified libpkg/private/pkgdb.h
@@ -56,6 +56,8 @@ int pkgdb_transaction_begin(sqlite3 *sqlite, const char *savepoint);
int pkgdb_transaction_commit(sqlite3 *sqlite, const char *savepoint);
int pkgdb_transaction_rollback(sqlite3 *sqlite, const char *savepoint);

+
struct pkgdb_it *pkgdb_it_new(struct pkgdb *db, sqlite3_stmt *s, int type);
+

struct pkgdb_it *pkgdb_query_delete(struct pkgdb *db, match_t type, int nbpkgs, char **pkgs, int recursive);
struct pkgdb_it *pkgdb_query_autoremove(struct pkgdb *db);
struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db, const char *reponame, bool all, bool pkgversiontest);
@@ -112,4 +114,11 @@ int pkgdb_repo_add_package(struct pkg *pkg, const char *pkg_path,
 */
int pkgdb_repo_check_version(struct pkgdb *db, const char *database);

+
/**
+
 * Returns a list of all packages sorted by origin
+
 * @param db database
+
 * @return new iterator
+
 */
+
struct pkgdb_it *pkgdb_repo_origins(struct pkgdb *db);
+

#endif