#include "lib/manifest.h"
#include "debug.h"
-int rpmcliPackagesTotal = 0;
-int rpmcliHashesCurrent = 0;
-int rpmcliHashesTotal = 0;
-int rpmcliProgressCurrent = 0;
-int rpmcliProgressTotal = 0;
+static int rpmcliPackagesTotal = 0;
+static int rpmcliHashesCurrent = 0;
+static int rpmcliHashesTotal = 0;
+static int rpmcliProgressCurrent = 0;
+static int rpmcliProgressTotal = 0;
/**
* Print a CLI progress bar.
{
int hashesNeeded;
- rpmcliHashesTotal = (isatty (STDOUT_FILENO) ? 44 : 50);
+ rpmcliHashesTotal = (isatty (STDOUT_FILENO) ? 34 : 40);
if (rpmcliHashesCurrent != rpmcliHashesTotal) {
float pct = (total ? (((float) amount) / total) : 1.0);
void * data)
{
Header h = (Header) arg;
- char * s;
int flags = (int) ((long)data);
void * rc = NULL;
const char * filename = (const char *)key;
static FD_t fd = NULL;
+ static int state = -1;
switch (what) {
case RPMCALLBACK_INST_OPEN_FILE:
break;
case RPMCALLBACK_INST_START:
+ case RPMCALLBACK_UNINST_START:
+ if (state != what) {
+ state = what;
+ if (flags & INSTALL_HASH) {
+ if (what == RPMCALLBACK_INST_START) {
+ fprintf(stdout, _("Updating / installing...\n"));
+ } else {
+ fprintf(stdout, _("Cleaning up / removing...\n"));
+ }
+ fflush(stdout);
+ }
+ }
+
rpmcliHashesCurrent = 0;
if (h == NULL || !(flags & INSTALL_LABEL))
break;
- /* @todo Remove headerFormat() on a progress callback. */
if (flags & INSTALL_HASH) {
- s = headerFormat(h, "%{NAME}", NULL);
+ char *s = headerGetAsString(h, RPMTAG_NEVR);
if (isatty (STDOUT_FILENO))
- fprintf(stdout, "%4d:%-23.23s", rpmcliProgressCurrent + 1, s);
+ fprintf(stdout, "%4d:%-33.33s", rpmcliProgressCurrent + 1, s);
else
- fprintf(stdout, "%-28.28s", s);
+ fprintf(stdout, "%-38.38s", s);
(void) fflush(stdout);
- s = _free(s);
+ free(s);
} else {
- s = headerFormat(h, "%{NAME}-%{VERSION}-%{RELEASE}", NULL);
+ char *s = headerGetAsString(h, RPMTAG_NEVRA);
fprintf(stdout, "%s\n", s);
(void) fflush(stdout);
- s = _free(s);
+ free(s);
}
break;
+ case RPMCALLBACK_INST_STOP:
+ break;
+
case RPMCALLBACK_TRANS_PROGRESS:
case RPMCALLBACK_INST_PROGRESS:
+ case RPMCALLBACK_UNINST_PROGRESS:
if (flags & INSTALL_PERCENT)
fprintf(stdout, "%%%% %f\n", (double) (total
? ((((float) amount) / total) * 100)
rpmcliHashesCurrent = 0;
rpmcliProgressTotal = 1;
rpmcliProgressCurrent = 0;
+ rpmcliPackagesTotal = total;
+ state = what;
if (!(flags & INSTALL_LABEL))
break;
if (flags & INSTALL_HASH)
- fprintf(stdout, "%-28s", _("Preparing..."));
+ fprintf(stdout, "%-38s", _("Preparing..."));
else
- fprintf(stdout, "%s\n", _("Preparing packages for installation..."));
+ fprintf(stdout, "%s\n", _("Preparing packages..."));
(void) fflush(stdout);
break;
rpmcliProgressCurrent = 0;
break;
- case RPMCALLBACK_UNINST_PROGRESS:
- break;
- case RPMCALLBACK_UNINST_START:
- break;
case RPMCALLBACK_UNINST_STOP:
break;
case RPMCALLBACK_UNPACK_ERROR:
break;
case RPMCALLBACK_SCRIPT_ERROR:
break;
+ case RPMCALLBACK_SCRIPT_START:
+ break;
+ case RPMCALLBACK_SCRIPT_STOP:
+ break;
case RPMCALLBACK_UNKNOWN:
default:
break;
int rc;
/* Try to read a package manifest. */
- FD_t fd = Fopen(*eiu->fnp, "r.fpio");
+ FD_t fd = Fopen(*eiu->fnp, "r.ufdio");
if (fd == NULL || Ferror(fd)) {
rpmlog(RPMLOG_ERR, _("open of %s failed: %s\n"), *eiu->fnp,
Fstrerror(fd));
break;
}
- mi = rpmdbFreeIterator(mi);
+ rpmdbFreeIterator(mi);
return (oldH != NULL);
}
if (fileArgv == NULL) goto exit;
- rpmcliPackagesTotal = 0;
-
(void) rpmtsSetFlags(ts, ia->transFlags);
relocations = ia->relocations;
(void) rpmtsSetFlags(ts, ia->transFlags);
-#ifdef NOTYET /* XXX no callbacks on erase yet */
setNotifyFlag(ia, ts);
-#endif
qfmt = rpmExpand("%{?_query_all_fmt}\n", NULL);
for (arg = argv; *arg; arg++) {
- rpmdbMatchIterator mi;
- int matches = 0;
+ rpmdbMatchIterator mi = rpmtsInitIterator(ts, RPMDBI_LABEL, *arg, 0);
+ int matches = rpmdbGetIteratorCount(mi);
int erasing = 1;
- /* Iterator count isn't reliable with labels, count manually... */
- mi = rpmtsInitIterator(ts, RPMDBI_LABEL, *arg, 0);
- while (rpmdbNextIterator(mi) != NULL) {
- matches++;
- }
- rpmdbFreeIterator(mi);
-
if (! matches) {
rpmlog(RPMLOG_ERR, _("package %s is not installed\n"), *arg);
numFailed++;
erasing = 0;
}
- mi = rpmtsInitIterator(ts, RPMDBI_LABEL, *arg, 0);
while ((h = rpmdbNextIterator(mi)) != NULL) {
if (erasing) {
(void) rpmtsAddEraseElement(ts, h, -1);
free(nevra);
}
}
- mi = rpmdbFreeIterator(mi);
}
+ rpmdbFreeIterator(mi);
}
free(qfmt);
rpmtsSetVSFlags(ts, (specFilePtr) ? (rpmtsVSFlags(ts) | RPMVSF_NEEDPAYLOAD) : rpmtsVSFlags(ts));
rpmRC rpmrc = rpmInstallSourcePackage(ts, fd, specFilePtr, cookie);
rc = (rpmrc == RPMRC_OK ? 0 : 1);
- ovsflags = rpmtsSetVSFlags(ts, ovsflags);
+ rpmtsSetVSFlags(ts, ovsflags);
}
if (rc != 0) {
rpmlog(RPMLOG_ERR, _("%s cannot be installed\n"), arg);