Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
All commands can now query orign,name,name-version transparently
Baptiste Daroussin committed 14 years ago
commit 98a7a28a8115100d6a8152d3c026b6e958d22ffe
parent d6bbca7
3 files changed +11 -36
modified libpkg/pkg.h
@@ -428,7 +428,6 @@ 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/pkgdb.c
@@ -458,25 +458,29 @@ pkgdb_query(struct pkgdb *db, const char *pattern, match_t match)
		break;
	case MATCH_EXACT:
		if (checkorigin == NULL)
-
			comp = " WHERE p.name = ?1";
+
			comp = " WHERE p.name = ?1 "
+
				"OR p.name || \"-\" || p.version = ?1";
		else
			comp = " WHERE p.origin = ?1";
		break;
	case MATCH_GLOB:
		if (checkorigin == NULL)
-
			comp = " WHERE p.name GLOB ?1";
+
			comp = " WHERE p.name GLOB ?1 "
+
				"OR p.name || \"-\" || p.version GLOB ?1";
		else
			comp = " WHERE p.origin GLOB ?1";
		break;
	case MATCH_REGEX:
		if (checkorigin == NULL)
-
			comp = " WHERE p.name REGEXP ?1";
+
			comp = " WHERE p.name REGEXP ?1 "
+
				"OR p.name || \"-\" || p.version REGEXP ?1";
		else
			comp = " WHERE p.origin REGEXP ?1";
		break;
	case MATCH_EREGEX:
		if (checkorigin == NULL)
-
			comp = " WHERE EREGEXP(?1, p.name)";
+
			comp = " WHERE EREGEXP(?1, p.name) "
+
				"OR EREGEXP(?1, p.name || \"-\" || p.version)";
		else
			comp = " WHERE EREGEXP(?1, p.origin)";
		break;
@@ -1276,26 +1280,6 @@ 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)
{
	sqlite3_stmt *stmt;
modified pkg/info.c
@@ -227,17 +227,9 @@ exec_info(int argc, char **argv)
			}
		}

-

-
		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);
-
			}
+
		if ((it = pkgdb_query(db, pkgname, match)) == NULL) {
+
			pkg_error_warn("can not query database");
+
			return (-1);
		}

		/* this is place for compatibility hacks */