Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add a function to determine if a file belongs to any installed package
Baptiste Daroussin committed 6 years ago
commit 09789ab9ce6894daa060c68fd3b7ca83ba588243
parent c782dfe
2 files changed +30 -0
modified libpkg/pkgdb_query.c
@@ -165,6 +165,35 @@ pkgdb_query(struct pkgdb *db, const char *pattern, match_t match)
	return (pkgdb_it_new_sqlite(db, stmt, PKG_INSTALLED, PKGDB_IT_FLAG_ONCE));
}

+
bool
+
pkgdb_file_exists(struct pkgdb *db, const char *path)
+
{
+
	sqlite3_stmt	*stmt;
+
	char	sql[BUFSIZ];
+
	bool	ret = false;
+

+
	assert(db != NULL);
+

+
	if (path == NULL)
+
		return (false);
+

+
	sqlite3_snprintf(sizeof(sql), sql,
+
	    "select path from files where path = ?1;");
+
	pkg_debug(4, "Pkgdb: running '%s'", sql);
+

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

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

+
	if (sqlite3_step(stmt) != SQLITE_DONE)
+
		ret = true;
+

+
	sqlite3_finalize(stmt);
+
	return (ret);
+
}
+

struct pkgdb_it *
pkgdb_query_which(struct pkgdb *db, const char *path, bool glob)
{
modified libpkg/private/pkgdb.h
@@ -181,5 +181,6 @@ int pkgdb_sqlcmd_init(sqlite3 *db, const char **err, const void *noused);
int pkgdb_update_config_file_content(struct pkg *pkg, sqlite3 *s);
void pkgdb_syscall_overload(void);
void pkgdb_nfs_corruption(sqlite3 *s);
+
bool pkgdb_file_exists(struct pkgdb *db, const char *path);

#endif