diff options
author | James Bowes <jbowes@redhat.com> | 2008-06-23 11:28:00 -0400 |
---|---|---|
committer | James Bowes <jbowes@redhat.com> | 2008-06-23 14:04:47 -0400 |
commit | 1c08e4250944048d5eedcb8eb5553aaa3e232ec6 (patch) | |
tree | 1d8fc67ab18b41f56de63ccccfd14c0666d256b0 /src | |
parent | 13de66077f3f4c67705589bf0c36c25d9b9e10e1 (diff) |
Display progress when importing rpms
Diffstat (limited to 'src')
-rw-r--r-- | src/import-rpmdb.c | 5 | ||||
-rw-r--r-- | src/import-yum.c | 15 | ||||
-rw-r--r-- | src/main.c | 6 |
3 files changed, 24 insertions, 2 deletions
diff --git a/src/import-rpmdb.c b/src/import-rpmdb.c index 3b4851c..cbef6a8 100644 --- a/src/import-rpmdb.c +++ b/src/import-rpmdb.c @@ -90,6 +90,7 @@ razor_set_create_from_rpmdb(void) union rpm_entry basenames, dirnames, dirindexes; char filename[PATH_MAX], evr[128], buf[16]; rpmdb db; + int imported_count = 0; rpmReadConfigFiles(NULL, NULL); @@ -162,9 +163,13 @@ razor_set_create_from_rpmdb(void) } razor_importer_finish_package(importer); + + printf("\rimporting %d", ++imported_count); + fflush(stdout); } rpmdbClose(db); + printf("\nsaving\n"); return razor_importer_finish(importer); } diff --git a/src/import-yum.c b/src/import-yum.c index cb4ea7a..fd78dc3 100644 --- a/src/import-yum.c +++ b/src/import-yum.c @@ -62,6 +62,8 @@ struct yum_context { char pkgid[128]; uint32_t property_type; int state; + + int total, current; }; static uint32_t @@ -90,7 +92,12 @@ yum_primary_start_element(void *data, const char *name, const char **atts) uint32_t pre, relation, flags; int i; - if (strcmp(name, "name") == 0) { + if (strcmp(name, "metadata") == 0) { + for (i = 0; atts[i]; i += 2) { + if (strcmp(atts[i], "packages") == 0) + ctx->total = atoi(atts[i + 1]); + } + } else if (strcmp(name, "name") == 0) { ctx->state = YUM_STATE_PACKAGE_NAME; ctx->p = ctx->name; } else if (strcmp(name, "arch") == 0) { @@ -208,6 +215,9 @@ yum_primary_end_element (void *data, const char *name) XML_StopParser(ctx->current_parser, XML_TRUE); ctx->current_parser = ctx->filelists_parser; + + printf("\rimporting %d/%d", ++ctx->current, ctx->total); + fflush(stdout); } } @@ -313,6 +323,8 @@ razor_set_create_from_yum(void) ctx.current_parser = ctx.primary_parser; + ctx.current = 0; + do { XML_GetParsingStatus(ctx.current_parser, &status); switch (status.parsing) { @@ -348,5 +360,6 @@ razor_set_create_from_yum(void) gzclose(primary); gzclose(filelists); + printf ("\nsaving\n"); return razor_importer_finish(ctx.importer); } @@ -535,7 +535,7 @@ command_import_rpms(int argc, const char *argv[]) struct razor_importer *importer; struct razor_set *set; struct razor_rpm *rpm; - int len; + int len, imported_count = 0; char filename[256]; const char *dirname = argv[0]; @@ -569,6 +569,9 @@ command_import_rpms(int argc, const char *argv[]) break; } razor_rpm_close(rpm); + + printf("\rimporting %d", ++imported_count); + fflush(stdout); } if (de != NULL) { @@ -576,6 +579,7 @@ command_import_rpms(int argc, const char *argv[]) return -1; } + printf("\nsaving\n"); set = razor_importer_finish(importer); razor_set_write(set, repo_filename, RAZOR_REPO_FILE_MAIN); |