projects
/
citadel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
more noodling on backend detection
[citadel.git]
/
citadel
/
server
/
backends
/
common
/
database.c
diff --git
a/citadel/server/backends/common/database.c
b/citadel/server/backends/common/database.c
index a07dd22e652d9dc46d1aa8214abe8152d20d12e8..0b8276b0713ee9fca754bc97e3c91e36eca35929 100644
(file)
--- a/
citadel/server/backends/common/database.c
+++ b/
citadel/server/backends/common/database.c
@@
-43,8
+43,11
@@
void (*cdb_tick)(void) = NULL;
// This function is responsible for choosing and initializing a back end.
void cdb_init_backends(void) {
// This function is responsible for choosing and initializing a back end.
void cdb_init_backends(void) {
+ char *chosen_backend = NULL;
+
cdb_chmod_data(); // Set file level permissions so we can actually access the data files
cdb_chmod_data(); // Set file level permissions so we can actually access the data files
+#ifdef THIS_BUILD_CONTAINS_BDB
// Test for Berkeley DB (this does nothing yet -- we're preparing to test for multiple back ends in the future)
int fd = open(ctdl_db_dir"/cdb.00", O_RDONLY);
if (fd) {
// Test for Berkeley DB (this does nothing yet -- we're preparing to test for multiple back ends in the future)
int fd = open(ctdl_db_dir"/cdb.00", O_RDONLY);
if (fd) {
@@
-54,11
+57,23
@@
void cdb_init_backends(void) {
read(fd, &magic, sizeof(magic));
if (magic == 0x00053162) {
syslog(LOG_DEBUG, "db: found existing Citadel database in Berkeley DB format");
read(fd, &magic, sizeof(magic));
if (magic == 0x00053162) {
syslog(LOG_DEBUG, "db: found existing Citadel database in Berkeley DB format");
+ if (!chosen_backend) {
+ chosen_backend = "bdb";
+ }
}
close(fd);
}
}
close(fd);
}
+#endif
- bdb_init_backend(); // for now, this is the only one, so we select it always.
+ // If no existing database has been detected, go with Berkeley DB.
+ if (!chosen_backend) {
+ chosen_backend = "bdb";
+ }
+
+ // Initialize the chosen backend.
+ if (!strcmp(chosen_backend, "bdb")) {
+ bdb_init_backend();
+ }
}
}