Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Directories are now also hash tables
Baptiste Daroussin committed 13 years ago
commit bbf72ab117d51475cfa0afc2f5ea50b4d6b652c9
parent 188a4e8
2 files changed +8 -9
modified libpkg/pkg.c
@@ -74,7 +74,7 @@ pkg_new(struct pkg **pkg, pkg_t type)
	STAILQ_INIT(&(*pkg)->deps);
	STAILQ_INIT(&(*pkg)->rdeps);
	(*pkg)->files = NULL;
-
	STAILQ_INIT(&(*pkg)->dirs);
+
	(*pkg)->dirs = NULL;
	STAILQ_INIT(&(*pkg)->options);
	STAILQ_INIT(&(*pkg)->users);
	STAILQ_INIT(&(*pkg)->groups);
@@ -462,7 +462,7 @@ pkg_dirs(struct pkg *pkg, struct pkg_dir **d)
{
	assert(pkg != NULL);

-
	PKG_LIST_NEXT(&pkg->dirs, *d);
+
	HASH_NEXT(pkg->dirs, (*d));
}

int
@@ -736,7 +736,7 @@ pkg_adddir_attr(struct pkg *pkg, const char *path, const char *uname, const char

	d->try = try;

-
	STAILQ_INSERT_TAIL(&pkg->dirs, d, next);
+
	HASH_ADD_STR(pkg->dirs, path, d);

	return (EPKG_OK);
}
@@ -889,9 +889,9 @@ pkg_list_is_empty(struct pkg *pkg, pkg_list list) {
	case PKG_CATEGORIES:
		return (STAILQ_EMPTY(&pkg->categories));
	case PKG_FILES:
-
		return (HASH_COUNT(pkg->files) == 0 ? 1 : 0);
+
		return ((HASH_COUNT(pkg->files) == 0));
	case PKG_DIRS:
-
		return (STAILQ_EMPTY(&pkg->dirs));
+
		return ((HASH_COUNT(pkg->dirs) == 0));
	case PKG_USERS:
		return (STAILQ_EMPTY(&pkg->users));
	case PKG_GROUPS:
@@ -909,7 +909,6 @@ pkg_list_free(struct pkg *pkg, pkg_list list) {
	struct pkg_option *o;
	struct pkg_license *l;
	struct pkg_category *c;
-
	struct pkg_dir *dir;
	struct pkg_user *u;
	struct pkg_group *g;
	struct pkg_shlib *sl;
@@ -940,7 +939,7 @@ pkg_list_free(struct pkg *pkg, pkg_list list) {
		pkg->flags &= ~PKG_LOAD_FILES;
		break;
	case PKG_DIRS:
-
		LIST_FREE(&pkg->dirs, dir, pkg_dir_free);
+
		HASH_FREE(pkg->dirs, pkg_dir, pkg_dir_free);
		pkg->flags &= ~PKG_LOAD_DIRS;
		break;
	case PKG_USERS:
modified libpkg/private/pkg.h
@@ -78,7 +78,7 @@ struct pkg {
	STAILQ_HEAD(deps, pkg_dep) deps;
	STAILQ_HEAD(rdeps, pkg_dep) rdeps;
	struct pkg_file *files;
-
	STAILQ_HEAD(dirs, pkg_dir) dirs;
+
	struct pkg_dir *dirs;
	STAILQ_HEAD(options, pkg_option) options;
	STAILQ_HEAD(users, pkg_user) users;
	STAILQ_HEAD(groups, pkg_group) groups;
@@ -125,7 +125,7 @@ struct pkg_dir {
	mode_t		 perm;
	int		 keep;
	bool		 try;
-
	STAILQ_ENTRY(pkg_dir) next;
+
	UT_hash_handle	 hh;
};

struct pkg_option {