diff -p -r ./Makefile.in ../pks-0.9.3_multi_worddb_db/Makefile.in *** ./Makefile.in Fri May 1 13:25:09 1998 --- ../pks-0.9.3_multi_worddb_db/Makefile.in Wed Jan 13 05:58:23 1999 *************** *** 1,5 **** # ! # $Id: Makefile.in,v 1.10.4.4 1998/05/01 04:25:09 marc Exp $ # # Copyright (c) 1996, Marc Horowitz. All rights reserved. # See the LICENSE file in the release for redistribution information. --- 1,5 ---- # ! # $Id: Makefile.in,v 1.1 1999/01/12 10:38:54 hironobu Exp hironobu $ # # Copyright (c) 1996, Marc Horowitz. All rights reserved. # See the LICENSE file in the release for redistribution information. *************** PURIFY = purify *** 58,64 **** INCLUDES = -I$(DBDIR) DBG = -DDEBUG ! DEFINES = $(DBG) @DEFS@ CFLAGS = @gcc_cflags@ -g -O $(INCLUDES) $(DEFINES) LIBDB = $(DBDIR)/libdb.a --- 58,64 ---- INCLUDES = -I$(DBDIR) DBG = -DDEBUG ! DEFINES = $(DBG) -DMULTI_DB @DEFS@ CFLAGS = @gcc_cflags@ -g -O $(INCLUDES) $(DEFINES) LIBDB = $(DBDIR)/libdb.a *************** WWWOBJS = www.o *** 70,76 **** MAILOBJS = mail_req.o mail_send.o INCROBJS = pks_incr.o DBOBJS = kd_add.o kd_delete.o kd_disable.o kd_generic.o kd_get.o kd_index.o \ ! kd_search.o kd_since.o kd_types.o PGPOBJS = pgputil.o md5c.o armor.o pgpcrc.o shs.o MPOBJS = kd_signal.o multiplex.o mp_signal.o MISCOBJS = parse.o llist.o globals.o logging.o --- 70,76 ---- MAILOBJS = mail_req.o mail_send.o INCROBJS = pks_incr.o DBOBJS = kd_add.o kd_delete.o kd_disable.o kd_generic.o kd_get.o kd_index.o \ ! kd_search.o kd_since.o kd_types.o kd_generic_multi.o multidbutil.o kd_search_multi.o PGPOBJS = pgputil.o md5c.o armor.o pgpcrc.o shs.o MPOBJS = kd_signal.o multiplex.o mp_signal.o MISCOBJS = parse.o llist.o globals.o logging.o diff -p -r ./armor.c ../pks-0.9.3_multi_worddb_db/armor.c *** ./armor.c Sun Jun 15 14:27:56 1997 --- ../pks-0.9.3_multi_worddb_db/armor.c Sat Jan 16 17:33:16 1999 *************** *** 1,4 **** ! const char rcsid_armor_c[] = "$Id: armor.c,v 1.9 1997/06/15 05:27:56 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_armor_c[] = "$Id: armor.c,v 1.1 1999/01/11 15:05:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./armor.h ../pks-0.9.3_multi_worddb_db/armor.h *** ./armor.h Thu Dec 12 04:16:17 1996 --- ../pks-0.9.3_multi_worddb_db/armor.h Wed Jan 13 05:47:42 1999 *************** *** 2,8 **** #define _ARMOR_H_ /* ! * $Id: armor.h,v 1.2 1996/12/11 19:16:17 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _ARMOR_H_ /* ! * $Id: armor.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./database.h ../pks-0.9.3_multi_worddb_db/database.h *** ./database.h Fri Jun 13 09:46:21 1997 --- ../pks-0.9.3_multi_worddb_db/database.h Wed Jan 13 05:47:43 1999 *************** *** 2,8 **** #define _DATABASE_H_ /* ! * $Id: database.h,v 1.25 1997/06/13 00:46:21 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _DATABASE_H_ /* ! * $Id: database.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./globals.c ../pks-0.9.3_multi_worddb_db/globals.c *** ./globals.c Thu Dec 12 04:16:21 1996 --- ../pks-0.9.3_multi_worddb_db/globals.c Sat Jan 16 17:33:16 1999 *************** *** 1,4 **** ! const char rcsid_globals_c[] = "$Id: globals.c,v 1.2 1996/12/11 19:16:21 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_globals_c[] = "$Id: globals.c,v 1.1 1999/01/11 15:05:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./globals.h ../pks-0.9.3_multi_worddb_db/globals.h *** ./globals.h Sun Apr 26 13:12:18 1998 --- ../pks-0.9.3_multi_worddb_db/globals.h Wed Jan 13 05:47:43 1999 *************** *** 2,8 **** #define _GLOBALS_H_ /* ! * $Id: globals.h,v 1.9.4.1 1998/04/26 04:12:18 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _GLOBALS_H_ /* ! * $Id: globals.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./kd_add.c ../pks-0.9.3_multi_worddb_db/kd_add.c *** ./kd_add.c Fri May 1 13:25:28 1998 --- ../pks-0.9.3_multi_worddb_db/kd_add.c Fri Jan 22 22:08:50 1999 *************** *** 1,11 **** ! const char rcsid_kd_add_c[] = "$Id: kd_add.c,v 1.34.4.5 1998/05/01 04:25:28 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. */ - #include #include #include --- 1,10 ---- ! const char rcsid_kd_add_c[] = "$Id: kd_add.c,v 1.3 1999/01/21 13:16:50 hironobu Exp hironobu $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. */ #include #include #include *************** const char rcsid_kd_add_c[] = "$Id: kd_a *** 23,28 **** --- 22,29 ---- #include "kd_types.h" #include "kd_internal.h" #include "kd_search.h" + #include "memory_config.h" + #include "multidbutil.h" /* for all of these, the first element will come from the database, the second from the request */ *************** typedef struct _aetd_state { *** 788,798 **** --- 789,804 ---- int pks_errno; } aetd_state; + int add_entry_to_db(DB *db, DBT *key, aetd_state *s) { int ret; int needfree = 0; DBT data, newdata; + unsigned char tmpbuf[12]; + int i; + DBT *pdata=NULL; + unsigned char *p; memset(&data, 0, sizeof(data)); memset(&newdata, 0, sizeof(newdata)); *************** int add_entry_to_db(DB *db, DBT *key, ae *** 801,865 **** if (ret == DB_NOTFOUND) { /* word not in file, create DBT for insert */ ! ! newdata.data = (void *) s->entry; ! newdata.size = sizeof(s->entry); } else if (ret) { s->writing = 0; s->pks_errno = ret; fail(); ! } else { ! int i, o; ! ! if (data.size%12) ! fail(); ! ! /* allocate data to store */ ! newdata.size = data.size+12; ! if ((newdata.data = (void *) malloc(newdata.size)) == NULL) fail(); ! needfree = 1; ! ! /* scan for insertion point. This is O(n), but so is the ! copy which follows it */ ! ! for (i=0; ientry, 12); ! if (o < 0) ! break; ! ! if (o == 0) { ! /* no duplicates */ ! free(newdata.data); ! return(1); ! } ! } ! ! /* copy data to newdata, inserting entry */ ! memcpy(newdata.data, data.data, i); ! memcpy((void *) (((unsigned char *) newdata.data)+i), ! (void *) s->entry, 12); ! memcpy((void *) (((unsigned char *) newdata.data)+i+12), ! (void *) (((unsigned char *) data.data)+i), ! data.size - i); } ! if ((ret = (*(db->put))(db, NULL, key, &newdata, 0))) { ! s->writing = 1; ! s->pks_errno = ret; ! if (needfree) ! free(newdata.data); ! fail(); } - if (needfree) - free(newdata.data); - return(1); } int add_word_to_worddb(void *e, void *c) { words_elem *we = (words_elem *) e; --- 807,903 ---- if (ret == DB_NOTFOUND) { /* word not in file, create DBT for insert */ ! newdata.data = (void *) malloc( MIN_KEY_PAGE_SIZE ); ! if ( newdata.data == NULL ) { ! fail(); ! return(1); ! } ! bzero((void *)newdata.data,MIN_KEY_PAGE_SIZE); ! memcpy((void *)newdata.data, (void *) s->entry, 12); ! newdata.size = MIN_KEY_PAGE_SIZE; ! needfree=1; ! pdata = &newdata; } else if (ret) { s->writing = 0; s->pks_errno = ret; fail(); ! return (1); ! } ! if (data.size%12) { ! /* ! * unknown error, db is broken?? ! */ ! fail(); ! return(1); ! } ! ! /* liner searching! boo~~~~*/ ! for (i=0; ientry + 8 ), 4)) { ! /* ! * Duplicate, keyid already recorded. ! */ ! return(1); ! } ! if ( !zerocmp(tmpbuf,4) ) { ! /* ! * find empty room! ! */ ! break; ! } ! } ! ! if ( data.size != 0 ) { ! if ( data.size <= i) { ! int allocsize; ! if ( data.size <= MAX_KEYID_ENTRY_SIZE ) { ! allocsize = data.size * 2; ! } ! else { ! allocsize = data.size + (1024*12); ! } ! /* ! * Page has no empty room and make new page. ! */ ! newdata.data = (void *) malloc( allocsize ); ! if ( newdata.data == NULL ) { fail(); ! return(1); ! } ! bzero((void *)newdata.data, allocsize); ! newdata.size = allocsize; ! memcpy(newdata.data,data.data,data.size); ! pdata = &newdata; ! needfree=1; ! } ! else { ! memcpy((void *) (((unsigned char *) data.data)+i), ! (void *) s->entry,12); ! pdata = &data; ! } ! } ! ! if ((ret = (*(db->put))(db, NULL, key, pdata, 0))) { ! s->writing = 1; ! s->pks_errno = ret; ! if (needfree) { ! free(newdata.data); ! } ! fail(); } ! if (needfree) { ! free(newdata.data); } return(1); } + int add_word_to_worddb(void *e, void *c) { words_elem *we = (words_elem *) e; *************** int kd_add_1(unsigned char *keys, long l *** 1315,1320 **** --- 1353,1379 ---- } } + if (err->soft_count > 0) { + char err_count[20], keyid[20]; + sprintf(keyid, "%02x%02x%02x%02x", err->soft_keyid[0], + err->soft_keyid[1], err->soft_keyid[2], err->soft_keyid[3]); + sprintf(err_count, "%d", err->soft_count); + if (!xbuffer_append_str(win_msg, "Your key block contained ") || + !xbuffer_append_str(win_msg, err_count) || + !xbuffer_append_str(win_msg, " format errors,\n" + "which were ignored. The last error was on\n" + "key 0x") || + !xbuffer_append_str(win_msg, keyid) || + !xbuffer_append_str(win_msg, ":\n") || + !xbuffer_append_str(win_msg, err->soft_str) || + !xbuffer_append_str(win_msg, "\n")) { + xbuffer_free(newkeys_xb); + err->fatal = 1; + err->str = "Failed allocating space for success string"; + fail(); + } + } + return(1); } *************** int kd_add(unsigned char *keys, long len *** 1326,1331 **** --- 1385,1391 ---- xbuffer msg, addkeys; err.str = err.buf; + err.soft_count = 0; xbuffer_alloc(&msg); if (newkeys) diff -p -r ./kd_delete.c ../pks-0.9.3_multi_worddb_db/kd_delete.c *** ./kd_delete.c Sun Apr 26 11:21:07 1998 --- ../pks-0.9.3_multi_worddb_db/kd_delete.c Fri Jan 22 22:02:52 1999 *************** *** 1,4 **** ! const char rcsid_kd_delete_c[] = "$Id: kd_delete.c,v 1.15.4.1 1998/04/26 02:21:07 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_delete_c[] = "$Id: kd_delete.c,v 1.1 1998/12/23 07:47:58 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** const char rcsid_kd_delete_c[] = "$Id: k *** 18,23 **** --- 18,24 ---- #include "kd_internal.h" #include "kd_search.h" #include "pgputil.h" + #include "multidbutil.h" typedef struct _dwfw_state { unsigned char entry[12]; *************** int delete_word_from_worddb(void *e, voi *** 33,40 **** dwfw_state *s = (dwfw_state *) c; unsigned char word[256]; DBT key, data; - unsigned char *here; int i, ret; memset(&key, 0, sizeof(key)); --- 34,42 ---- dwfw_state *s = (dwfw_state *) c; unsigned char word[256]; + unsigned char tmpbuf[12]; + unsigned char *dist, *src, *tail; DBT key, data; int i, ret; memset(&key, 0, sizeof(key)); *************** int delete_word_from_worddb(void *e, voi *** 61,108 **** fail(); } ! for (here = (unsigned char *) data.data; ! here = my_memmem((void *) here, s->entry, ! data.size - (here - ((unsigned char *) data.data)), ! sizeof(s->entry)), ! here && (here-((unsigned char *) data.data))%12; ! here++ ! ) ! /* SUPPRESS 570 */ ! ; ! ! if (!here) { ! char buf[1024]; ! ! sprintf(buf, ! "consistency error: word \"%.*s\" in key id %02X%02X%02X%02X\n" ! "does not refer back to key", (int) key.size, (char *) key.data, ! s->entry[8], s->entry[9], s->entry[10], s->entry[11]); ! log_error("delete_word_from_worddb", buf); ! ! return(1); } ! ! if (data.size == 12) { if ((*(worddb->del))(worddb, NULL, &key, 0)) { s->err->fatal = 1; s->err->str = "failed deleting worddb entry from database"; fail(); } ! } else { ! here += 12; ! ! if (here < (((unsigned char *) data.data) + data.size)) ! memmove((void *) (here-12), (void *) here, ! data.size - (here - ((unsigned char *) data.data))); ! ! data.size -= 12; ! if ((*(worddb->put))(worddb, NULL, &key, &data, 0)) { ! s->err->fatal = 1; ! s->err->str = "failed replacing worddb entry in database"; ! fail(); ! } } return(1); --- 63,112 ---- fail(); } ! if (data.size % 12) { ! /* ! * unknown error, db is broken?? ! */ ! s->err->fatal = 1; ! sprintf(s->err->buf, ! "consistency error reading worddb for delete: %.*s not found ", ! (int) we->len, we->ptr); ! fail(); ! return(1); } ! for( i = 0 ; i < data.size ; i+=12 ) { ! memcpy(tmpbuf, ((unsigned char *)data.data + i),12); ! if ( !zerocmp(tmpbuf,12) ) { ! break; ! } ! } ! ! if ( i == 1 ) { ! /* ! * one word has one keyid. ! */ if ((*(worddb->del))(worddb, NULL, &key, 0)) { s->err->fatal = 1; s->err->str = "failed deleting worddb entry from database"; fail(); } ! return (1); ! } ! dist = (unsigned char *) data.data; ! src = (unsigned char *) data.data; ! tail =(unsigned char *)data.data + data.size; ! while ( src <= tail ) { ! if ( memcmp((void *) src, s->entry, 12) ) { ! memcpy((void *)dist,(void *)src,12); ! dist +=12; ! } ! src +=12; ! } ! if ((*(worddb->put))(worddb, NULL, &key, &data, 0)) { ! s->err->fatal = 1; ! s->err->str = "failed replacing worddb entry in database"; ! fail(); } return(1); diff -p -r ./kd_disable.c ../pks-0.9.3_multi_worddb_db/kd_disable.c *** ./kd_disable.c Sun Jun 15 15:01:39 1997 --- ../pks-0.9.3_multi_worddb_db/kd_disable.c Sat Jan 16 17:33:16 1999 *************** *** 1,4 **** ! const char rcsid_kd_disable_c[] = "$Id: kd_disable.c,v 1.3 1997/06/15 06:01:39 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_disable_c[] = "$Id: kd_disable.c,v 1.1 1999/01/11 15:05:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./kd_generic.c ../pks-0.9.3_multi_worddb_db/kd_generic.c *** ./kd_generic.c Sun Apr 26 11:21:08 1998 --- ../pks-0.9.3_multi_worddb_db/kd_generic.c Mon Jan 18 03:23:25 1999 *************** *** 1,4 **** ! const char rcsid_kd_generic_c[] = "$Id: kd_generic.c,v 1.15.4.1 1998/04/26 02:21:08 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_generic_c[] = "$Id: kd_generic.c,v 1.2 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** const char rcsid_kd_generic_c[] = "$Id: *** 23,28 **** --- 23,32 ---- #include "kd_types.h" #include "kd_internal.h" + #ifdef MULTI_DB + #include "kd_generic_multi.h" + #endif + /* this file contains functions which are common to two different database operations, and functions which perform operations on the database itself. */ *************** int kd_keys_elem_marshall(void *e, void *** 126,131 **** --- 130,141 ---- int kd_db_store_keyblock(llist *keys, error *err) { + #ifdef MULTI_DB + /* + * + */ + return(multi_kd_db_store_keyblock(keys,err)); + #else DBT key, newdata; xbuffer newxb; keys_elem *ke = (keys_elem *) (*((void **) keys->xb.buf)); *************** int kd_db_store_keyblock(llist *keys, er *** 161,166 **** --- 171,178 ---- xbuffer_free(&newxb); return(1); + + #endif } /* log utility functions */ *************** void kd_log_finish(char *fct, int succes *** 191,196 **** --- 203,211 ---- int kd_open_1(char *dbdir, int create, error *err) { + #ifdef MULTI_DB + return(multi_kd_open_1(dbdir, create, err)); + #else int flags, db_err, fd; /* XXX I don't like this, but I also don't have a better answer */ static DB_ENV dbenv; *************** int kd_open_1(char *dbdir, int create, e *** 281,286 **** --- 296,302 ---- } return(1); + #endif } /* this not only copies files, but leaves holes if there's no data */ *************** int copy_file(const char *src, const cha *** 292,297 **** --- 308,314 ---- int fsrc, fdst; unsigned char buf[1024]; int cnt, total; + int last_seek = 0; total = 0; *************** int copy_file(const char *src, const cha *** 318,324 **** total += cnt; if (memcmp(buf, zeros, cnt) == 0) { ! if (lseek(fdst, cnt, SEEK_CUR) < 0) { close(fsrc); close(fdst); return(-1); --- 335,342 ---- total += cnt; if (memcmp(buf, zeros, cnt) == 0) { ! last_seek = 1; ! if (lseek(fdst, cnt, SEEK_CUR) < 0) { close(fsrc); close(fdst); return(-1); *************** int copy_file(const char *src, const cha *** 326,331 **** --- 344,350 ---- } else { int wptr = 0; + last_seek = 0; while (cnt > 0) { if ((wptr = write(fdst, (void *) (buf+wptr), cnt)) < 0) { close(fsrc); *************** int copy_file(const char *src, const cha *** 338,343 **** --- 357,373 ---- } } + if (last_seek) { + /* Need to write into the last location, at least on Solaris */ + if (lseek(fdst, -1, SEEK_CUR) < 0 + || write(fdst, zeros, 1) != 1) { + log_error("copy_file", strerror(errno)); + close(fsrc); + close(fdst); + return(-1); + } + } + close(fsrc); close(fdst); *************** int copy_file(const char *src, const cha *** 346,353 **** int kd_backup_1() { char buf[1024]; ! if ((mkdir("backup", 0755) < 0) && (errno != EEXIST)) { kd_sync(); sprintf(buf, "failed creating backup/ dir: errno = %d", errno); --- 376,386 ---- int kd_backup_1() { + #ifdef MULTI_DB + return(multi_kd_backup_1()); + #else char buf[1024]; ! if ((mkdir("backup", 0755) < 0) && (errno != EEXIST)) { kd_sync(); sprintf(buf, "failed creating backup/ dir: errno = %d", errno); *************** int kd_backup_1() *** 402,424 **** --- 435,466 ---- } return(1); + #endif } void kd_sync_1() { + #ifdef MULTI_DB + multi_kd_sync_1(); + #else (*(timedb->sync))(timedb, 0); (*(worddb->sync))(worddb, 0); (*(keydb->sync))(keydb, 0); + #endif } void kd_close_1() { + #ifdef MULTI_DB + multi_kd_close_1(); + #else if (timedb) (*(timedb->close))(timedb, 0); if (worddb) (*(worddb->close))(worddb, 0); if (keydb) (*(keydb->close))(keydb, 0); + #endif } int kd_create(char *dbdir, char **ret) diff -p -r ./kd_get.c ../pks-0.9.3_multi_worddb_db/kd_get.c *** ./kd_get.c Fri Jun 13 09:47:54 1997 --- ../pks-0.9.3_multi_worddb_db/kd_get.c Sat Jan 16 17:33:21 1999 *************** *** 1,4 **** ! const char rcsid_kd_get_c[] = "$Id: kd_get.c,v 1.12 1997/06/13 00:47:54 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_get_c[] = "$Id: kd_get.c,v 1.1 1999/01/11 15:05:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./kd_index.c ../pks-0.9.3_multi_worddb_db/kd_index.c *** ./kd_index.c Sun Jun 15 15:01:40 1997 --- ../pks-0.9.3_multi_worddb_db/kd_index.c Sat Jan 16 17:33:21 1999 *************** *** 1,4 **** ! const char rcsid_kd_index_c[] = "$Id: kd_index.c,v 1.11 1997/06/15 06:01:40 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_index_c[] = "$Id: kd_index.c,v 1.1 1999/01/11 15:05:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./kd_internal.h ../pks-0.9.3_multi_worddb_db/kd_internal.h *** ./kd_internal.h Thu Dec 12 04:16:35 1996 --- ../pks-0.9.3_multi_worddb_db/kd_internal.h Mon Jan 18 03:22:38 1999 *************** *** 2,8 **** #define _KD_INTERNAL_H_ /* ! * $Id: kd_internal.h,v 1.4 1996/12/11 19:16:35 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _KD_INTERNAL_H_ /* ! * $Id: kd_internal.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. *************** typedef struct _error { *** 17,22 **** --- 17,26 ---- int fatal; char *str; char buf[1024]; + /* Provisioning for soft errors */ + int soft_count; + unsigned char soft_keyid[4]; + char *soft_str; } error; extern DB *keydb, *worddb, *timedb; diff -p -r ./kd_search.c ../pks-0.9.3_multi_worddb_db/kd_search.c *** ./kd_search.c Mon Apr 27 14:35:18 1998 --- ../pks-0.9.3_multi_worddb_db/kd_search.c Fri Jan 22 21:56:38 1999 *************** *** 1,4 **** ! const char rcsid_kd_search_c[] = "$Id: kd_search.c,v 1.33.4.2 1998/04/27 05:35:18 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_search_c[] = "$Id: kd_search.c,v 1.3 1999/01/21 13:16:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** const char rcsid_kd_search_c[] = "$Id: k *** 23,28 **** --- 23,33 ---- #include "kd_internal.h" #include "kd_search.h" + #ifdef MULTI_DB + #include "multidbutil.h" + extern DB *keydb_array[]; + #endif + typedef struct _mke_state { /* what do do with the key when done */ llist_iter iter; *************** int finish_userid(mke_state *s) *** 137,142 **** --- 142,160 ---- return(1); } + static void soft_err(mke_state *s, char *message) + { + s->err->soft_count++; + s->err->soft_str = message; + log_info("soft_err", message); + if (s->ke->keyidbits.len >= 4) { + memcpy(&s->err->soft_keyid, + (char *)s->ke->keyidbits.buf + s->ke->keyidbits.len - 4, 4); + } else { + log_error("soft_err", "No keyid available for logging"); + } + } + int finish_pubkey(mke_state *s) { /* this is called when a pubkey's userid list ends. This happens *************** int finish_pubkey(mke_state *s) *** 155,163 **** /* if there's no primary userid, that's an error */ if (!s->ke->primary) { ! s->err->fatal = 0; ! s->err->str = "Key block corrupt: pubkey with no userid"; ! return(0); } /* do something useful with the key */ --- 173,180 ---- /* if there's no primary userid, that's an error */ if (!s->ke->primary) { ! soft_err(s,"Key block corrupt: pubkey with no userid"); ! return(1); } /* do something useful with the key */ *************** int make_keys_elem(ddesc *packet, void * *** 212,220 **** if (!decode_pubkey(packet, plen, &m, &e, &k, &(s->ke->keytype), &(s->ke->create_time))) { ! s->err->fatal = 0; ! s->err->str = "Key block corrupt: pubkey decode failed"; ! return(0); } /* store the modulus bits, exponent bits, and pubkey packet */ --- 229,237 ---- if (!decode_pubkey(packet, plen, &m, &e, &k, &(s->ke->keytype), &(s->ke->create_time))) { ! soft_err(s, "Key block corrupt: pubkey decode failed"); ! s->ignoring = 1; /* Ignore until next pubkey */ ! return(1); } /* store the modulus bits, exponent bits, and pubkey packet */ *************** int make_keys_elem(ddesc *packet, void * *** 309,317 **** kpacket.offset = packet->offset; if (!decode_userid(&kpacket, plen, &userid)) { ! s->err->fatal = 0; ! s->err->str = "Key block corrupt: userid decode failed"; ! return(0); } s->ue->uidprint = userid.data; --- 326,334 ---- kpacket.offset = packet->offset; if (!decode_userid(&kpacket, plen, &userid)) { ! soft_err(s, "Key block corrupt: userid decode failed"); ! s->ignoring = 1; /* Do not put the sigs onto the wrong UID */ ! return(1); } s->ue->uidprint = userid.data; *************** int make_keys_elem(ddesc *packet, void * *** 333,350 **** /* extract the keyid and sigclass from the signature */ if (!decode_sig(packet, plen, &keyid, &sigclass, &sig_time)) { ! s->err->fatal = 0; ! s->err->str = "Key block corrupt: signature decode failed"; ! return(0); } if (sigclass == 0x20) { /* key revocation signature */ if (s->ke->revocation.len) { ! s->err->fatal = 0; ! s->err->str = ! "Key block corrupt: multiple revocations on single key"; ! return(0); } if (!xbuffer_append(&(s->ke->revocation), --- 350,366 ---- /* extract the keyid and sigclass from the signature */ if (!decode_sig(packet, plen, &keyid, &sigclass, &sig_time)) { ! soft_err(s, ! "Key block corrupt: signature decode failed"); ! return(1); } if (sigclass == 0x20) { /* key revocation signature */ if (s->ke->revocation.len) { ! soft_err(s, ! "Key block corrupt: multiple revocations on single key"); ! return(1); } if (!xbuffer_append(&(s->ke->revocation), *************** int make_keys_elem(ddesc *packet, void * *** 356,365 **** } else if (sigclass == 0x18) { /* subkey signature */ if (s->ke->subkeysig.len) { ! s->err->fatal = 0; ! s->err->str = ! "Key block corrupt: more than one signature on subkey"; ! return(0); } if (!xbuffer_append(&(s->ke->subkeysig), --- 372,380 ---- } else if (sigclass == 0x18) { /* subkey signature */ if (s->ke->subkeysig.len) { ! soft_err(s, ! "Key block corrupt: more than one signature on subkey"); ! return(1); } if (!xbuffer_append(&(s->ke->subkeysig), *************** int make_keys_elem(ddesc *packet, void * *** 370,378 **** } } else { if (!s->ue) { ! s->err->fatal = 0; ! s->err->str = "Key block corrupt: signature before userid"; ! return(0); } /* allocate space for the signature and fill it in */ --- 385,392 ---- } } else { if (!s->ue) { ! soft_err(s, "Key block corrupt: signature before userid"); ! return(1); } /* allocate space for the signature and fill it in */ *************** int make_keys_elem(ddesc *packet, void * *** 461,470 **** and then only if the trust value is 0x20 (disabled) */ if (! s->ue) { if (! s->ke) { ! s->err->fatal = 0; ! s->err->str = ! "Key block corrupt: trust packet before pubkey packet"; ! return(0); } if (!decode_num(packet, 1, &trust)) { --- 475,483 ---- and then only if the trust value is 0x20 (disabled) */ if (! s->ue) { if (! s->ke) { ! soft_err(s, ! "Key block corrupt: trust packet before pubkey packet"); ! return(1); } if (!decode_num(packet, 1, &trust)) { *************** int make_keys_elem(ddesc *packet, void * *** 483,493 **** case 11: /* if any of these occur, it's an error */ { - s->err->fatal = 0; sprintf(s->err->buf, "Key block corrupt: unexpected packet type %d encountered", (int) ptype); ! return(0); } break; #if 0 --- 496,506 ---- case 11: /* if any of these occur, it's an error */ { sprintf(s->err->buf, "Key block corrupt: unexpected packet type %d encountered", (int) ptype); ! soft_err(s, s->err->buf); ! return(1); } break; #if 0 *************** int kd_get_keys_by_keyid(unsigned char * *** 590,595 **** --- 603,611 ---- key.data = keyid+(8-KEYDB_KEYID_BYTES); key.size = KEYDB_KEYID_BYTES; + #ifdef MULTI_DB + keydb=keydb_array[which_db(key.data)]; + #endif ret = (*(keydb->get))(keydb, NULL, &key, &data, 0); if ((ret == DB_NOTFOUND) || *************** int word_key_intersect(void *e, void *c) *** 812,817 **** --- 828,840 ---- } memcpy((void *) wde, ((unsigned char *)data.data)+i, 12); + if ( !zerocmp((void*)wde,12) ) { + /* + * NULL means end of data. + */ + free(wde); + break; + } /* they should already be sorted coming in */ *************** int kd_output_wde(void *e, void *c) *** 913,918 **** --- 936,945 ---- key.data = wde+4 + (8-KEYDB_KEYID_BYTES); key.size = KEYDB_KEYID_BYTES; + #ifdef MULTI_DB + keydb=keydb_array[which_db(key.data)]; + #endif + if ((*(keydb->del))(keydb, NULL, &key, 0)) { s->err->fatal = 1; s->err->str = "failed deleting keydb entry from database"; *************** int func_then_free(void *e, void *c) *** 974,979 **** --- 1001,1011 ---- int do_all_keys(int flags, llist_iter func, void *c, error *err) { + #ifdef MULTI_DB + extern int multi_do_all_keys(int flags, llist_iter func, void *c, error *err); + return(multi_do_all_keys(flags,func,c,err)); + #else + akte_state aktes; int ret, i; DBC *cursor; *************** int do_all_keys(int flags, llist_iter fu *** 990,996 **** ftfs.func = func; ftfs.state = c; ! if ((ret = (*(keydb->cursor))(keydb, NULL, &cursor))) { err->fatal = 1; sprintf(err->buf, "error creating keydb cursor: error = %d", ret); fail(); --- 1022,1028 ---- ftfs.func = func; ftfs.state = c; ! if ((ret = (*(keydb->cursor))(keydb, NULL, &cursor,0))) { err->fatal = 1; sprintf(err->buf, "error creating keydb cursor: error = %d", ret); fail(); *************** int do_all_keys(int flags, llist_iter fu *** 1074,1079 **** --- 1106,1112 ---- xbuffer_free(&(aktes.entries)); return(1); + #endif } /* diff -p -r ./kd_search.h ../pks-0.9.3_multi_worddb_db/kd_search.h *** ./kd_search.h Thu Dec 12 04:16:39 1996 --- ../pks-0.9.3_multi_worddb_db/kd_search.h Wed Jan 13 05:47:44 1999 *************** *** 2,8 **** #define _KD_SEARCH_H_ /* ! * $Id: kd_search.h,v 1.6 1996/12/11 19:16:39 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _KD_SEARCH_H_ /* ! * $Id: kd_search.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./kd_signal.c ../pks-0.9.3_multi_worddb_db/kd_signal.c *** ./kd_signal.c Sun Apr 26 13:13:03 1998 --- ../pks-0.9.3_multi_worddb_db/kd_signal.c Sat Jan 16 17:33:21 1999 *************** *** 1,4 **** ! const char rcsid_kd_signal_c[] = "$Id: kd_signal.c,v 1.3.4.1 1998/04/26 04:13:03 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_signal_c[] = "$Id: kd_signal.c,v 1.1 1999/01/11 15:05:34 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./kd_since.c ../pks-0.9.3_multi_worddb_db/kd_since.c *** ./kd_since.c Mon Apr 27 14:35:17 1998 --- ../pks-0.9.3_multi_worddb_db/kd_since.c Fri Jan 22 21:56:01 1999 *************** *** 1,4 **** ! const char rcsid_kd_since_c[] = "$Id: kd_since.c,v 1.11.4.2 1998/04/27 05:35:17 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_kd_since_c[] = "$Id: kd_since.c,v 1.1 1998/12/23 07:49:30 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** int kd_since_1(time_t since, int flags, *** 38,43 **** --- 38,44 ---- unsigned char *tmp; unsigned long ul_last; + memset(&key, 0, sizeof(key)); memset(&data, 0, sizeof(data)); *************** int kd_since_1(time_t since, int flags, *** 51,57 **** key.data = firstkey; key.size = sizeof(firstkey); ! if ((ret = (*(timedb->cursor))(timedb, NULL, &cursor))) { err->fatal = 1; sprintf(err->buf, "error creating timedb cursor: error = %d", ret); fail(); --- 52,58 ---- key.data = firstkey; key.size = sizeof(firstkey); ! if ((ret = (*(timedb->cursor))(timedb, NULL, &cursor,0))) { err->fatal = 1; sprintf(err->buf, "error creating timedb cursor: error = %d", ret); fail(); *************** int kd_since_1(time_t since, int flags, *** 107,117 **** ows.err = err; ows.append = kd_keys_elem_marshall; ! for (i=0; idata+data->offset+len; if (!decode_num(data, 1, &version)) return(0); *************** int decode_sig(ddesc *data, long len, dd *** 307,318 **** if (!decode_bytestr(data, 2, &cksum)) return(0); ! /* this is kind of ugly. There can be any number of MPI's here ! (although 1 is most likely, and no documented pkctype uses ! more than 2). */ ! while (DECODE_READABLE(data, 1)) { ! if (!decode_mpi(data, &sig)) return(0); } } else { if (version != 4) --- 309,343 ---- if (!decode_bytestr(data, 2, &cksum)) return(0); ! switch (pkctype) { ! case 1: /*RSA: 1*MPI*/ ! case 2: ! case 3: ! if (!decode_mpi(data, &sig)) ! return(0); ! break; ! case 17: /*DSA: 2*MPI*/ ! if (!decode_mpi(data, &sig) || !decode_mpi(data, &sig)) return(0); + break; + default: + /* this is kind of ugly. There can be any number of MPI's here + (although 1 is most likely, and no documented pkctype uses + more than 2). */ + while (DECODE_READABLE(data, 1)) { + if (!decode_mpi(data, &sig)) + return(0); + } + break; + } + if (pktend != data->data+data->offset) { + sprintf(msg, "%ld sig bytes ignored", + pktend-(data->data+data->offset)); + log_error("decode_sig", msg); + return(decode_bytestr(data, pktend-(data->data+data->offset), &sig)); + /* If you wanted to be picky, you could also return(0) here */ + } else { + return(1); } } else { if (version != 4) *************** int decode_sig(ddesc *data, long len, dd *** 336,346 **** if (!decode_bytestr(data, 2, &cksum)) return(0); ! /* this is kind of ugly. There can be any number of MPI's here ! (although 2 is the largest and most likely number. */ ! while (DECODE_READABLE(data, 1)) { ! if (!decode_mpi(data, &sig)) return(0); } } --- 361,394 ---- if (!decode_bytestr(data, 2, &cksum)) return(0); ! switch (pkctype) { ! case 1: /*RSA: 1*MPI*/ ! case 2: ! case 3: ! if (!decode_mpi(data, &sig)) return(0); + break; + case 17: /*DSA: 2*MPI*/ + if (!decode_mpi(data, &sig) || !decode_mpi(data, &sig)) + return(0); + break; + default: + /* this is kind of ugly. There can be any number of MPI's here + (although 2 is the largest and most likely number. */ + while (DECODE_READABLE(data, 1)) { + if (!decode_mpi(data, &sig)) + return(0); + } + break; + } + if (pktend != data->data+data->offset) { + sprintf(msg, "%ld sig bytes ignored", + pktend-(data->data+data->offset)); + log_info("decode_sig", msg); + return(decode_bytestr(data, pktend-(data->data+data->offset), &sig)); + /* If you wanted to be picky, you could also return(0) here */ + } else { + return(1); } } diff -p -r ./pgputil.h ../pks-0.9.3_multi_worddb_db/pgputil.h *** ./pgputil.h Sun Jun 15 15:01:46 1997 --- ../pks-0.9.3_multi_worddb_db/pgputil.h Wed Jan 13 05:47:50 1999 *************** *** 2,8 **** #define _PGPUTIL_H_ /* ! * $Id: pgputil.h,v 1.4 1997/06/15 06:01:46 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _PGPUTIL_H_ /* ! * $Id: pgputil.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./pks_config.c ../pks-0.9.3_multi_worddb_db/pks_config.c *** ./pks_config.c Mon Apr 27 14:35:43 1998 --- ../pks-0.9.3_multi_worddb_db/pks_config.c Sat Jan 16 17:33:27 1999 *************** *** 1,4 **** ! const char rcsid_pks_c[] = "$Id: pks_config.c,v 1.10.4.1 1998/04/27 05:35:43 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pks_c[] = "$Id: pks_config.c,v 1.2 1998/12/23 08:34:30 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** const pks_config default_config = { *** 33,38 **** --- 33,45 ---- -1, }; + + /* by hironobu */ + const char number_of_db_files_str[] = "number_of_db_files"; + long number_of_db_files_len = sizeof(number_of_db_files_str)-1; + /* end */ + + const char db_dir_str[] = "db_dir"; long db_dir_len = sizeof(db_dir_str)-1; *************** int pks_read_conf_file(const char *filen *** 153,158 **** --- 160,166 ---- else if (num_conf(max_last_str, max_last_len, pc->max_last)) else if (llist_conf(syncsite_str, syncsite_len, &(pc->syncsites))) else if (num_conf(debug_str, debug_len, debug)) + else if (num_conf(number_of_db_files_str, number_of_db_files_len, pc->number_of_db_files)) /* by hironobu */ } fclose(conf); diff -p -r ./pks_config.h ../pks-0.9.3_multi_worddb_db/pks_config.h *** ./pks_config.h Mon Apr 27 14:35:43 1998 --- ../pks-0.9.3_multi_worddb_db/pks_config.h Wed Jan 13 05:47:50 1999 *************** *** 2,8 **** #define _PKS_CONFIG_H_ /* ! * $Id: pks_config.h,v 1.8.4.1 1998/04/27 05:35:43 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _PKS_CONFIG_H_ /* ! * $Id: pks_config.h,v 1.2 1998/12/23 08:34:30 hironobu Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. *************** typedef struct _pks_config { *** 16,21 **** --- 16,24 ---- /* web server stuff */ int www_port; + + /* number of splited db files (by hironobu) */ + int number_of_db_files; /* mail server stuff */ char socket_name[1024]; diff -p -r ./pks_incr.c ../pks-0.9.3_multi_worddb_db/pks_incr.c *** ./pks_incr.c Sun Jun 15 14:46:14 1997 --- ../pks-0.9.3_multi_worddb_db/pks_incr.c Sat Jan 16 17:33:27 1999 *************** *** 1,4 **** ! const char rcsid_pks_incr_c[] = "$Id: pks_incr.c,v 1.4 1997/06/15 05:46:14 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pks_incr_c[] = "$Id: pks_incr.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./pks_incr.h ../pks-0.9.3_multi_worddb_db/pks_incr.h *** ./pks_incr.h Thu Dec 12 04:17:34 1996 --- ../pks-0.9.3_multi_worddb_db/pks_incr.h Wed Jan 13 05:47:51 1999 *************** *** 2,8 **** #define _PKS_INCR_H_ /* ! * $Id: pks_incr.h,v 1.2 1996/12/11 19:17:34 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _PKS_INCR_H_ /* ! * $Id: pks_incr.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./pks_socket.c ../pks-0.9.3_multi_worddb_db/pks_socket.c *** ./pks_socket.c Mon Apr 27 09:07:49 1998 --- ../pks-0.9.3_multi_worddb_db/pks_socket.c Sat Jan 16 17:33:27 1999 *************** *** 1,4 **** ! const char rcsid_pks_socket_c[] = "$Id: pks_socket.c,v 1.15.4.2 1998/04/27 00:07:49 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pks_socket_c[] = "$Id: pks_socket.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./pks_socket.h ../pks-0.9.3_multi_worddb_db/pks_socket.h *** ./pks_socket.h Thu Dec 12 04:17:37 1996 --- ../pks-0.9.3_multi_worddb_db/pks_socket.h Wed Jan 13 05:47:52 1999 *************** *** 2,8 **** #define _PKS_SOCKET_H_ /* ! * $Id: pks_socket.h,v 1.4 1996/12/11 19:17:37 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _PKS_SOCKET_H_ /* ! * $Id: pks_socket.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./pks_www.c ../pks-0.9.3_multi_worddb_db/pks_www.c *** ./pks_www.c Sun Apr 26 13:15:52 1998 --- ../pks-0.9.3_multi_worddb_db/pks_www.c Mon Jan 18 03:22:19 1999 *************** *** 1,4 **** ! const char rcsid_pks_web_c[] = "$Id: pks_www.c,v 1.15.4.1 1998/04/26 04:15:52 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pks_web_c[] = "$Id: pks_www.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** int w_htmlify_string(xbuffer *out, unsig *** 50,56 **** } /* output the remaining text and an EOL */ ! if (!xbuffer_append(out, in+i, i-j) || !xbuffer_append_str(out, "\015\012")) return(0); --- 50,56 ---- } /* output the remaining text and an EOL */ ! if (!xbuffer_append(out, in+j, i-j) || !xbuffer_append_str(out, "\015\012")) return(0); diff -p -r ./pks_www.h ../pks-0.9.3_multi_worddb_db/pks_www.h *** ./pks_www.h Thu Dec 12 04:17:40 1996 --- ../pks-0.9.3_multi_worddb_db/pks_www.h Wed Jan 13 05:47:52 1999 *************** *** 2,8 **** #define _PKS_WWW_H_ /* ! * $Id: pks_www.h,v 1.3 1996/12/11 19:17:40 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _PKS_WWW_H_ /* ! * $Id: pks_www.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./pkscheck.c ../pks-0.9.3_multi_worddb_db/pkscheck.c *** ./pkscheck.c Fri May 1 13:24:46 1998 --- ../pks-0.9.3_multi_worddb_db/pkscheck.c Mon Jan 18 05:23:58 1999 *************** *** 1,4 **** ! const char rcsid_dbcheck_c[] = "$Id: pkscheck.c,v 1.5.4.1 1998/05/01 04:24:46 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_dbcheck_c[] = "$Id: pkscheck.c,v 1.2 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** int main(int argc, char *argv[]) *** 42,54 **** exit(1); } ! if ((ret = (*(worddb->cursor))(worddb, NULL, &cursor))) { sprintf(buf, "error creating worddb cursor: error = %d", ret); log_error("main", buf); } for (ret = (*(cursor->c_get))(cursor, &ikey, &idata, DB_FIRST); ! ret == 0; ret = (*(cursor->c_get))(cursor, &ikey, &idata, DB_NEXT)) { if (idata.size%12) { sprintf(buf, "worddb corrupt in entry = \"%.*s\", size = %d\n", --- 42,54 ---- exit(1); } ! if ((ret = (*(worddb->cursor))(worddb, NULL, &cursor,0))) { sprintf(buf, "error creating worddb cursor: error = %d", ret); log_error("main", buf); } for (ret = (*(cursor->c_get))(cursor, &ikey, &idata, DB_FIRST); ! ret != 0; ret = (*(cursor->c_get))(cursor, &ikey, &idata, DB_NEXT)) { if (idata.size%12) { sprintf(buf, "worddb corrupt in entry = \"%.*s\", size = %d\n", *************** int main(int argc, char *argv[]) *** 60,66 **** for (i=0; iget))(keydb, NULL, &kkey, &kdata, 0)) { sprintf(buf, "keyid %02X%02X%02X%02X in worddb but not keydb\n", ((unsigned char *) kkey.data)[0], --- 60,72 ---- for (i=0; iget))(keydb, NULL, &kkey, &kdata, 0)) { sprintf(buf, "keyid %02X%02X%02X%02X in worddb but not keydb\n", ((unsigned char *) kkey.data)[0], *************** int main(int argc, char *argv[]) *** 74,80 **** (*(cursor->c_close))(cursor); ! if ((ret = (*(timedb->cursor))(timedb, NULL, &cursor))) { sprintf(buf, "error creating timedb cursor: error = %d", ret); log_error("main", buf); } --- 80,86 ---- (*(cursor->c_close))(cursor); ! if ((ret = (*(timedb->cursor))(timedb, NULL, &cursor,0))) { sprintf(buf, "error creating timedb cursor: error = %d", ret); log_error("main", buf); } *************** int main(int argc, char *argv[]) *** 92,98 **** for (i=0; iget))(keydb, NULL, &kkey, &kdata, 0)) { sprintf(buf, "keyid %02X%02X%02X%02X in timedb but not keydb\n", ((unsigned char *) kkey.data)[0], --- 98,110 ---- for (i=0; iget))(keydb, NULL, &kkey, &kdata, 0)) { sprintf(buf, "keyid %02X%02X%02X%02X in timedb but not keydb\n", ((unsigned char *) kkey.data)[0], diff -p -r ./pksclient.c ../pks-0.9.3_multi_worddb_db/pksclient.c *** ./pksclient.c Mon Apr 27 09:07:50 1998 --- ../pks-0.9.3_multi_worddb_db/pksclient.c Sat Jan 16 17:33:27 1999 *************** *** 1,4 **** ! const char rcsid_pksclient_c[] = "$Id: pksclient.c,v 1.25.4.1 1998/04/27 00:07:50 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pksclient_c[] = "$Id: pksclient.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./pksd.c ../pks-0.9.3_multi_worddb_db/pksd.c *** ./pksd.c Mon Apr 27 14:35:44 1998 --- ../pks-0.9.3_multi_worddb_db/pksd.c Sat Jan 16 17:33:27 1999 *************** *** 1,4 **** ! const char rcsid_pksd_c[] = "$Id: pksd.c,v 1.20.4.2 1998/04/27 05:35:44 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pksd_c[] = "$Id: pksd.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. *************** int main(int argc, char *argv[]) *** 80,85 **** --- 80,87 ---- psc.socket = pc.socket_name; psc.mrc = &mrc; + + /*handledb_init_array(pc.number_of_db_files); by hironobu */ if (!pc.www_port && (pc.mail_delivery_client[0] == '\0')) { fprintf(stderr, "The configuration file did not specify any servers\n" diff -p -r ./pksdctl.c ../pks-0.9.3_multi_worddb_db/pksdctl.c *** ./pksdctl.c Sun Apr 26 13:16:38 1998 --- ../pks-0.9.3_multi_worddb_db/pksdctl.c Sat Jan 16 17:33:28 1999 *************** *** 1,4 **** ! const char rcsid_pksdctl_c[] = "$Id: pksdctl.c,v 1.9.4.1 1998/04/26 04:16:38 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_pksdctl_c[] = "$Id: pksdctl.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./pksdump.c ../pks-0.9.3_multi_worddb_db/pksdump.c *** ./pksdump.c Fri May 1 13:24:48 1998 --- ../pks-0.9.3_multi_worddb_db/pksdump.c Mon Jan 18 06:10:04 1999 *************** void dump_worddb() *** 32,38 **** log_error("main", buf); return; } ! for (ret = (*(cursor->c_get))(cursor, &key, &data, DB_FIRST); ret == 0; ret = (*(cursor->c_get))(cursor, &key, &data, DB_NEXT)) { --- 32,39 ---- log_error("main", buf); return; } ! bzero(&key,sizeof(key)); ! bzero(&data,sizeof(data)); for (ret = (*(cursor->c_get))(cursor, &key, &data, DB_FIRST); ret == 0; ret = (*(cursor->c_get))(cursor, &key, &data, DB_NEXT)) { *************** void dump_worddb() *** 52,57 **** --- 53,60 ---- tmp[4], tmp[5], tmp[6], tmp[7], tmp[8], tmp[9], tmp[10], tmp[11]); } + bzero(&key,sizeof(key)); + bzero(&data,sizeof(data)); } (*(cursor->c_close))(cursor); diff -p -r ./pksmailreq.c ../pks-0.9.3_multi_worddb_db/pksmailreq.c *** ./pksmailreq.c Mon Apr 27 14:35:45 1998 --- ../pks-0.9.3_multi_worddb_db/pksmailreq.c Sat Jan 16 17:33:28 1999 *************** *** 1,4 **** ! const char rcsid_dmailreq_c[] = "$Id: pksmailreq.c,v 1.6.4.3 1998/04/27 05:35:45 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_dmailreq_c[] = "$Id: pksmailreq.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./util.c ../pks-0.9.3_multi_worddb_db/util.c *** ./util.c Wed Apr 29 18:09:50 1998 --- ../pks-0.9.3_multi_worddb_db/util.c Sat Jan 16 17:33:28 1999 *************** *** 1,4 **** ! const char rcsid_util_c[] = "$Id: util.c,v 1.9.4.4 1998/04/29 09:09:50 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_util_c[] = "$Id: util.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./util.h ../pks-0.9.3_multi_worddb_db/util.h *** ./util.h Mon Apr 27 14:33:32 1998 --- ../pks-0.9.3_multi_worddb_db/util.h Wed Jan 13 05:47:53 1999 *************** *** 5,11 **** #include /* ! * $Id: util.h,v 1.7.4.2 1998/04/27 05:33:32 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 5,11 ---- #include /* ! * $Id: util.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./www.c ../pks-0.9.3_multi_worddb_db/www.c *** ./www.c Wed May 6 07:30:17 1998 --- ../pks-0.9.3_multi_worddb_db/www.c Sat Jan 16 17:33:28 1999 *************** *** 1,4 **** ! const char rcsid_www_c[] = "$Id: www.c,v 1.20.4.1 1998/05/05 22:30:17 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_www_c[] = "$Id: www.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. diff -p -r ./www.h ../pks-0.9.3_multi_worddb_db/www.h *** ./www.h Thu Dec 12 04:18:02 1996 --- ../pks-0.9.3_multi_worddb_db/www.h Wed Jan 13 05:47:54 1999 *************** *** 2,8 **** #define _WWW_H_ /* ! * $Id: www.h,v 1.4 1996/12/11 19:18:02 marc Exp $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. --- 2,8 ---- #define _WWW_H_ /* ! * $Id: www.h,v 1.1 1999/01/12 20:47:41 hironobu Exp hironobu $ * * Copyright (c) 1996, Marc Horowitz. All rights reserved. * See the LICENSE file in the release for redistribution information. diff -p -r ./wwwtest.c ../pks-0.9.3_multi_worddb_db/wwwtest.c *** ./wwwtest.c Thu Dec 12 04:18:04 1996 --- ../pks-0.9.3_multi_worddb_db/wwwtest.c Sat Jan 16 17:33:28 1999 *************** *** 1,4 **** ! const char rcsid_wwwtest_c[] = "$Id: wwwtest.c,v 1.7 1996/12/11 19:18:04 marc Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved. --- 1,4 ---- ! const char rcsid_wwwtest_c[] = "$Id: wwwtest.c,v 1.1 1999/01/12 20:47:05 hironobu Exp $"; /* * Copyright (c) 1996, Marc Horowitz. All rights reserved.