Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Remove trailing slashes during package fetch
Marin Atanasov Nikolov committed 14 years ago
commit 9bcb44babdccf7d0fff092c1e220ff37862ea2a6
parent c33630c
1 file changed +18 -7
modified libpkg/pkg_repo.c
@@ -24,14 +24,20 @@ int
pkg_repo_fetch(struct pkg *pkg)
{
	char dest[MAXPATHLEN + 1];
+
	char url[MAXPATHLEN + 1];
	char cksum[SHA256_DIGEST_LENGTH * 2 +1];
-
	char *path;
-
	char *url;
+
	char *path = NULL;
+
	const char *packagesite = NULL;
	int retcode = EPKG_OK;

	assert((pkg->type & PKG_REMOTE) == PKG_REMOTE ||
		(pkg->type & PKG_UPGRADE) == PKG_UPGRADE);

+
	if ((packagesite = pkg_config("PACKAGESITE")) == NULL) {
+
		pkg_emit_error("pkg_repo_fetch(): %s", "PACKAGESITE is not defined");
+
		return (EPKG_FATAL);
+
	}
+

	snprintf(dest, sizeof(dest), "%s/%s", pkg_config("PKG_CACHEDIR"),
			 pkg_get(pkg, PKG_REPOPATH));

@@ -45,14 +51,19 @@ pkg_repo_fetch(struct pkg *pkg)
		retcode = EPKG_FATAL;
		goto cleanup;
	}
+

	if ((retcode = mkdirs(path)) != 0)
		goto cleanup;

-
	asprintf(&url, "%s/%s", pkg_config("PACKAGESITE"),
-
			 pkg_get(pkg, PKG_REPOPATH));
+
	if (packagesite[strlen(packagesite) - 1] == '/')
+
		snprintf(url, sizeof(url), "%s%s", packagesite,
+
				pkg_get(pkg, PKG_REPOPATH));
+
	else
+
		snprintf(url, sizeof(url), "%s/%s", packagesite,
+
				pkg_get(pkg, PKG_REPOPATH));

	retcode = pkg_fetch_file(url, dest);
-
	free(url);
+

	if (retcode != EPKG_OK)
		goto cleanup;

@@ -60,8 +71,8 @@ pkg_repo_fetch(struct pkg *pkg)
	retcode = sha256_file(dest, cksum);
	if (retcode == EPKG_OK)
		if (strcmp(cksum, pkg_get(pkg, PKG_CKSUM))) {
-
			pkg_emit_error("%s failed checksum from repo",
-
						   pkg_get(pkg, PKG_NAME));
+
			pkg_emit_error("%s-%s failed checksum from repository",
+
						   pkg_get(pkg, PKG_NAME), pkg_get(pkg, PKG_VERSION));
			retcode = EPKG_FATAL;
		}