Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Restore jobs summary output.
Vsevolod Stakhov committed 12 years ago
commit 9af4ff1a0d7d1cda5587ad99975467b2e999f717
parent f0d999e
1 file changed +120 -106
modified pkg/utils.c
@@ -521,141 +521,155 @@ print_info(struct pkg * const pkg, uint64_t options)
	}
}

-
void
-
print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
+
static void
+
print_jobs_summary_pkg(struct pkg *pkg, pkg_jobs_t type, int64_t *oldsize,
+
		int64_t *newsize, int64_t *dlsize)
{
-
	struct pkg *pkg = NULL;
+
	const char *oldversion, *cachedir, *why;
	char path[MAXPATHLEN];
	struct stat st;
-
	const char *oldversion, *cachedir, *why;
-
	int64_t dlsize, oldsize, newsize;
	int64_t flatsize, oldflatsize, pkgsize;
	char size[7];
-
	va_list ap;
-
	pkg_jobs_t type;

-
	type = pkg_jobs_type(jobs);
-

-
	va_start(ap, msg);
-
	vprintf(msg, ap);
-
	va_end(ap);
-

-
	dlsize = oldsize = newsize = 0;
	flatsize = oldflatsize = pkgsize = 0;
	oldversion = NULL;
-
	
-
	pkg_config_string(PKG_CONFIG_CACHEDIR, &cachedir);
-

-
	while (pkg_jobs(jobs, &pkg) == EPKG_OK) {
-
		pkg_get(pkg, PKG_OLD_VERSION, &oldversion,
-
		    PKG_FLATSIZE, &flatsize, PKG_OLD_FLATSIZE, &oldflatsize,
-
		    PKG_PKGSIZE, &pkgsize, PKG_REASON, &why);
-

-
		if (pkg_is_locked(pkg)) {
-
			pkg_printf("\tPackage %n-%v is locked ", pkg, pkg);
-
			switch (type) {
-
			case PKG_JOBS_INSTALL:
-
			case PKG_JOBS_UPGRADE:
-
				/* If it's a new install, then it
-
				 * cannot have been locked yet. */
-
				if (oldversion != NULL) {
-
					switch(pkg_version_change(pkg)) {
-
					case PKG_UPGRADE:
-
						pkg_printf("and may not be upgraded to version %v\n", pkg);
-
						break;
-
					case PKG_REINSTALL:
-
						printf("and may not be reinstalled\n");
-
						break;
-
					case PKG_DOWNGRADE:
-
						pkg_printf("and may not be downgraded to version %v\n", pkg);
-
						break;
-
					}
-
					continue;
-
				} 
-
				break;
-
			case PKG_JOBS_DEINSTALL:
-
			case PKG_JOBS_AUTOREMOVE:
-
				printf("and may not be deinstalled\n");
-
				continue;
-
				break;
-
			case PKG_JOBS_FETCH:
-
				printf("but a new package can still be fetched\n");
-
				break;
-
			}

-
		}
+
	pkg_config_string(PKG_CONFIG_CACHEDIR, &cachedir);
+
	pkg_get(pkg, PKG_OLD_VERSION, &oldversion,
+
			PKG_FLATSIZE, &flatsize, PKG_OLD_FLATSIZE, &oldflatsize,
+
			PKG_PKGSIZE, &pkgsize, PKG_REASON, &why);

+
	if (pkg_is_locked(pkg)) {
+
		pkg_printf("\tPackage %n-%v is locked ", pkg, pkg);
		switch (type) {
		case PKG_JOBS_INSTALL:
		case PKG_JOBS_UPGRADE:
-
			pkg_snprintf(path, sizeof(path), "%S/%R", cachedir, pkg);
-

-
			if (stat(path, &st) == -1 || pkgsize != st.st_size)
-
				/* file looks corrupted (wrong size),
-
				   assume a checksum mismatch will
-
				   occur later and the file will be
-
				   fetched from remote again */
-

-
				dlsize += pkgsize;
-

+
			/* If it's a new install, then it
+
			 * cannot have been locked yet. */
			if (oldversion != NULL) {
-
				switch (pkg_version_change(pkg)) {
-
				case PKG_DOWNGRADE:
-
					pkg_printf("\tDowngrading %n: %V -> %v", pkg, pkg, pkg);
-
					if (pkg_repos_total_count() > 1)
-
						pkg_printf(" [%N]", pkg);
-
					printf("\n");
+
				switch(pkg_version_change(pkg)) {
+
				case PKG_UPGRADE:
+
					pkg_printf("and may not be upgraded to version %v\n", pkg);
					break;
				case PKG_REINSTALL:
-
					pkg_printf("\tReinstalling %n-%v", pkg, pkg);
-
					if (pkg_repos_total_count() > 1)
-
						pkg_printf(" [%N]", pkg);
-
					if (why != NULL)
-
						printf(" (%s)", why);
-
					printf("\n");
+
					printf("and may not be reinstalled\n");
					break;
-
				case PKG_UPGRADE:
-
					pkg_printf("\tUpgrading %n: %V -> %v", pkg, pkg, pkg);
-
					if (pkg_repos_total_count() > 1)
-
						pkg_printf(" [%N]", pkg);
-
					printf("\n");
+
				case PKG_DOWNGRADE:
+
					pkg_printf("and may not be downgraded to version %v\n", pkg);
					break;
				}
-
				oldsize += oldflatsize;
-
				newsize += flatsize;
-
			} else {
-
				newsize += flatsize;
-

-
				pkg_printf("\tInstalling %n: %v", pkg, pkg);
-
				if (pkg_repos_total_count() > 1)
-
					pkg_printf(" [%N]", pkg);
-
				printf("\n");
+
				return;
			}
			break;
		case PKG_JOBS_DEINSTALL:
		case PKG_JOBS_AUTOREMOVE:
-
			oldsize += oldflatsize;
-
			newsize += flatsize;
-
			
-
			pkg_printf("\t%n-%v\n", pkg, pkg);
+
			printf("and may not be deinstalled\n");
+
			return;
			break;
		case PKG_JOBS_FETCH:
-
			dlsize += pkgsize;
-
			pkg_snprintf(path, sizeof(path), "%S/%R", cachedir, pkg);
-
			if (stat(path, &st) != -1)
-
				oldsize = st.st_size;
-
			else
-
				oldsize = 0;
-
			dlsize -= oldsize;
+
			printf("but a new package can still be fetched\n");
+
			break;
+
		}

-
			humanize_number(size, sizeof(size), pkgsize, "B", HN_AUTOSCALE, 0);
+
	}

-
			pkg_printf("\t%n-%v ", pkg, pkg);
-
			printf("(%" PRId64 "%% of %s)\n", 100 - (100 * oldsize)/pkgsize, size);
-
			break;
+
	switch (type) {
+
	case PKG_JOBS_INSTALL:
+
	case PKG_JOBS_UPGRADE:
+
		pkg_snprintf(path, MAXPATHLEN, "%S/%R", cachedir, pkg);
+

+
		if (stat(path, &st) == -1 || pkgsize != st.st_size)
+
			/* file looks corrupted (wrong size),
+
					   assume a checksum mismatch will
+
					   occur later and the file will be
+
					   fetched from remote again */
+

+
			*dlsize += pkgsize;
+

+
		if (oldversion != NULL) {
+
			switch (pkg_version_change(pkg)) {
+
			case PKG_DOWNGRADE:
+
				pkg_printf("\tDowngrading %n: %V -> %v", pkg, pkg, pkg);
+
				if (pkg_repos_total_count() > 1)
+
					pkg_printf(" [%N]", pkg);
+
				printf("\n");
+
				break;
+
			case PKG_REINSTALL:
+
				pkg_printf("\tReinstalling %n-%v", pkg, pkg);
+
				if (pkg_repos_total_count() > 1)
+
					pkg_printf(" [%N]", pkg);
+
				if (why != NULL)
+
					printf(" (%s)", why);
+
				printf("\n");
+
				break;
+
			case PKG_UPGRADE:
+
				pkg_printf("\tUpgrading %n: %V -> %v", pkg, pkg, pkg);
+
				if (pkg_repos_total_count() > 1)
+
					pkg_printf(" [%N]", pkg);
+
				printf("\n");
+
				break;
+
			}
+
			*oldsize += oldflatsize;
+
			*newsize += flatsize;
+
		} else {
+
			*newsize += flatsize;
+

+
			pkg_printf("\tInstalling %n: %v", pkg, pkg);
+
			if (pkg_repos_total_count() > 1)
+
				pkg_printf(" [%N]", pkg);
+
			printf("\n");
		}
+
		break;
+
	case PKG_JOBS_DEINSTALL:
+
	case PKG_JOBS_AUTOREMOVE:
+
		*oldsize += oldflatsize;
+
		*newsize += flatsize;
+

+
		pkg_printf("\t%n-%v\n", pkg, pkg);
+
		break;
+
	case PKG_JOBS_FETCH:
+
		*dlsize += pkgsize;
+
		pkg_snprintf(path, MAXPATHLEN, "%S/%R", cachedir, pkg);
+
		if (stat(path, &st) != -1)
+
			*oldsize = st.st_size;
+
		else
+
			*oldsize = 0;
+
		*dlsize -= *oldsize;
+

+
		humanize_number(size, sizeof(size), pkgsize, "B", HN_AUTOSCALE, 0);
+

+
		pkg_printf("\t%n-%v ", pkg, pkg);
+
		printf("(%" PRId64 "%% of %s)\n", 100 - (100 * (*oldsize))/pkgsize, size);
+
		break;
+
	}
+
}
+

+
void
+
print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
+
{
+
	struct pkg *pkg = NULL;
+
	char size[7];
+
	va_list ap;
+
	pkg_jobs_t type;
+
	int64_t dlsize, oldsize, newsize;
+

+
	dlsize = oldsize = newsize = 0;
+
	type = pkg_jobs_type(jobs);
+

+
	va_start(ap, msg);
+
	vprintf(msg, ap);
+
	va_end(ap);
+

+
	while (pkg_jobs_add_iter(jobs, &pkg) == EPKG_OK) {
+
		print_jobs_summary_pkg(pkg, type, &oldsize, &newsize, &dlsize);
+
	}
+

+
	pkg = NULL;
+
	while (pkg_jobs_delete_iter(jobs, &pkg) == EPKG_OK) {
+
		print_jobs_summary_pkg(pkg, type, &oldsize, &newsize, &dlsize);
	}

+

	if (oldsize > newsize) {
		humanize_number(size, sizeof(size), oldsize - newsize, "B", HN_AUTOSCALE, 0);

@@ -686,7 +700,7 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
			break;
		case PKG_JOBS_DEINSTALL:
		case PKG_JOBS_AUTOREMOVE:
-
			printf("\nThe deinstallation will free %s\n", size);
+
			printf("\nThe deinstallation will require %s more space\n", size);
			break;
		case PKG_JOBS_FETCH:
			/* nothing to report here */