X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb%2Fkeydb_pg.c;h=85c16ccbdcf39d10c2e3aa0584e4da7c67517d49;hb=35e886f23fde338387c8e2a3a74c9251f7735c3b;hp=7d59640b0fd2a82189f0411fe2f0d5018c7fdf97;hpb=51c1a7dd950efef6a4d00df1878341777f8064ff;p=onak.git diff --git a/keydb/keydb_pg.c b/keydb/keydb_pg.c index 7d59640..85c16cc 100644 --- a/keydb/keydb_pg.c +++ b/keydb/keydb_pg.c @@ -28,6 +28,7 @@ #include #include +#include "build-config.h" #include "hash.h" #include "keydb.h" #include "keyid.h" @@ -46,21 +47,28 @@ struct pg_fc_ctx { /** * keydb_fetchchar - Fetches a char from a file. */ -static int keydb_fetchchar(void *_ctx, size_t count, void *c) +static size_t keydb_fetchchar(void *_ctx, size_t count, void *c) { + int ret; + struct pg_fc_ctx *ctx = (struct pg_fc_ctx *) _ctx; - return (!lo_read(ctx->dbconn, ctx->fd, (char *) c, count)); + ret = lo_read(ctx->dbconn, ctx->fd, (char *) c, count); + + return (ret > 0) ? ret : 0; } /** * keydb_putchar - Puts a char to a file. */ -static int keydb_putchar(void *_ctx, size_t count, void *c) +static size_t keydb_putchar(void *_ctx, size_t count, void *c) { struct pg_fc_ctx *ctx = (struct pg_fc_ctx *) _ctx; + int ret; + + ret = lo_write(ctx->dbconn, ctx->fd, (char *) c, count); - return !(lo_write(ctx->dbconn, ctx->fd, (char *) c, count)); + return (ret > 0) ? ret : 0; } /** @@ -290,19 +298,19 @@ static int pg_delete_key(struct onak_dbctx *dbctx, PQclear(result); snprintf(statement, 1023, - "DELETE FROM onak_keys WHERE keyid = '%" PRIX64 "'", + "DELETE FROM onak_sigs WHERE signee = '%" PRIX64 "'", keyid); result = PQexec(dbconn, statement); PQclear(result); snprintf(statement, 1023, - "DELETE FROM onak_sigs WHERE signee = '%" PRIX64 "'", + "DELETE FROM onak_uids WHERE keyid = '%" PRIX64 "'", keyid); result = PQexec(dbconn, statement); PQclear(result); snprintf(statement, 1023, - "DELETE FROM onak_uids WHERE keyid = '%" PRIX64 "'", + "DELETE FROM onak_keys WHERE keyid = '%" PRIX64 "'", keyid); result = PQexec(dbconn, statement); } else if (PQresultStatus(result) != PGRES_TUPLES_OK) { @@ -644,6 +652,7 @@ static int pg_iterate_keys(struct onak_dbctx *dbctx, * Include the basic keydb routines. */ #define NEED_UPDATEKEYS 1 +#define NEED_GET 1 #define NEED_GET_FP 1 #include "keydb.c" @@ -670,7 +679,8 @@ static void pg_cleanupdb(struct onak_dbctx *dbctx) * this file are called in order to allow the DB to be initialized ready * for access. */ -struct onak_dbctx *keydb_pg_init(struct onak_db_config *dbcfg, bool readonly) +struct onak_dbctx *keydb_pg_init(struct onak_db_config *dbcfg, + __unused bool readonly) { struct onak_dbctx *dbctx; PGconn *dbconn; @@ -702,8 +712,9 @@ struct onak_dbctx *keydb_pg_init(struct onak_db_config *dbcfg, bool readonly) dbctx->cleanupdb = pg_cleanupdb; dbctx->starttrans = pg_starttrans; dbctx->endtrans = pg_endtrans; - dbctx->fetch_key_id = pg_fetch_key_id; + dbctx->fetch_key = generic_fetch_key; dbctx->fetch_key_fp = generic_fetch_key_fp; + dbctx->fetch_key_id = pg_fetch_key_id; dbctx->fetch_key_text = pg_fetch_key_text; dbctx->store_key = pg_store_key; dbctx->update_keys = generic_update_keys;