# HG changeset patch # User James Bowes # Date 1214244287 14400 # Node ID 23c56c3f044967eb7de762e526fd84f4ff37f42e # Parent 63644cc28e0b500846ebe9a54417e3f4ab04368a Display progress when importing rpms diff -r 63644cc28e0b -r 23c56c3f0449 src/import-rpmdb.c --- a/src/import-rpmdb.c Mon Jun 23 13:54:56 2008 -0400 +++ b/src/import-rpmdb.c Mon Jun 23 14:04:47 2008 -0400 @@ -90,6 +90,7 @@ 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_importer_finish_package(importer); + + printf("\rimporting %d", ++imported_count); + fflush(stdout); } rpmdbClose(db); + printf("\nsaving\n"); return razor_importer_finish(importer); } diff -r 63644cc28e0b -r 23c56c3f0449 src/import-yum.c --- a/src/import-yum.c Mon Jun 23 13:54:56 2008 -0400 +++ b/src/import-yum.c Mon Jun 23 14:04:47 2008 -0400 @@ -62,6 +62,8 @@ char pkgid[128]; uint32_t property_type; int state; + + int total, current; }; static uint32_t @@ -90,7 +92,12 @@ 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 @@ 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 @@ ctx.current_parser = ctx.primary_parser; + ctx.current = 0; + do { XML_GetParsingStatus(ctx.current_parser, &status); switch (status.parsing) { @@ -348,5 +360,6 @@ gzclose(primary); gzclose(filelists); + printf ("\nsaving\n"); return razor_importer_finish(ctx.importer); } diff -r 63644cc28e0b -r 23c56c3f0449 src/main.c --- a/src/main.c Mon Jun 23 13:54:56 2008 -0400 +++ b/src/main.c Mon Jun 23 14:04:47 2008 -0400 @@ -535,7 +535,7 @@ 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 @@ break; } razor_rpm_close(rpm); + + printf("\rimporting %d", ++imported_count); + fflush(stdout); } if (de != NULL) { @@ -576,6 +579,7 @@ return -1; } + printf("\nsaving\n"); set = razor_importer_finish(importer); razor_set_write(set, repo_filename, RAZOR_REPO_FILE_MAIN);