Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Fix dl size calculation
Baptiste Daroussin committed 14 years ago
commit 9f9bb364c3cc3c7f05dbc270f1416675b52e5b97
parent de90e33
1 file changed +12 -5
modified libpkg/pkg_jobs.c
@@ -311,23 +311,30 @@ pkg_jobs_fetch(struct pkg_jobs *j)
	struct pkg *pkg = NULL;
	struct sbuf *buf = sbuf_new_auto();
	struct statfs fs;
+
	struct stat st;
	char path[MAXPATHLEN + 1];
	int64_t dlsize = 0;
	const char *cachedir = NULL;
+
	const char *repopath = NULL;
+
	char cachedpath[MAXPATHLEN];
	char dlsz[7];
	char fsz[7];
	int ret = EPKG_OK;
	
+
	if (pkg_config_string(PKG_CONFIG_CACHEDIR, &cachedir) != EPKG_OK)
+
		return (EPKG_FATAL);
+

	/* check for available size to fetch */
	while (pkg_jobs(j, &p) == EPKG_OK) {
		int64_t pkgsize;
-
		pkg_get(p, PKG_NEW_PKGSIZE, &pkgsize);
-
		dlsize += pkgsize;
+
		pkg_get(p, PKG_NEW_PKGSIZE, &pkgsize, PKG_REPOPATH, repopath);
+
		snprintf(cachedpath, MAXPATHLEN, "%s/%s", cachedir, repopath);
+
		if (stat(cachedpath, &st) == -1)
+
			dlsize += pkgsize;
+
		else
+
			dlsize += pkgsize - st.st_size;
	}

-
	if (pkg_config_string(PKG_CONFIG_CACHEDIR, &cachedir) != EPKG_OK)
-
		return (EPKG_FATAL);
-

	while (statfs(cachedir, &fs) == -1) {
		if (errno == ENOENT) {
			if (mkdirs(cachedir) != EPKG_OK)