Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Rework package repo iterators.
Vsevolod Stakhov committed 13 years ago
commit 916071d137b62c1ac4f9e9849ffcad1242b8f346
parent a34f4b2
4 files changed +13 -13
modified libpkg/pkgdb.c
@@ -1304,10 +1304,12 @@ pkgdb_it_free(struct pkgdb_it *it)
	if (it == NULL)
		return;

-
	if (!sqlite3_db_readonly(it->db->sqlite, "main")) {
-
		sql_exec(it->db->sqlite, "DROP TABLE IF EXISTS autoremove; "
-
			"DROP TABLE IF EXISTS delete_job; "
-
			"DROP TABLE IF EXISTS pkgjobs");
+
	if (it->db != NULL) {
+
		if (!sqlite3_db_readonly(it->db->sqlite, "main")) {
+
			sql_exec(it->db->sqlite, "DROP TABLE IF EXISTS autoremove; "
+
					"DROP TABLE IF EXISTS delete_job; "
+
					"DROP TABLE IF EXISTS pkgjobs");
+
		}
	}

	sqlite3_finalize(it->stmt);
modified libpkg/pkgdb_repo.c
@@ -606,12 +606,8 @@ try_again:
}

int
-
pkgdb_repo_remove_package(struct pkg *pkg)
+
pkgdb_repo_remove_package(const char *origin)
{
-
	const char *origin;
-

-
	pkg_get(pkg, PKG_ORIGIN, &origin);
-

	if (run_prepared_statement(DELETE, origin) != SQLITE_DONE)
		return (EPKG_FATAL); /* sqlite error */

@@ -881,6 +877,7 @@ pkgdb_repo_origins(sqlite3 *sqlite)
{
	sqlite3_stmt *stmt = NULL;
	int ret;
+
	static struct pkgdb repodb;
	struct pkgdb_it *it;
	const char query_sql[] = ""
		"SELECT origin, manifestdigest "
@@ -900,7 +897,8 @@ pkgdb_repo_origins(sqlite3 *sqlite)
		return (NULL);
	}

-
	it->db = NULL;
+
	repodb.sqlite = sqlite;
+
	it->db = &repodb;
	it->stmt = stmt;
	it->type = PKG_REMOTE;
	return (it);
modified libpkg/private/pkg.h
@@ -48,7 +48,7 @@
#endif
#include "private/utils.h"

-
#define PKG_NUM_FIELDS 18
+
#define PKG_NUM_FIELDS 19
#define PKG_NUM_SCRIPTS 8

#if ARCHIVE_VERSION_NUMBER < 3000002
modified libpkg/private/pkgdb.h
@@ -116,10 +116,10 @@ int pkgdb_repo_add_package(struct pkg *pkg, const char *pkg_path,

/**
 * Remove specified pkg from repo
-
 * @param pkg package to remove
+
 * @param origin the origin of package to remove
 * @return EPKG_OK if succeeded
 */
-
int pkgdb_repo_remove_package(struct pkg *pkg);
+
int pkgdb_repo_remove_package(const char *origin);

/**
 * Upgrade repo db version if required