X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=stats.c;h=91c916688f4473b88005147424238f2d78871b34;hb=42f7eb9a05e8013f0bc4209cb16fbfd99050378e;hp=bcc4f9128d9a93825ae6e12e7c76378890e9dab2;hpb=5e1b22d763640c4d7a09d07920403d8d491b4410;p=onak.git
diff --git a/stats.c b/stats.c
index bcc4f91..91c9166 100644
--- a/stats.c
+++ b/stats.c
@@ -13,10 +13,10 @@
* 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 .
*/
+#include
#include
#include
@@ -25,7 +25,6 @@
#include "hash.h"
#include "keydb.h"
#include "ll.h"
-#include "onak-conf.h"
#include "stats.h"
/**
@@ -66,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;
@@ -80,7 +80,7 @@ unsigned long findpath(struct stats_key *have, struct stats_key *want)
oldkeys = keys;
while ((!cleanup()) && keys != NULL && have->colour == 0) {
- sigs = config.dbbackend->cached_getkeysigs(((struct stats_key *)
+ sigs = dbctx->cached_getkeysigs(dbctx, ((struct stats_key *)
keys->object)->keyid);
while ((!cleanup()) && sigs != NULL && have->colour == 0) {
/*
@@ -132,28 +132,25 @@ 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 = config.dbbackend->getfullkeyid(have);
- fullwant = config.dbbackend->getfullkeyid(want);
-
/*
* Make sure the keys we have and want are in the cache.
*/
- (void) config.dbbackend->cached_getkeysigs(fullhave);
- (void) config.dbbackend->cached_getkeysigs(fullwant);
+ (void) dbctx->cached_getkeysigs(dbctx, have);
+ (void) dbctx->cached_getkeysigs(dbctx, want);
- if ((keyinfoa = findinhash(fullhave)) == NULL) {
+ if ((keyinfoa = findinhash(have)) == NULL) {
printf("Couldn't find key 0x%016" PRIX64 ".\n", have);
return;
}
- if ((keyinfob = findinhash(fullwant)) == NULL) {
+ if ((keyinfob = findinhash(want)) == NULL) {
printf("Couldn't find key 0x%016" PRIX64 ".\n", want);
return;
}
@@ -165,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",
@@ -175,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%08" PRIX64
- " to 0x%08" PRIX64 "%s\n",
+ printf("Can't find a link from 0x%016" PRIX64
+ " to 0x%016" PRIX64 "%s\n",
have,
want,
html ? "
" : "");
@@ -186,45 +183,45 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count)
}
pathnum = count;
} else {
- printf("%d steps from 0x%08" PRIX64 " to 0x%08" PRIX64
- "%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 = config.dbbackend->keyid2uid(
+ uid = dbctx->keyid2uid(dbctx,
curkey->keyid);
if (html && uid == NULL) {
printf("0x%08" PRIX64
- " (["
+ "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%08"
+ "0x%016" PRIX64 "\">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%08" PRIX64 " (%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) {
@@ -243,8 +240,8 @@ void dofindpath(uint64_t have, uint64_t want, bool html, int count)
}
curkey = keyinfoa;
while (curkey != NULL && curkey->keyid != 0) {
- printf("0x%08" PRIX64 " ",
- curkey->keyid & 0xFFFFFFFF);
+ printf("0x%016" PRIX64 " ",
+ curkey->keyid);
curkey = findinhash(curkey->parent);
}
putchar('\n');
@@ -255,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;
@@ -274,7 +271,7 @@ struct stats_key *furthestkey(struct stats_key *have)
curll = lladd(NULL, have);
while (curll != NULL) {
- sigs = config.dbbackend->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) {