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.
*
* Copyright 2002 Project Purple
*
*
* 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 $
*/
void initdb(bool readonly)
{
*/
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");
snprintf(buf, sizeof(buf) - 1, "%s/num_keydb", config.db_dir);
numdb = fopen(buf, "r");
numdbs = atoi(buf);
}
fclose(numdb);
numdbs = atoi(buf);
}
fclose(numdb);
+ } else if (!readonly) {
logthing(LOGTHING_ERROR, "Couldn't open num_keydb: %s",
strerror(errno));
numdb = fopen(buf, "w");
logthing(LOGTHING_ERROR, "Couldn't open num_keydb: %s",
strerror(errno));
numdb = fopen(buf, "w");
}
snprintf(buf, 1023, "keydb.%d.db", i);
}
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,
ret = dbconns[i]->open(dbconns[i], buf,
NULL,
DB_HASH,
0664);
if (ret != 0) {
logthing(LOGTHING_CRITICAL,
0664);
if (ret != 0) {
logthing(LOGTHING_CRITICAL,
ret = worddb->set_flags(worddb, DB_DUP);
ret = worddb->open(worddb, "worddb", NULL, DB_BTREE,
ret = worddb->set_flags(worddb, DB_DUP);
ret = worddb->open(worddb, "worddb", NULL, DB_BTREE,
0664);
if (ret != 0) {
logthing(LOGTHING_CRITICAL,
0664);
if (ret != 0) {
logthing(LOGTHING_CRITICAL,