X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fdatabase.c;h=f4050722aee171b2dff9cdf8a59e369159bffc72;hb=775ae84fdece926d05fd0d8d313bd4d06ff473f9;hp=c9e4264bc4c5c97386ee24c11a7f724230293fcc;hpb=e6e78364fd1351c774df4059d7aead635794c075;p=citadel.git diff --git a/citadel/database.c b/citadel/database.c index c9e4264bc..f4050722a 100644 --- a/citadel/database.c +++ b/citadel/database.c @@ -95,6 +95,12 @@ void defrag_databases(void) gdbm_reorganize(gdbms[CDB_FLOORTAB]); end_critical_section(S_DATABASE); end_critical_section(S_FLOORTAB); + + /* defrag the directory */ + lprintf(7, "Defragmenting the directory\n"); + begin_critical_section(S_DIRECTORY); + gdbm_reorganize(gdbms[CDB_DIRECTORY]); + end_critical_section(S_DIRECTORY); } @@ -161,6 +167,13 @@ void open_databases(void) gdbm_strerror(gdbm_errno)); exit(1); } + gdbms[CDB_DIRECTORY] = gdbm_open("data/directory.gdbm", 0, + GDBM_WRCREAT, 0600, NULL); + if (gdbms[CDB_DIRECTORY] == NULL) { + lprintf(2, "Cannot open directory: %s\n", + gdbm_strerror(gdbm_errno)); + exit(1); + } /* end_critical_section(S_DATABASE); */