| |
}
|
| |
}
|
| |
|
| - |
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);
|
| |
|