From: Jonathan McDowell Date: Mon, 31 May 2004 23:48:14 +0000 (+0000) Subject: cscvs to tla changeset 119 X-Git-Tag: 0.3.0~65 X-Git-Url: https://the.earth.li/gitweb/?p=onak.git;a=commitdiff_plain;h=5ba02c41963a4c4077a873a3c686a61cb84d56b7 cscvs to tla changeset 119 Author: noodles Date: 2004/03/28 21:27:03 Open the DB files in read only mode if we only expect to read from them. --- diff --git a/keydb_db3.c b/keydb_db3.c index b39c44d..247cbab 100644 --- a/keydb_db3.c +++ b/keydb_db3.c @@ -5,7 +5,7 @@ * * Copyright 2002 Project Purple * - * $Id: keydb_db3.c,v 1.23 2004/03/23 12:33:46 noodles Exp $ + * $Id: keydb_db3.c,v 1.24 2004/03/28 21:27:03 noodles Exp $ */ #include @@ -124,10 +124,11 @@ struct ll *makewordlist(struct ll *wordlist, char *word) */ void initdb(bool readonly) { - char buf[1024]; - FILE *numdb = NULL; - int ret = 0; - int i = 0; + char buf[1024]; + FILE *numdb = NULL; + int ret = 0; + int i = 0; + u_int32_t flags = 0; snprintf(buf, sizeof(buf) - 1, "%s/num_keydb", config.db_dir); numdb = fopen(buf, "r"); @@ -136,7 +137,7 @@ void initdb(bool readonly) numdbs = atoi(buf); } fclose(numdb); - } else { + } else if (!readonly) { logthing(LOGTHING_ERROR, "Couldn't open num_keydb: %s", strerror(errno)); numdb = fopen(buf, "w"); @@ -198,10 +199,14 @@ void initdb(bool readonly) } snprintf(buf, 1023, "keydb.%d.db", i); + flags = DB_CREATE; + if (readonly) { + flags |= DB_RDONLY; + } ret = dbconns[i]->open(dbconns[i], buf, NULL, DB_HASH, - DB_CREATE, + flags, 0664); if (ret != 0) { logthing(LOGTHING_CRITICAL, @@ -220,7 +225,7 @@ void initdb(bool readonly) ret = worddb->set_flags(worddb, DB_DUP); ret = worddb->open(worddb, "worddb", NULL, DB_BTREE, - DB_CREATE, + flags, 0664); if (ret != 0) { logthing(LOGTHING_CRITICAL,