Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add utility to iterate over all origins in repo.
Vsevolod Stakhov committed 13 years ago
commit a2b971f272720a82c7915146c24e1cc81cc7f20f
parent 42037d3
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