From 5ba02c41963a4c4077a873a3c686a61cb84d56b7 Mon Sep 17 00:00:00 2001
From: Jonathan McDowell <noodles@earth.li>
Date: Mon, 31 May 2004 23:48:14 +0000
Subject: [PATCH] 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.

---
 keydb_db3.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

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 <assert.h>
@@ -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,
-- 
2.39.5