Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Record shared library usage in pkgdb and add tools for querying same
Matthew Seaman committed 14 years ago
commit 99a6922f0808d47b213b9e1e0aeacccb194e006e
parent 797c6c5f784f2772e1b2eb838b3e428f7eb50975
1 file changed +35 -0
modified libpkg/pkgdb.c
@@ -1855,6 +1855,41 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int complete)
	stmt = NULL;
	stmt2 = NULL;

+

+
	/*
+
	 * Insert shlibs
+
	 */
+

+
	if (sqlite3_prepare_v2(s, sql_shlib, -1, &stmt_shlib, NULL) != SQLITE_OK) {
+
		ERROR_SQLITE(s);
+
		goto cleanup;
+
	}
+
	if (sqlite3_prepare_v2(s, sql_shlibs, -1, &stmt_shlibs, NULL) != SQLITE_OK) {
+
		ERROR_SQLITE(s);
+
		goto cleanup;
+
	}
+

+
	while (pkg_shlibs(pkg, &shlib) == EPKG_OK) {
+
		sqlite3_bind_text(stmt_shlib, 1, pkg_shlib_name(shlib), -1, SQLITE_STATIC);
+
		sqlite3_bind_int64(stmt_shlibs, 1, package_id);
+
		sqlite3_bind_text(stmt_shlibs, 2, pkg_shlib_name(shlib), -1, SQLITE_STATIC);
+

+
		if ((ret = sqlite3_step(stmt_shlib)) != SQLITE_DONE) {
+
			if (ret == SQLITE_CONSTRAINT) {
+
				pkg_emit_error("sqlite: constraint violation on shlibs.name: %s",
+
						pkg_shlib_name(shlib));
+
			} else
+
				ERROR_SQLITE(s);
+
			goto cleanup;
+
		}
+
		if (( ret = sqlite3_step(stmt_shlibs)) != SQLITE_DONE) {
+
			ERROR_SQLITE(s);
+
			goto cleanup;
+
		}
+
		sqlite3_reset(stmt_shlib);
+
		sqlite3_reset(stmt_shlibs);
+
	}
+

	retcode = EPKG_OK;

	cleanup: