Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
More fixes to displaying.
Vsevolod Stakhov committed 11 years ago
commit b8f133999be37530d4401f8e6694c19d8283f8e4
parent 175fa67
3 files changed +32 -12
modified src/fetch.c
@@ -2,6 +2,7 @@
 * Copyright (c) 2011-2012 Marin Atanasov Nikolov <dnaeon@gmail.com>
 * Copyright (c) 2013-2014 Matthew Seaman <matthew@FreeBSD.org>
 * Copyright (c) 2012-2013 Bryan Drewery <bdrewery@FreeBSD.org>
+
 * Copyright (c) 2014 Vsevolod Stakhov <vsevolod@FreeBSD.org>
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
@@ -60,7 +61,7 @@ exec_fetch(int argc, char **argv)
	const char *destdir = NULL;
	int		 ch;
	int		 retcode = EX_SOFTWARE;
-
	bool		 upgrades_for_installed = false, rc;
+
	bool		 upgrades_for_installed = false, rc, csum_only = false;
	unsigned	 mode;
	match_t		 match = MATCH_EXACT;
	pkg_flags	 f = PKG_FLAG_NONE;
@@ -122,6 +123,7 @@ exec_fetch(int argc, char **argv)
			f |= PKG_FLAG_FETCH_MIRROR;
			break;
		case 'o':
+
			f |= PKG_FLAG_FETCH_MIRROR;
			destdir = optarg;
			break;
		default:
@@ -205,8 +207,16 @@ exec_fetch(int argc, char **argv)
		goto cleanup;

	if (!quiet) {
-
		print_jobs_summary(jobs, "The following packages will be fetched:\n\n");
-
		rc = query_yesno(false, "\nProceed with fetching packages [y/N]: ");
+
		rc = print_jobs_summary(jobs, "The following packages will be fetched:\n\n");
+

+
		if (rc != 0)
+
			rc = query_yesno(false, "\nProceed with fetching packages [y/N]: ");
+
		else {
+
			printf("No packages are required to be fetched.\n");
+
			rc = query_yesno(false, "Check the integrity of packages "
+
							"downloaded [y/N]: ");
+
			csum_only = true;
+
		}
	}
	else {
		rc = true;
@@ -215,6 +225,9 @@ exec_fetch(int argc, char **argv)
	if (!rc || pkg_jobs_apply(jobs) != EPKG_OK)
		goto cleanup;

+
	if (csum_only && !quiet)
+
		printf("Integrity check was successful.\n");
+

	retcode = EX_OK;

cleanup:
modified src/pkgcli.h
@@ -254,7 +254,7 @@ bool query_tty_yesno(bool deft, const char *msg, ...);
int info_flags(uint64_t opt, bool remote);
void print_info(struct pkg * const pkg, uint64_t opt);
char *absolutepath(const char *src, char *dest, size_t dest_len);
-
void print_jobs_summary(struct pkg_jobs *j, const char *msg, ...);
+
int print_jobs_summary(struct pkg_jobs *j, const char *msg, ...);
int hash_file(const char *, char[SHA256_DIGEST_LENGTH * 2 +1]);

int event_callback(void *data, struct pkg_event *ev);
modified src/utils.c
@@ -755,6 +755,10 @@ set_jobs_summary_pkg(struct pkg_jobs *jobs,

			if (pkgsize != st.st_size)
				*dlsize += pkgsize;
+
			else {
+
				free(it);
+
				return;
+
			}
		}
		else
			*dlsize += pkgsize;
@@ -853,14 +857,14 @@ static const char* pkg_display_messages[PKG_DISPLAY_MAX + 1] = {
	[PKG_DISPLAY_MAX] = NULL
};

-
void
+
int
print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
{
	struct pkg *new_pkg, *old_pkg;
	void *iter = NULL;
	char size[7];
	va_list ap;
-
	int type;
+
	int type, displayed = 0;
	int64_t dlsize, oldsize, newsize;
	struct pkg_solved_display_item *disp[PKG_DISPLAY_MAX], *cur, *tmp;

@@ -868,21 +872,22 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
	type = pkg_jobs_type(jobs);
	memset(disp, 0, sizeof (disp));

-
	if (msg != NULL) {
-
		va_start(ap, msg);
-
		vprintf(msg, ap);
-
		va_end(ap);
-
	}
-

	while (pkg_jobs_iter(jobs, &iter, &new_pkg, &old_pkg, &type))
		set_jobs_summary_pkg(jobs, new_pkg, old_pkg, type, &oldsize,
			&newsize, &dlsize, disp);

	for (type = 0; type < PKG_DISPLAY_MAX; type ++) {
		if (disp[type] != NULL) {
+
			if (msg != NULL) {
+
				va_start(ap, msg);
+
				vprintf(msg, ap);
+
				va_end(ap);
+
				msg = NULL;
+
			}
			printf("%s:\n", pkg_display_messages[type]);
			DL_FOREACH_SAFE(disp[type], cur, tmp) {
				display_summary_item(cur, newsize, dlsize);
+
				displayed ++;
				free(cur);
			}
			puts("");
@@ -901,6 +906,8 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
		humanize_number(size, sizeof(size), dlsize, "B", HN_AUTOSCALE, 0);
		printf("%s to be downloaded\n", size);
	}
+

+
	return (displayed);
}

int