Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
New pkg_dep_get() function
Baptiste Daroussin committed 14 years ago
commit 3daabbf8ff38d1e1e8906adb12939aa50f81993e
parent 7f71b3c
12 files changed +56 -44
modified libpkg/pkg.c
@@ -528,7 +528,7 @@ pkg_adddep(struct pkg *pkg, const char *name, const char *origin, const char *ve
	assert(version != NULL && version[0] != '\0');

	while (pkg_deps(pkg, &d) != EPKG_END) {
-
		if (!strcmp(origin, pkg_dep_origin(d))) {
+
		if (!strcmp(origin, pkg_dep_get(d, PKG_DEP_ORIGIN))) {
			pkg_emit_error("duplicate dependency listing: %s-%s, ignoring", name, version);
			return (EPKG_OK);
		}
modified libpkg/pkg.h
@@ -136,6 +136,16 @@ typedef enum {
	PKG_REPOURL
} pkg_attr;

+
/**
+
 * contains keys to refer to a string attribute
+
 * Used by pkg_dep_get()
+
 */
+
typedef enum {
+
	PKG_DEP_NAME = 0,
+
	PKG_DEP_ORIGIN,
+
	PKG_DEP_VERSION
+
} pkg_dep_attr;
+

typedef enum {
	PKG_DEPS = 0,
	PKG_RDEPS,
@@ -516,9 +526,7 @@ int pkg_load_manifest_file(struct pkg *pkg, const char *fpath);
int pkg_emit_manifest(struct pkg *pkg, char **buf);

/* pkg_dep */
-
const char *pkg_dep_origin(struct pkg_dep *dep);
-
const char *pkg_dep_name(struct pkg_dep *dep);
-
const char *pkg_dep_version(struct pkg_dep *dep);
+
const char *pkg_dep_get(struct pkg_dep const * const , const pkg_dep_attr);

/* pkg_file */
const char *pkg_file_path(struct pkg_file *);
modified libpkg/pkg_add.c
@@ -19,7 +19,7 @@ dep_installed(struct pkg_dep *dep, struct pkgdb *db) {
	struct pkgdb_it *it;
	int ret;

-
	it = pkgdb_query(db, pkg_dep_origin(dep), MATCH_EXACT);
+
	it = pkgdb_query(db, pkg_dep_get(dep, PKG_DEP_ORIGIN), MATCH_EXACT);

	if (pkgdb_it_next(it, &p, PKG_LOAD_BASIC) == EPKG_OK) {
		ret = EPKG_OK;
@@ -168,7 +168,7 @@ pkg_add(struct pkgdb *db, const char *path, int flags)
	while (pkg_deps(pkg, &dep) == EPKG_OK) {
		if (dep_installed(dep, db) != EPKG_OK) {
			snprintf(dpath, sizeof(dpath), "%s/%s-%s%s", basedir,
-
					 pkg_dep_name(dep), pkg_dep_version(dep),
+
					 pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_VERSION),
					 ext);

			if (access(dpath, F_OK) == 0) {
modified libpkg/pkg_attributes.c
@@ -1,3 +1,4 @@
+
#include <assert.h>
#include <stdlib.h>

#include "pkg.h"
@@ -26,21 +27,24 @@ pkg_dep_free(struct pkg_dep *d)
}

const char *
-
pkg_dep_origin(struct pkg_dep *d)
-
{
-
	return (sbuf_get(d->origin));
-
}
-

-
const char *
-
pkg_dep_name(struct pkg_dep *d)
-
{
-
	return (sbuf_get(d->name));
-
}
-

-
const char *
-
pkg_dep_version(struct pkg_dep *d)
-
{
-
	return (sbuf_get(d->version));
+
pkg_dep_get(struct pkg_dep const * const d, const pkg_dep_attr attr)
+
{
+
	assert(d != NULL);
+

+
	switch (attr) {
+
		case PKG_DEP_NAME:
+
			return (sbuf_get(d->name));
+
			break;
+
		case PKG_DEP_ORIGIN:
+
			return (sbuf_get(d->origin));
+
			break;
+
		case PKG_DEP_VERSION:
+
			return (sbuf_get(d->version));
+
			break;
+
		default:
+
			return (NULL);
+
			break;
+
	}
}

/*
modified libpkg/pkg_elf.c
@@ -71,7 +71,7 @@ analyse_elf(struct pkgdb *db, struct pkg *pkg, const char *fpath)
			if (pkgdb_it_next(it, &p, PKG_LOAD_BASIC) == EPKG_OK) {
				found = false;
				while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
					if (strcmp(pkg_dep_origin(dep), pkg_get(p, PKG_ORIGIN)) == 0)
+
					if (strcmp(pkg_dep_get(dep, PKG_DEP_ORIGIN), pkg_get(p, PKG_ORIGIN)) == 0)
						found = true;
				}
				if (!found) {
modified libpkg/pkg_manifest.c
@@ -711,11 +711,11 @@ pkg_emit_manifest(struct pkg *pkg, char **dest)

		depkv = yaml_document_add_mapping(&doc, NULL, YAML_FLOW_MAPPING_STYLE);
		yaml_document_append_mapping_pair(&doc, depsmap,
-
				yaml_document_add_scalar(&doc, NULL, __DECONST(yaml_char_t*, pkg_dep_name(dep)), strlen(pkg_dep_name(dep)), YAML_PLAIN_SCALAR_STYLE),
+
				yaml_document_add_scalar(&doc, NULL, __DECONST(yaml_char_t*, pkg_dep_get(dep, PKG_DEP_NAME)), strlen(pkg_dep_get(dep, PKG_DEP_NAME)), YAML_PLAIN_SCALAR_STYLE),
				depkv);

-
		manifest_append_kv(depkv, "origin", pkg_dep_origin(dep));
-
		manifest_append_kv(depkv, "version", pkg_dep_version(dep));
+
		manifest_append_kv(depkv, "origin", pkg_dep_get(dep, PKG_DEP_ORIGIN));
+
		manifest_append_kv(depkv, "version", pkg_dep_get(dep, PKG_DEP_VERSION));
	}

	seq = -1;
modified libpkg/pkg_repo.c
@@ -678,9 +678,9 @@ pkg_create_repo(char *path, void (progress)(struct pkg *pkg, void *data), void *

		dep = NULL;
		while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
			sqlite3_bind_text(stmt_deps, 1, pkg_dep_origin(dep), -1, SQLITE_STATIC);
-
			sqlite3_bind_text(stmt_deps, 2, pkg_dep_name(dep), -1, SQLITE_STATIC);
-
			sqlite3_bind_text(stmt_deps, 3, pkg_dep_version(dep), -1, SQLITE_STATIC);
+
			sqlite3_bind_text(stmt_deps, 1, pkg_dep_get(dep, PKG_DEP_ORIGIN), -1, SQLITE_STATIC);
+
			sqlite3_bind_text(stmt_deps, 2, pkg_dep_get(dep, PKG_DEP_NAME), -1, SQLITE_STATIC);
+
			sqlite3_bind_text(stmt_deps, 3, pkg_dep_get(dep, PKG_DEP_VERSION), -1, SQLITE_STATIC);
			sqlite3_bind_int64(stmt_deps, 4, package_id);

			if (sqlite3_step(stmt_deps) != SQLITE_DONE) {
modified libpkg/pkgdb.c
@@ -1491,9 +1491,9 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int complete)
	}

	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		sqlite3_bind_text(stmt_dep, 1, pkg_dep_origin(dep), -1, SQLITE_STATIC);
-
		sqlite3_bind_text(stmt_dep, 2, pkg_dep_name(dep), -1, SQLITE_STATIC);
-
		sqlite3_bind_text(stmt_dep, 3, pkg_dep_version(dep), -1, SQLITE_STATIC);
+
		sqlite3_bind_text(stmt_dep, 1, pkg_dep_get(dep, PKG_DEP_ORIGIN), -1, SQLITE_STATIC);
+
		sqlite3_bind_text(stmt_dep, 2, pkg_dep_get(dep, PKG_DEP_NAME), -1, SQLITE_STATIC);
+
		sqlite3_bind_text(stmt_dep, 3, pkg_dep_get(dep, PKG_DEP_VERSION), -1, SQLITE_STATIC);
		sqlite3_bind_int64(stmt_dep, 4, package_id);

		if ((ret = sqlite3_step(stmt_dep)) != SQLITE_DONE) {
modified pkg/event.c
@@ -79,7 +79,7 @@ event_callback(void *data, struct pkg_event *ev)
		fprintf(stderr, "%s-%s is required by:", pkg_get(pkg, PKG_NAME),
				pkg_get(pkg, PKG_VERSION));
		while (pkg_rdeps(pkg, &dep) == EPKG_OK) {
-
			fprintf(stderr, " %s-%s", pkg_dep_name(dep), pkg_dep_version(dep));
+
			fprintf(stderr, " %s-%s", pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_ORIGIN));
		}
		if (ev->e_required.force == 1)
			fprintf(stderr, ", deleting anyway\n");
modified pkg/query.c
@@ -130,20 +130,20 @@ format_str(struct pkg *pkg, struct sbuf *dest, const char *qstr, void *data)
				case 'd':
					qstr++;
					if (qstr[0] == 'n')
-
						sbuf_cat(dest, pkg_dep_name((struct pkg_dep *)data));
+
						sbuf_cat(dest, pkg_dep_get((struct pkg_dep *)data, PKG_DEP_NAME));
					else if (qstr[0] == 'o')
-
						sbuf_cat(dest, pkg_dep_origin((struct pkg_dep *)data));
+
						sbuf_cat(dest, pkg_dep_get((struct pkg_dep *)data, PKG_DEP_ORIGIN));
					else if (qstr[0] == 'v')
-
						sbuf_cat(dest, pkg_dep_version((struct pkg_dep *)data));
+
						sbuf_cat(dest, pkg_dep_get((struct pkg_dep *)data, PKG_DEP_VERSION));
					break;
				case 'r':
					qstr++;
					if (qstr[0] == 'n')
-
						sbuf_cat(dest, pkg_dep_name((struct pkg_dep *)data));
+
						sbuf_cat(dest, pkg_dep_get((struct pkg_dep *)data, PKG_DEP_NAME));
					else if (qstr[0] == 'o')
-
						sbuf_cat(dest, pkg_dep_origin((struct pkg_dep *)data));
+
						sbuf_cat(dest, pkg_dep_get((struct pkg_dep *)data, PKG_DEP_ORIGIN));
					else if (qstr[0] == 'v')
-
						sbuf_cat(dest, pkg_dep_version((struct pkg_dep *)data));
+
						sbuf_cat(dest, pkg_dep_get((struct pkg_dep *)data, PKG_DEP_VERSION));
					break;
				case 'C':
					sbuf_cat(dest, pkg_category_name((struct pkg_category *)data));
modified pkg/utils.c
@@ -101,7 +101,7 @@ print_info(struct pkg * const pkg, unsigned int opt)
                        printf("%s-%s depends on:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));

                while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
                        printf("%s-%s\n", pkg_dep_name(dep), pkg_dep_version(dep));
+
                        printf("%s-%s\n", pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_VERSION));
                }

                if (!(opt & INFO_QUIET))
@@ -111,7 +111,7 @@ print_info(struct pkg * const pkg, unsigned int opt)
                        printf("%s-%s is required by:\n", pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));

                while (pkg_rdeps(pkg, &dep) == EPKG_OK) {
-
                        printf("%s-%s\n", pkg_dep_name(dep), pkg_dep_version(dep));
+
                        printf("%s-%s\n", pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_VERSION));
                }

                if (!(opt & INFO_QUIET))
modified pkg2legacy/pkg2legacy.c
@@ -181,10 +181,10 @@ main(int argc, char **argv)
		while (pkg_deps(pkg, &dep) == EPKG_OK) {
			sbuf_printf(sbuf, "@pkgdep %s-%s\n"
						"@comment DEPORIGIN:%s\n",
-
						pkg_dep_name(dep),
-
						pkg_dep_version(dep),
-
						pkg_dep_origin(dep));
-
			sbuf_printf(indexfile, "%s-%s ", pkg_dep_name(dep), pkg_dep_version(dep));
+
						pkg_dep_get(dep, PKG_DEP_NAME),
+
						pkg_dep_get(dep, PKG_DEP_VERSION),
+
						pkg_dep_get(dep, PKG_DEP_NAME));
+
			sbuf_printf(indexfile, "%s-%s ", pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_VERSION));
		}

		sbuf_cat(indexfile, "|");