Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Simplify pkgdb_cache_init()
jlaffaye committed 15 years ago
commit c24f246936b42e777724f894adb7aaf3e884a1dc
parent dace271
3 files changed +10 -15
modified libpkg/pkg.h
@@ -5,7 +5,7 @@
#include <stdio.h> /* for size_t */

struct pkg {
-
	char *name_version;
+
	char name_version[FILENAME_MAX];
	const char *name;
	const char *version;
	const char *origin;
modified libpkg/pkgdb.c
@@ -22,10 +22,9 @@ pkgdb_free(struct pkgdb *db)
	cdb_free(&db->db);
	close(fd);

-
	PKGDB_FOREACH(pkg, db) {
-
		free(pkg->name_version);
+
	PKGDB_FOREACH(pkg, db)
		free(pkg);
-
	}
+

	free(db->pkgs);
}

modified libpkg/pkgdb_cache.c
@@ -297,8 +297,8 @@ void
pkgdb_cache_init(struct pkgdb *db, const char *pattern)
{
	int count, i;
+
	size_t patlen = 0;
	struct pkg *pkg;
-
	char *name;

	db->count = 0;

@@ -314,24 +314,20 @@ pkgdb_cache_init(struct pkgdb *db, const char *pattern)

	db->pkgs = calloc(count+1, sizeof(struct pkg *));

+
	if (pattern)
+
		patlen = strlen(pattern);
+

	for (i = 0; i < count; i++) {
		/* get package */
		if ((pkg = pkg_idx_query(&db->db, i)) == NULL)
			continue;

-
		if (asprintf(&name, "%s-%s", pkg->name, pkg->version) == -1) {
-
			warn("asprintf(%s-%s):", pkg->name, pkg->version);
-
			free(pkg);
-
			continue;
-
		}
+
		snprintf(pkg->name_version, FILENAME_MAX, "%s-%s", pkg->name, pkg->version);

-
		if (!pattern || strncmp(name, pattern, strlen(pattern)) == 0) {
-
			pkg->name_version = name;
+
		if (!pattern || strncmp(pkg->name_version, pattern, patlen) == 0)
			db->pkgs[db->count++] = pkg;
-
		} else {
+
		else
			free(pkg);
-
			free(name);
-
		}
	}

	/* sort packages */