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

Reply via email to