]> the.earth.li Git - onak.git/blobdiff - maxpath.c
Bump debhelper compat level to 13
[onak.git] / maxpath.c
index 81a2b22b8d2f4fbfa126dcc7751ee08e4f645cc6..f088cc615274cc6eb24a55c73f7391c9f7feffef 100644 (file)
--- a/maxpath.c
+++ b/maxpath.c
  * more details.
  *
  * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
+#include <getopt.h>
+#include <inttypes.h>
+#include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include "stats.h"
 #include "hash.h"
 #include "keydb.h"
 #include "ll.h"
@@ -29,7 +30,7 @@
 #include "onak-conf.h"
 #include "stats.h"
 
-void findmaxpath(unsigned long max)
+void findmaxpath(struct onak_dbctx *dbctx, unsigned long max)
 {
        struct stats_key *from, *to, *tmp;
        struct ll *curkey;
@@ -42,7 +43,7 @@ void findmaxpath(unsigned long max)
         * My (noodles@earth.li, RSA) key is in the strongly connected set of
         * keys, so we use it as a suitable starting seed.
         */
-       config.dbbackend->cached_getkeysigs(0x94FA372B2DA8B985);
+       dbctx->cached_getkeysigs(dbctx, 0x94FA372B2DA8B985);
 
        /*
         * Loop through the hash examining each key present and finding the
@@ -53,11 +54,11 @@ void findmaxpath(unsigned long max)
        for (loop = 0; (loop < HASHSIZE) && (distance < max); loop++) {
                curkey = gethashtableentry(loop);
                while (curkey != NULL && distance < max) {
-                       config.dbbackend->cached_getkeysigs(
+                       dbctx->cached_getkeysigs(dbctx,
                                        ((struct stats_key *)
                                        curkey->object)->keyid);
                        initcolour(false);
-                       tmp = furthestkey((struct stats_key *)
+                       tmp = furthestkey(dbctx, (struct stats_key *)
                                                curkey->object);
                        if (tmp->colour > distance) {
                                from = (struct stats_key *)curkey->object;
@@ -78,20 +79,40 @@ void findmaxpath(unsigned long max)
                        from->keyid,
                        to->keyid,
                        distance);
-       dofindpath(to->keyid, from->keyid, false, 1);
+       dofindpath(dbctx, to->keyid, from->keyid, false, 1);
 }
 
 int main(int argc, char *argv[])
 {
-       readconfig(NULL);
+       int optchar;
+       char *configfile = NULL;
+       struct onak_dbctx *dbctx;
+
+       while ((optchar = getopt(argc, argv, "c:")) != -1 ) {
+               switch (optchar) {
+               case 'c':
+                       if (configfile != NULL) {
+                               free(configfile);
+                       }
+                       configfile = strdup(optarg);
+                       break;
+               }
+       }
+
+       readconfig(configfile);
+       free(configfile);
        initlogthing("maxpath", config.logfile);
-       config.dbbackend->initdb(true);
-       inithash();
-       findmaxpath(30);
-       printf("--------\n");
-       findmaxpath(30);
-       destroyhash();
-       config.dbbackend->cleanupdb();
+       dbctx = config.dbinit(config.backend, true);
+       if (dbctx != NULL) {
+               inithash();
+               findmaxpath(dbctx, 30);
+               printf("--------\n");
+               findmaxpath(dbctx, 30);
+               destroyhash();
+               dbctx->cleanupdb(dbctx);
+       } else {
+               fprintf(stderr, "Couldn't initialize key database.\n");
+       }
        cleanuplogthing();
        cleanupconfig();