]> git.tuebingen.mpg.de Git - adu.git/blobdiff - adu.c
Add copyright header and COPYING file.
[adu.git] / adu.c
diff --git a/adu.c b/adu.c
index 787b0e899d18cb86b20c53263603bcee735ba8ec..409aed0966bed2b5765227c7e4690d93e7dd1237 100644 (file)
--- a/adu.c
+++ b/adu.c
@@ -1,3 +1,9 @@
+/*
+ * Copyright (C) 2008 Andre Noll <maan@systemlinux.org>
+ *
+ * Licensed under the GPL v2. For licencing details see COPYING.
+ */
+
 /** \file adu.c The main functions used by all modes of operation. */
 #include "adu.h"
 #include <dirent.h> /* readdir() */
@@ -106,6 +112,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 +153,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 +261,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;