X-Git-Url: http://the.earth.li/gitweb/?p=onak.git;a=blobdiff_plain;f=stats.c;h=91c916688f4473b88005147424238f2d78871b34;hp=da1f13c54e007b70fd8046b95b62f327fd58b602;hb=76f079e5ebdb34acaaa2462a8d915ee06d3c8425;hpb=ad30ce51bf609c35cd99a9ca46dd859b17d8164a diff --git a/stats.c b/stats.c index da1f13c..91c9166 100644 --- a/stats.c +++ b/stats.c @@ -1,11 +1,22 @@ /* * stats.c - various routines to do stats on the key graph * - * Jonathan McDowell + * Copyright 2000-2004,2007-2009 Jonathan McDowell * - * Copyright 2000-2002 Project Purple + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . */ +#include #include #include @@ -54,7 +65,8 @@ void initcolour(bool parent) * key we have. It returns as soon as a path is found or when we run out * of keys; whichever comes sooner. */ -unsigned long findpath(struct stats_key *have, struct stats_key *want) +unsigned long findpath(struct onak_dbctx *dbctx, + struct stats_key *have, struct stats_key *want) { struct ll *keys = NULL; struct ll *oldkeys = NULL; @@ -68,7 +80,7 @@ unsigned long findpath(struct stats_key *have, struct stats_key *want) oldkeys = keys; while ((!cleanup()) && keys != NULL && have->colour == 0) { - sigs = cached_getkeysigs(((struct stats_key *) + sigs = dbctx->cached_getkeysigs(dbctx, ((struct stats_key *) keys->object)->keyid); while ((!cleanup()) && sigs != NULL && have->colour == 0) { /* @@ -120,29 +132,26 @@ unsigned long findpath(struct stats_key *have, struct stats_key *want) * key we have. It returns as soon as a path is found or when we run out * of keys; whichever comes sooner. */ -void dofindpath(uint64_t have, uint64_t want, bool html, int count) +void dofindpath(struct onak_dbctx *dbctx, + uint64_t have, uint64_t want, bool html, int count) { struct stats_key *keyinfoa, *keyinfob, *curkey; - uint64_t fullhave, fullwant; int rec; int pathnum; char *uid; - fullhave = getfullkeyid(have); - fullwant = getfullkeyid(want); - /* * Make sure the keys we have and want are in the cache. */ - (void) cached_getkeysigs(fullhave); - (void) cached_getkeysigs(fullwant); + (void) dbctx->cached_getkeysigs(dbctx, have); + (void) dbctx->cached_getkeysigs(dbctx, want); - if ((keyinfoa = findinhash(fullhave)) == NULL) { - printf("Couldn't find key 0x%llX.\n", have); + if ((keyinfoa = findinhash(have)) == NULL) { + printf("Couldn't find key 0x%016" PRIX64 ".\n", have); return; } - if ((keyinfob = findinhash(fullwant)) == NULL) { - printf("Couldn't find key 0x%llX.\n", want); + if ((keyinfob = findinhash(want)) == NULL) { + printf("Couldn't find key 0x%016" PRIX64 ".\n", want); return; } @@ -153,7 +162,7 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count) * Fill the tree info up. */ initcolour(true); - rec = findpath(keyinfoa, keyinfob); + rec = findpath(dbctx, keyinfoa, keyinfob); keyinfob->parent = 0; printf("%s%d nodes examined. %ld elements in the hash%s\n", @@ -163,8 +172,8 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count) html ? "
" : ""); if (keyinfoa->colour == 0) { if (pathnum == 0) { - printf("Can't find a link from 0x%08llX to " - "0x%08llX%s\n", + printf("Can't find a link from 0x%016" PRIX64 + " to 0x%016" PRIX64 "%s\n", have, want, html ? "
" : ""); @@ -174,40 +183,45 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count) } pathnum = count; } else { - printf("%d steps from 0x%08llX to 0x%08llX%s\n", - keyinfoa->colour, have & 0xFFFFFFFF, - want & 0xFFFFFFFF, + printf("%d steps from 0x%016" PRIX64 " to 0x%016" + PRIX64 "%s\n", + keyinfoa->colour, have, + want, html ? "
" : ""); curkey = keyinfoa; while (curkey != NULL && curkey->keyid != 0) { - uid = keyid2uid(curkey->keyid); + uid = dbctx->keyid2uid(dbctx, + curkey->keyid); if (html && uid == NULL) { printf("0x%08llX ([" + "0x%016" PRIX64 "\">0x%016" + PRIX64 " ([" "User id not found])%s
\n", - curkey->keyid & 0xFFFFFFFF, - curkey->keyid & 0xFFFFFFFF, - (curkey->keyid == fullwant) ? + curkey->keyid, + curkey->keyid, + (curkey->keyid == want) ? "" : " signs"); } else if (html && uid != NULL) { printf("0x%08llX" + "0x%016" PRIX64 "\">0x%016" + PRIX64 "" " (%s)%s" + "search=0x%016" PRIX64 + "\">%s)%s" "
\n", - curkey->keyid & 0xFFFFFFFF, - curkey->keyid & 0xFFFFFFFF, - curkey->keyid & 0xFFFFFFFF, + curkey->keyid, + curkey->keyid, + curkey->keyid, txt2html(uid), - (curkey->keyid == fullwant) ? + (curkey->keyid == want) ? "" : " signs"); } else { - printf("0x%08llX (%s)%s\n", - curkey->keyid & 0xFFFFFFFF, + printf("0x%016" PRIX64 " (%s)%s\n", + curkey->keyid, (uid == NULL) ? "[User id not found]" : uid, - (curkey->keyid == fullwant) ? + (curkey->keyid == want) ? "" : " signs"); } if (uid != NULL) { @@ -226,7 +240,8 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count) } curkey = keyinfoa; while (curkey != NULL && curkey->keyid != 0) { - printf("0x%08llX ", curkey->keyid & 0xFFFFFFFF); + printf("0x%016" PRIX64 " ", + curkey->keyid); curkey = findinhash(curkey->parent); } putchar('\n'); @@ -237,7 +252,7 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count) -struct stats_key *furthestkey(struct stats_key *have) +struct stats_key *furthestkey(struct onak_dbctx *dbctx, struct stats_key *have) { unsigned long count = 0; unsigned long curdegree = 0; @@ -256,7 +271,7 @@ struct stats_key *furthestkey(struct stats_key *have) curll = lladd(NULL, have); while (curll != NULL) { - sigs = cached_getkeysigs(((struct stats_key *) + sigs = dbctx->cached_getkeysigs(dbctx, ((struct stats_key *) curll->object)->keyid); while (sigs != NULL) { if (((struct stats_key *) sigs->object)->colour == 0) {