X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=keydb_db2.c;h=77a6f8b4b7c5471e2b63b4ca1da00fb22434e5fe;hb=51e4587b55d891365cefaefe61f668c0f44e2c37;hp=a30b62c43ba3b27413263372315641073d491191;hpb=62078c1601192c2594b954a122ac44a0c319c9bd;p=onak.git diff --git a/keydb_db2.c b/keydb_db2.c index a30b62c..77a6f8b 100644 --- a/keydb_db2.c +++ b/keydb_db2.c @@ -4,6 +4,8 @@ * Jonathan McDowell * * Copyright 2002 Project Purple + * + * $Id: keydb_db2.c,v 1.10 2003/09/30 20:40:10 noodles Exp $ */ #include @@ -21,6 +23,7 @@ #include "keyid.h" #include "keyindex.h" #include "keystructs.h" +#include "log.h" #include "mem.h" #include "onak-conf.h" #include "parsekey.h" @@ -68,6 +71,20 @@ void initdb(void) int i; int ret; char keydbname[20]; + char buf[1024]; + FILE *numdb = NULL; + + snprintf(buf, sizeof(buf) - 1, "%s/num_keydb", config.db_dir); + numdb = fopen(buf, "r"); + if (numdb != NULL) { + if (fgets(buf, sizeof(buf), numdb) != NULL) { + db2_numdb = atoi(buf); + } + fclose(numdb); + } else { + logthing(LOGTHING_ERROR, "Couldn't open num_keydb: %s", + strerror(errno)); + } memset(&db2_env, 0, sizeof(db2_env)); @@ -78,7 +95,7 @@ void initdb(void) */ db2_env.mp_size = 20 * 1024 * 1024; - ret = db_appinit(config.db2_dbpath, NULL, + ret = db_appinit(config.db_dir, NULL, &db2_env, DB_INIT_MPOOL|DB_INIT_LOCK); if (!ret) { db2_keydbfiles = (DB **) malloc(sizeof (DB *) * db2_numdb); @@ -91,13 +108,15 @@ void initdb(void) &db2_env, &keydbinfo, &db2_keydbfiles[i]); if (ret) { - fprintf(stderr, "Error opening db file %d (errno %d)\n", + logthing(LOGTHING_CRITICAL, + "Error opening db file %d (errno %d)", i, ret); exit(1); } } } else { - fprintf(stderr, "Error initializing db (%d).\n", ret); + logthing(LOGTHING_CRITICAL, "Error initializing db (%d).", + ret); exit(1); } } @@ -181,8 +200,10 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey, fetchbuf.buffer = data.data; fetchbuf.offset = 0; fetchbuf.size = data.size; - read_openpgp_stream(buffer_fetchchar, &fetchbuf, &packets); + read_openpgp_stream(buffer_fetchchar, &fetchbuf, &packets, 0); parse_keys(packets, publickey); + free_packet_list(packets); + packets = NULL; } return (!ret); @@ -230,6 +251,22 @@ int delete_key(uint64_t keyid, bool intrans) return (1); } +/** + * dumpdb - dump the key database + * @filenamebase: The base filename to use for the dump. + * + * Dumps the database into one or more files, which contain pure OpenPGP + * that can be reimported into onak or gpg. filenamebase provides a base + * file name for the dump; several files may be created, all of which will + * begin with this string and then have a unique number and a .pgp + * extension. + * */ +int dumpdb(char *filenamebase) +{ + return 0; +} + + /* * Include the basic keydb routines. */