X-Git-Url: http://git.tuebingen.mpg.de/?p=adu.git;a=blobdiff_plain;f=adu.c;h=cbc42cb5769bc86b8e7c4ae214adaf781a63871e;hp=787b0e899d18cb86b20c53263603bcee735ba8ec;hb=c5a8fc5f5153f1d2859ddc4f4030c178d77eb726;hpb=c9621313e2699755e65d6424fd4546c33924f272 diff --git a/adu.c b/adu.c index 787b0e8..cbc42cb 100644 --- a/adu.c +++ b/adu.c @@ -106,6 +106,7 @@ static void close_dir_table(void) if (!dir_table) return; + NOTICE_LOG("closing dir table\n"); ret = osl(osl_close_table(dir_table, OSL_MARK_CLEAN)); if (ret < 0) ERROR_LOG("failed to close dir table: %s\n", adu_strerror(-ret)); @@ -146,15 +147,20 @@ static int init_signals(void) int open_dir_table(int create) { + + if (dir_table) + return 1; dir_table_desc.dir = adu_strdup(conf.database_dir_arg); if (create) { + NOTICE_LOG("creating dir table\n"); int ret = osl(osl_create_table(&dir_table_desc)); if (ret < 0) { free((char *)dir_table_desc.dir); return ret; } } + INFO_LOG("opening dir table\n"); return osl(osl_open_table(&dir_table_desc, &dir_table)); } @@ -249,6 +255,7 @@ int main(int argc, char **argv) if (ret < 0) goto out; out: + close_all_tables(); if (ret < 0) { ERROR_LOG("%s\n", adu_strerror(-ret)); return -EXIT_FAILURE;