Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Complete pkgdb api
Philippe Pepiot committed 15 years ago
commit 5d61fbefb0714cdc9e89190d0318f2f66cab4d24
parent b19a2edbd6f39e73bac637e9b18e433de662f4cd
1 file changed +9 -9
modified docs/pkgdb_api.txt
@@ -8,12 +8,11 @@ struct pkg {
	const char *comment;
	const char *desc;
	const char *{pre|post}-{install|deinstall|upgrade};
+
	size_t dep, file; /* iterator for deps and files */
	pkg_t type;
-
	/* errors ? */
+
	/* errors, options */
	/* Draft, extra info for each possible pkg_t */
	size_t idx;	/* index on cache if PKG_CACHE */
-
	const char *path; /* PKG_PACKAGE, PKG_PORT */
-
	const char *url; /* PKG_REMOTE */
	struct pkg_manifest *manifest; /* manifest reference, plist+options, package directory etc */
};

@@ -24,7 +23,7 @@ struct pkg_file {

struct pgkdb {
	struct cdb *db;
-
	size_t i; /* query count */
+
	size_t i; /* iterator for pkgdb_query */
	int errno;
	char *strerror;
	... /* extra data, cache ? */
@@ -34,13 +33,14 @@ struct pgkdb {
api usage :

int pkgdb_query(struct pkgdb *, struct pkg *pkg, match_t, const char *pattern);
-
A query using pkgdb_query return each time a result into "pkg" and stop with a spécific return code (< 0)
+
- attach cdb db to pkg.
+
- A query using pkgdb_query return each time a result into "pkg" and stop with a spécific return code (< 0)

for each field (namever, name, version, origin...) there is an accessor
Example:
-
pkg_name(struct pkgdb *, struct pkg *)
-
pkg_dep(struct pkgdb *db, struct pkg *pkg, struct pkg *dep)
-
...
+
pkg_name(struct pkg *)
+
pkg_dep(struct pkg *pkg, struct pkg *dep) -> iterate
+
pkg_file(struct pkg *pkg) -> iterate

STUPID IDEA: why not function pointer on struct pkgdb for accessing pkgs ?
pkgdb_query can set info on query type (remote, package, local, port) and init pointers on several function.
@@ -57,7 +57,7 @@ main(void) {

	while ((query = pkgdb_query(&db, &pkg, MATCH_NONE, NULL)) > 0) {
		printf("%s depend on:\n", pkg_namever(&pkg));
-
		while (pkg_deps(&db, &pkg, &dep) > 0)
+
		while (pkg_deps(&pkg, &dep) > 0)
			printf("%s\n", pkg_namever(&dep));
		printf("\n\n");
	}