Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Register the package before trying to install it.
Will Andrews committed 15 years ago
commit a732c173e34d031598418bb2e42506b965ab57ca
parent 1b4e4d832a2012b69ba89589d45d802811c35f3b
1 file changed +11 -3
modified libpkg/pkg_add.c
@@ -65,6 +65,7 @@ pkg_add(struct pkgdb *db, const char *path, struct pkg **pkg_p)
	char dpath[MAXPATHLEN];
	const char *basedir;
	const char *ext;
+
	int registered = 0;
	int retcode = EPKG_OK;
	int ret;
	int i;
@@ -147,6 +148,13 @@ pkg_add(struct pkgdb *db, const char *path, struct pkg **pkg_p)
		}
	}

+
	/* Register the package before installing it in case there are
+
	 * problems that could be caught here. */
+
	retcode = pkgdb_register_pkg(db, pkg);
+
	registered = 1;
+
	if (retcode != EPKG_OK)
+
		goto cleanup;
+

	/*
	 * Execute pre-install scripts
	 */
@@ -215,12 +223,12 @@ pkg_add(struct pkgdb *db, const char *path, struct pkg **pkg_p)

	cleanup:

+
	if (registered && retcode != EPKG_OK)
+
		pkgdb_unregister_pkg(db, pkg_get(pkg, PKG_ORIGIN));
+

	if (a != NULL)
		archive_read_finish(a);

-
	if (retcode == EPKG_OK)
-
		retcode = pkgdb_register_pkg(db, pkg);
-

	if (pkg_p != NULL)
		*pkg_p = (retcode == EPKG_OK) ? pkg : NULL;
	else