-// Copyright (c) 1987-2023 by the citadel.org team
+// Copyright (c) 1987-2024 by the citadel.org team
//
-// This program is open source software. Use, duplication, or disclosure
-// is subject to the terms of the GNU General Public License, version 3.
+// This program is open source software. Use, duplication, or disclosure is subject to the GNU General Public License version 3.
+
+#define THIS_BUILD_CONTAINS_BDB
void bdb_init_backend(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
+#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) {
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);
}
+#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();
+ }
}