Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Do not use sbuf in pkg_dep and avoid accessors in library
Baptiste Daroussin committed 11 years ago
commit e9eced8a2cc778483f95887da01f8a8efc0ca89d
parent 181bb2e
14 files changed +42 -55
modified libpkg/pkg.c
@@ -798,7 +798,7 @@ pkg_adddep(struct pkg *pkg, const char *name, const char *origin, const char *ve
	assert(version != NULL && version[0] != '\0');

	pkg_debug(3, "Pkg: add a new dependency origin: %s, name: %s, version: %s", origin, name, version);
-
	HASH_FIND_STR(pkg->deps, origin, d);
+
	HASH_FIND_STR(pkg->deps, name, d);
	if (d != NULL) {
		if (pkg_object_bool(pkg_config_get("DEVELOPER_MODE"))) {
			pkg_emit_error("%s-%s: duplicate dependency listing: %s-%s, fatal (developer mode)",
@@ -813,14 +813,13 @@ pkg_adddep(struct pkg *pkg, const char *name, const char *origin, const char *ve

	pkg_dep_new(&d);

-
	sbuf_set(&d->origin, origin);
-
	sbuf_set(&d->name, name);
-
	sbuf_set(&d->version, version);
+
	d->origin = strdup(origin);
+
	d->name = strdup(name);
+
	d->version = strdup(version);
	d->uid = strdup(name);
	d->locked = locked;

-
	HASH_ADD_KEYPTR(hh, pkg->deps, pkg_dep_get(d, PKG_DEP_ORIGIN),
-
	    strlen(pkg_dep_get(d, PKG_DEP_ORIGIN)), d);
+
	HASH_ADD_KEYPTR(hh, pkg->deps, d->name, strlen(d->name), d);

	return (EPKG_OK);
}
@@ -838,14 +837,13 @@ pkg_addrdep(struct pkg *pkg, const char *name, const char *origin, const char *v
	pkg_debug(3, "Pkg: add a new reverse dependency origin: %s, name: %s, version: %s", origin, name, version);
	pkg_dep_new(&d);

-
	sbuf_set(&d->origin, origin);
-
	sbuf_set(&d->name, name);
-
	sbuf_set(&d->version, version);
+
	d->origin = strdup(origin);
+
	d->name = strdup(name);
+
	d->version = strdup(version);
	d->uid = strdup(name);
	d->locked = locked;

-
	HASH_ADD_KEYPTR(hh, pkg->rdeps, pkg_dep_get(d, PKG_DEP_ORIGIN),
-
	    strlen(pkg_dep_get(d, PKG_DEP_ORIGIN)), d);
+
	HASH_ADD_KEYPTR(hh, pkg->rdeps, d->origin, strlen(d->origin), d);

	return (EPKG_OK);
}
modified libpkg/pkg_add.c
@@ -348,15 +348,12 @@ pkg_add_check_pkg_archive(struct pkgdb *db, struct pkg *pkg,
	pkg_emit_add_deps_begin(pkg);

	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		if (pkg_is_installed(db, pkg_dep_origin(dep)) == EPKG_OK)
+
		if (pkg_is_installed(db, dep->name) == EPKG_OK)
			continue;

		if (basedir != NULL) {
-
			const char *dep_name = pkg_dep_name(dep);
-
			const char *dep_ver = pkg_dep_version(dep);
-

			snprintf(dpath, sizeof(dpath), "%s/%s-%s%s", basedir,
-
				dep_name, dep_ver, ext);
+
				dep->name, dep->version, ext);

			if ((flags & PKG_ADD_UPGRADE) == 0 &&
							access(dpath, F_OK) == 0) {
@@ -367,8 +364,7 @@ pkg_add_check_pkg_archive(struct pkgdb *db, struct pkg *pkg,
			} else {
				pkg_emit_error("Missing dependency matching "
					"Origin: '%s' Version: '%s'",
-
					pkg_dep_get(dep, PKG_DEP_ORIGIN),
-
					pkg_dep_get(dep, PKG_DEP_VERSION));
+
					dep->origin, dep->version);
				if ((flags & PKG_ADD_FORCE_MISSING) == 0)
					goto cleanup;
			}
modified libpkg/pkg_attributes.c
@@ -50,9 +50,9 @@ pkg_dep_free(struct pkg_dep *d)
	if (d == NULL)
		return;

-
	sbuf_free(d->origin);
-
	sbuf_free(d->name);
-
	sbuf_free(d->version);
+
	free(d->origin);
+
	free(d->name);
+
	free(d->version);
	free(d->uid);
	free(d);
}
@@ -64,13 +64,13 @@ pkg_dep_get(struct pkg_dep const * const d, const pkg_dep_attr attr)

	switch (attr) {
	case PKG_DEP_NAME:
-
		return (sbuf_get(d->name));
+
		return (d->name);
		break;
	case PKG_DEP_ORIGIN:
-
		return (sbuf_get(d->origin));
+
		return (d->origin);
		break;
	case PKG_DEP_VERSION:
-
		return (sbuf_get(d->version));
+
		return (d->version);
		break;
	default:
		return (NULL);
modified libpkg/pkg_checksum.c
@@ -170,7 +170,7 @@ pkg_checksum_generate(struct pkg *pkg, char *dest, size_t destlen,
	}

	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		asprintf(&olduid, "%s~%s", pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_ORIGIN));
+
		asprintf(&olduid, "%s~%s", dep->name, dep->origin);
		pkg_checksum_add_entry("depend", olduid, &entries);
		free(olduid);
	}
modified libpkg/pkg_cudf.c
@@ -130,7 +130,7 @@ cudf_emit_pkg(struct pkg *pkg, int version, FILE *f,
		if (fprintf(f, "depends: ") < 0)
			return (EPKG_FATAL);
		HASH_ITER(hh, pkg->deps, dep, dtmp) {
-
			if (cudf_print_element(f, pkg_dep_get(dep, PKG_DEP_ORIGIN),
+
			if (cudf_print_element(f, dep->origin,
					(dep->hh.next != NULL), &column) < 0) {
				return (EPKG_FATAL);
			}
modified libpkg/pkg_event.c
@@ -253,8 +253,7 @@ pipeevent(struct pkg_event *ev)
		while (pkg_rdeps(ev->e_required.pkg, &dep) == EPKG_OK)
			sbuf_printf(msg, "{ \"pkgname\": \"%s\", "
			    "\"pkgversion\": \"%s\" }, ",
-
			    pkg_dep_name(dep),
-
			    pkg_dep_version(dep));
+
			    dep->name, dep->version);
		sbuf_setpos(msg, sbuf_len(msg) - 2);
		sbuf_cat(msg, "]}}");
		break;
@@ -273,8 +272,8 @@ pipeevent(struct pkg_event *ev)
		    "\"depname\": \"%s\", "
		    "\"depversion\": \"%s\""
		    "}}" ,
-
		    pkg_dep_name(ev->e_missing_dep.dep),
-
		    pkg_dep_version(ev->e_missing_dep.dep));
+
		    ev->e_missing_dep.dep->name,
+
		    ev->e_missing_dep.dep->version);
		break;
	case PKG_EVENT_NOREMOTEDB:
		sbuf_printf(msg, "{ \"type\": \"ERROR_NOREMOTEDB\", "
modified libpkg/pkg_jobs.c
@@ -1094,10 +1094,8 @@ pkg_jobs_need_upgrade(struct pkg *rp, struct pkg *lp)
			return (true);
		}
		if (ret1 == EPKG_OK) {
-
			if ((strcmp(pkg_dep_get(rd, PKG_DEP_NAME),
-
			    pkg_dep_get(ld, PKG_DEP_NAME)) != 0) ||
-
			    (strcmp(pkg_dep_get(rd, PKG_DEP_ORIGIN),
-
			    pkg_dep_get(ld, PKG_DEP_ORIGIN)) != 0)) {
+
			if ((strcmp(rd->name, ld->name) != 0) ||
+
			    (strcmp(rd->origin, ld->origin) != 0)) {
				free(rp->reason);
				rp->reason = strdup("direct dependency changed");
				return (true);
modified libpkg/pkg_jobs_universe.c
@@ -262,7 +262,7 @@ pkg_jobs_universe_process_deps(struct pkg_jobs_universe *universe,

		if (npkg == NULL && rpkg == NULL) {
			pkg_emit_error("%s has a missing dependency: %s",
-
				pkg->name, pkg_dep_get(d, PKG_DEP_NAME));
+
				pkg->name, d->name);

			if (flags & DEPS_FLAG_FORCE_MISSING)
				continue;
modified libpkg/pkg_manifest.c
@@ -1002,11 +1002,11 @@ pkg_emit_object(struct pkg *pkg, short flags)
	map = NULL;
	while (pkg_deps(pkg, &dep) == EPKG_OK) {
		submap = ucl_object_typed_new(UCL_OBJECT);
-
		ucl_object_insert_key(submap, ucl_object_fromstring(pkg_dep_origin(dep)), "origin", 6, false);
-
		ucl_object_insert_key(submap, ucl_object_fromstring(pkg_dep_version(dep)), "version", 7, false);
+
		ucl_object_insert_key(submap, ucl_object_fromstring(dep->origin), "origin", 6, false);
+
		ucl_object_insert_key(submap, ucl_object_fromstring(dep->version), "version", 7, false);
		if (map == NULL)
			map = ucl_object_typed_new(UCL_OBJECT);
-
		ucl_object_insert_key(map, submap, pkg_dep_name(dep), 0, false);
+
		ucl_object_insert_key(map, submap, dep->name, 0, false);
	}
	if (map)
		ucl_object_insert_key(top, map, "deps", 4, false);
modified libpkg/pkg_old.c
@@ -131,9 +131,9 @@ pkg_old_emit_content(struct pkg *pkg, char **dest)
		sbuf_printf(content,
		    "@pkgdep %s-%s\n"
		    "@comment DEPORIGIN:%s\n",
-
		    pkg_dep_name(dep),
-
		    pkg_dep_version(dep),
-
		    pkg_dep_origin(dep));
+
		    dep->name,
+
		    dep->version,
+
		    dep->origin);
	}

	while (pkg_files(pkg, &file) == EPKG_OK) {
@@ -323,7 +323,7 @@ pkg_register_old(struct pkg *pkg)

	while (pkg_deps(pkg, &dep)) {
		snprintf(path, sizeof(path), "%s/%s-%s/+REQUIRED_BY", pkgdbdir,
-
		    pkg_dep_name(dep), pkg_dep_version(dep));
+
		    dep->name, dep->version);
		fp = fopen(path, "a");
		pkg_fprintf(fp, "%n-%v\n", pkg, pkg);
		fclose(fp);
modified libpkg/pkg_printf.c
@@ -1522,7 +1522,7 @@ format_dependency_name(struct sbuf *sbuf, const void *data,
{
	const struct pkg_dep	*dep = data;

-
	return (string_val(sbuf, pkg_dep_name(dep), p));
+
	return (string_val(sbuf, dep->name, p));
}

/*
@@ -1534,7 +1534,7 @@ format_dependency_origin(struct sbuf *sbuf, const void *data,
{
	const struct pkg_dep	*dep = data;

-
	return (string_val(sbuf, pkg_dep_origin(dep), p));
+
	return (string_val(sbuf, dep->origin, p));
}

/*
@@ -1546,7 +1546,7 @@ format_dependency_version(struct sbuf *sbuf, const void *data,
{
	const struct pkg_dep	*dep = data;

-
	return (string_val(sbuf, pkg_dep_version(dep), p));
+
	return (string_val(sbuf, dep->version, p));
}

/*
modified libpkg/pkgdb.c
@@ -1608,8 +1608,7 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int complete, int forced)
	 */

	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		if (run_prstmt(DEPS, pkg_dep_origin(dep),
-
		    pkg_dep_name(dep), pkg_dep_version(dep),
+
		if (run_prstmt(DEPS, dep->origin, dep->name, dep->version,
		    package_id) != SQLITE_DONE) {
			ERROR_SQLITE(s, SQL(DEPS));
			goto cleanup;
modified libpkg/private/pkg.h
@@ -180,9 +180,9 @@ struct pkg {
};

struct pkg_dep {
-
	struct sbuf	*origin;
-
	struct sbuf	*name;
-
	struct sbuf	*version;
+
	char		*origin;
+
	char		*name;
+
	char		*version;
	char		*uid;
	bool		 locked;
	UT_hash_handle	 hh;
modified libpkg/repo/binary/update.c
@@ -181,11 +181,8 @@ try_again:

	dep = NULL;
	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		if (pkg_repo_binary_run_prstatement(DEPS,
-
				pkg_dep_origin(dep),
-
				pkg_dep_name(dep),
-
				pkg_dep_version(dep),
-
				package_id) != SQLITE_DONE) {
+
		if (pkg_repo_binary_run_prstatement(DEPS, dep->origin,
+
		    dep->name, dep->version, package_id) != SQLITE_DONE) {
			ERROR_SQLITE(sqlite, pkg_repo_binary_sql_prstatement(DEPS));
			return (EPKG_FATAL);
		}