commit: 7fc3cf2b4baddc8b98c994b8ee024330d8f29956
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 1 16:36:28 2018 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Mar 1 16:36:28 2018 +0000
URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=7fc3cf2b
scripts/rsync-generation/hashgen: report some stats
scripts/rsync-generation/hashgen.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/scripts/rsync-generation/hashgen.c
b/scripts/rsync-generation/hashgen.c
index 56abd691a3..446299f92e 100644
--- a/scripts/rsync-generation/hashgen.c
+++ b/scripts/rsync-generation/hashgen.c
@@ -795,6 +795,10 @@ verify_gpg_sig(const char *path)
return ret;
}
+static size_t checked_manifests = 0;
+static size_t checked_files = 0;
+static size_t failed_files = 0;
+
static char
verify_file(const char *dir, char *mfline, const char *mfest)
{
@@ -849,11 +853,14 @@ verify_file(const char *dir, char *mfline, const char
*mfest)
return 1;
}
+ checked_files++;
+
if (flen != fsize) {
printf("%s:%s:\n- file size mismatch\n"
" got: %zd\n"
" expected: %lld\n",
mfest, path, flen, fsize);
+ failed_files++;
return 1;
}
@@ -959,6 +966,7 @@ verify_file(const char *dir, char *mfline, const char
*mfest)
ret = 1;
}
+ failed_files += ret;
return ret;
}
@@ -1295,6 +1303,7 @@ verify_manifest(const char *dir, const char *manifest)
qsort(elems, elemslen, sizeof(elems[0]), compare_elems);
snprintf(buf, sizeof(buf), "%s/%s", dir, manifest);
ret = verify_dir(dir, elems, elemslen, 0, buf + 2);
+ checked_manifests++;
while (elemslen-- > 0)
free(elems[elemslen]);
@@ -1309,6 +1318,11 @@ process_dir_vrfy(const char *dir)
char buf[8192];
int newhashes;
char *ret = NULL;
+ struct timeval startt;
+ struct timeval finisht;
+ double etime;
+
+ gettimeofday(&startt, NULL);
fprintf(stdout, "verifying %s...\n", dir);
snprintf(buf, sizeof(buf), "%s/metadata/layout.conf", dir);
@@ -1337,6 +1351,12 @@ process_dir_vrfy(const char *dir)
if (verify_manifest(".\0", str_manifest) != 0)
ret = "manifest verification failed";
+ gettimeofday(&finisht, NULL);
+
+ etime = ((double)((finisht.tv_sec - startt.tv_sec) * 1000000 +
+ finisht.tv_usec) - (double)startt.tv_usec) /
1000000.0;
+ printf("checked %zd Manifests, %zd files, %zd failures in %.02fs\n",
+ checked_manifests, checked_files, failed_files, etime);
return ret;
}