]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - maxpath.c
Make keyd background itself by default
[onak.git] / maxpath.c
index 37142811797279165c67bdf9efe3a68991716609..ccd500839fe00f0a0d5eddb801822af3597f25fa 100644 (file)
--- a/maxpath.c
+++ b/maxpath.c
@@ -1,9 +1,10 @@
 /*
-       gpgstats.c - Program to produce stats on a GPG keyring.
-       Written by Jonathan McDowell <noodles@earth.li>.
-
-       19/02/2000 - Started writing (sort of).
-*/
+ * maxpath.c - Find the longest trust path in the key database.
+ * 
+ * Jonathan McDowell <noodles@earth.li>
+ *
+ * Copyright 2001-2002 Project Purple.
+ */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -13,6 +14,8 @@
 #include "hash.h"
 #include "keydb.h"
 #include "ll.h"
+#include "log.h"
+#include "onak-conf.h"
 #include "stats.h"
 
 void findmaxpath(unsigned long max)
@@ -21,15 +24,26 @@ void findmaxpath(unsigned long max)
        struct ll *curkey;
        unsigned long distance, loop;
 
-       printf("In findmaxpath\n");
        distance = 0;
        from = to = tmp = NULL;
-       hash_getkeysigs(0x5B430367);
 
+       /*
+        * My (noodles@earth.li, DSA) key is in the strongly connected set of
+        * keys, so we use it as a suitable starting seed.
+        */
+       config.dbbackend->cached_getkeysigs(0xF1BD4BE45B430367);
+
+       /*
+        * Loop through the hash examining each key present and finding the
+        * furthest key from it. If it's further than our current max then
+        * store it as our new max and print out the fact we've found a new
+        * max.
+        */
        for (loop = 0; (loop < HASHSIZE) && (distance < max); loop++) {
                curkey = gethashtableentry(loop);
                while (curkey != NULL && distance < max) {
-                       hash_getkeysigs(((struct stats_key *)
+                       config.dbbackend->cached_getkeysigs(
+                                       ((struct stats_key *)
                                        curkey->object)->keyid);
                        initcolour(false);
                        tmp = furthestkey((struct stats_key *)
@@ -38,7 +52,9 @@ void findmaxpath(unsigned long max)
                                from = (struct stats_key *)curkey->object;
                                to = tmp;
                                distance = to->colour;
-                               printf("Current max path (#%ld) is from %llX to %llX (%ld steps)\n", 
+                               printf("Current max path (#%ld) is from %"
+                                               PRIX64 " to %" PRIX64 
+                                               " (%ld steps)\n", 
                                                loop,
                                                from->keyid,
                                                to->keyid,
@@ -47,20 +63,26 @@ void findmaxpath(unsigned long max)
                        curkey=curkey->next;
                }
        }
-       printf("Max path is from %llX to %llX (%ld steps)\n",
+       printf("Max path is from %" PRIX64 " to %" PRIX64 " (%ld steps)\n",
                        from->keyid,
                        to->keyid,
                        distance);
+       dofindpath(to->keyid, from->keyid, false, 1);
 }
 
 int main(int argc, char *argv[])
 {
-       initdb();
+       readconfig(NULL);
+       initlogthing("maxpath", config.logfile);
+       config.dbbackend->initdb(true);
        inithash();
        findmaxpath(30);
        printf("--------\n");
        findmaxpath(30);
-       cleanupdb();
+       destroyhash();
+       config.dbbackend->cleanupdb();
+       cleanuplogthing();
+       cleanupconfig();
        
        return EXIT_SUCCESS;
 }