Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
A bit of refactoring
Marin Atanasov Nikolov committed 14 years ago
commit adf223691b5e36df5b0bbf73350572c8a1503ce8
parent e67617c
4 files changed +29 -23
modified libpkg/pkg.c
@@ -1142,3 +1142,21 @@ pkg_recompute_flatsize(struct pkg *pkg)
	}
	return (flatsize);
}
+

+
int
+
pkg_is_installed(struct pkgdb *db, const char *origin)
+
{
+
	struct pkg *pkg = NULL;
+
	struct pkgdb_it *it = NULL;
+
	int ret = EPKG_FATAL;
+

+
	if ((it = pkgdb_query(db, origin, MATCH_EXACT)) == NULL)
+
		return (EPKG_FATAL);
+

+
	ret = pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC);
+

+
	pkg_free(pkg);
+
	pkgdb_it_free(it);
+

+
	return (ret);
+
}
modified libpkg/pkg.h
@@ -578,6 +578,14 @@ const char *pkg_option_value(struct pkg_option *);
const char *pkg_shlib_name(struct pkg_shlib *);

/**
+
 * @param db A pointer to a struct pkgdb object
+
 * @param origin Package origin
+
 * @return EPKG_OK if the package is installed,
+
 * and != EPKG_OK if the package is not installed or an error occurred
+
 */
+
int pkg_is_installed(struct pkgdb *db, const char *origin); 
+

+
/**
 * Create a repository database.
 * @param path The path where the repository live.
 * @param callback A function which is called at every step of the process.
modified libpkg/pkg_add.c
@@ -120,8 +120,6 @@ pkg_add(struct pkgdb *db, const char *path, int flags)
	const char *origin;
	struct archive *a;
	struct archive_entry *ae;
-
	struct pkgdb_it *it;
-
	struct pkg *p = NULL;
	struct pkg *pkg = NULL;
	struct pkg_dep *dep = NULL;
	char myarch[BUFSIZ];
@@ -175,14 +173,8 @@ pkg_add(struct pkgdb *db, const char *path, int flags)
	/*
	 * Check if the package is already installed
	 */
-
	it = pkgdb_query(db, origin, MATCH_EXACT);
-
	if (it == NULL) {
-
		retcode = EPKG_FATAL;
-
		goto cleanup;
-
	}

-
	ret = pkgdb_it_next(it, &p, PKG_LOAD_BASIC);
-
	pkgdb_it_free(it);
+
	ret = pkg_is_installed(db, origin);

	if (ret == EPKG_OK) {
		pkg_emit_already_installed(pkg);
@@ -280,9 +272,6 @@ pkg_add(struct pkgdb *db, const char *path, int flags)
	if (a != NULL)
		archive_read_finish(a);

-
	if (p != NULL)
-
		pkg_free(p);
-

	pkg_free(pkg);

	return (retcode);
modified pkg/check.c
@@ -59,9 +59,7 @@ static void check_summary(struct pkgdb *db, struct deps_head *dh);
static int
check_deps(struct pkgdb *db, struct pkg *p, struct deps_head *dh)
{
-
	struct pkg *pkg = NULL;
	struct pkg_dep *dep = NULL;
-
	struct pkgdb_it *it = NULL;
	char *name, *version, *origin;
	int nbpkgs = 0;

@@ -72,22 +70,15 @@ check_deps(struct pkgdb *db, struct pkg *p, struct deps_head *dh)
	pkg_get(p, PKG_NAME, &name, PKG_VERSION, &version, PKG_ORIGIN, &origin);

	while (pkg_deps(p, &dep) == EPKG_OK) {
-
		if ((it = pkgdb_query(db, pkg_dep_get(dep, PKG_DEP_ORIGIN), MATCH_EXACT)) == NULL)
-
			return (0);
-
		
		/* do we have a missing dependency? */
-
		if (pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC) != EPKG_OK) {
+
		if (pkg_is_installed(db, pkg_dep_get(dep, PKG_DEP_ORIGIN)) != EPKG_OK) {
			printf("%s has a missing dependency: %s\n", origin,
-
					pkg_dep_get(dep, PKG_DEP_ORIGIN)),
+
			       pkg_dep_get(dep, PKG_DEP_ORIGIN)),
			add_missing_dep(dep, dh);
			nbpkgs++;
		}
-

-
		pkgdb_it_free(it);
	}
	
-
	pkg_free(pkg);
-

	return (nbpkgs);
}