Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add pkgdb_query_nv to glob query on name-version (conflicts checking now works)
Baptiste Daroussin committed 14 years ago
commit aff47546b91e70e2348537db47451a447fe73caa
parent a60c837
4 files changed +32 -3
modified libpkg/pkg.h
@@ -417,6 +417,7 @@ struct pkgdb_it * pkgdb_query(struct pkgdb *db, const char *pattern,
 */
struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db);
struct pkgdb_it *pkgdb_query_downgrades(struct pkgdb *db);
+
struct pkgdb_it *pkgdb_query_nv(struct pkgdb *db, char *names);

/**
 * @todo Return directly the struct pkg?
modified libpkg/pkg_delete.c
@@ -87,6 +87,7 @@ pkg_delete_files(struct pkg *pkg, int force)
			 * currently do not warn on this because multiple
			 * packages can own the same directory
			 */
+
			sync();
			rmdir(path);
			continue;
		}
modified libpkg/pkgdb.c
@@ -1249,6 +1249,26 @@ pkgdb_compact(struct pkgdb *db)
}

struct pkgdb_it *
+
pkgdb_query_nv(struct pkgdb *db, char *name)
+
{
+
	sqlite3_stmt *stmt;
+

+
	const char sql[] = ""
+
		"SELECT rowid, origin, name, version, comment, desc, "
+
		"message, arch, osversion, maintainer, www, "
+
		"prefix, flatsize, name || \"-\" || version AS NAMEVER "
+
		"FROM packages "
+
		"WHERE NAMEVER GLOB ?1;";
+

+
	if (sqlite3_prepare_v2(db->sqlite, sql, -1, &stmt, NULL) != SQLITE_OK)
+
		return (NULL);
+

+
	sqlite3_bind_text(stmt, 1, name, -1, SQLITE_TRANSIENT);
+

+
	return (pkgdb_it_new(db, stmt, IT_LOCAL));
+
}
+

+
struct pkgdb_it *
pkgdb_query_upgrades(struct pkgdb *db)
{
	if (db->remote != PKGDB_REMOTE)
modified pkg/info.c
@@ -228,9 +228,16 @@ exec_info(int argc, char **argv)
		}


-
		if ((it = pkgdb_query(db, pkgname, match)) == NULL) {
-
			pkg_error_warn("can not query database");
-
			return (-1);
+
		if (opt & INFO_ORIGIN_SEARCH) {
+
			if ((it = pkgdb_query_nv(db, pkgname)) == NULL) {
+
				pkg_error_warn("can not query database");
+
				return (-1);
+
			}
+
		} else {
+
			if ((it = pkgdb_query(db, pkgname, match)) == NULL) {
+
				pkg_error_warn("can not query database");
+
				return (-1);
+
			}
		}

		/* this is place for compatibility hacks */