about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rw-r--r--configure.ac7
-rw-r--r--src/database.c70
-rw-r--r--src/database.h43
-rw-r--r--src/profanity.c3
5 files changed, 124 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 95b2401d..9ed8f07b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,7 @@
 core_sources = \
-	src/xmpp/contact.c src/xmpp/contact.h src/log.c src/common.c \
+	src/xmpp/contact.c src/xmpp/contact.h \
+	src/log.c src/common.c \
+	src/database.h src/database.c \
 	src/log.h src/profanity.c src/common.h \
 	src/profanity.h src/xmpp/chat_session.c \
 	src/xmpp/chat_session.h src/xmpp/muc.c src/xmpp/muc.h src/xmpp/jid.h src/xmpp/jid.c \
diff --git a/configure.ac b/configure.ac
index 0800ea0a..92db515f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -179,6 +179,9 @@ PKG_CHECK_MODULES([curl], [libcurl], [],
     [AC_CHECK_LIB([curl], [main], [],
         [AC_MSG_ERROR([libcurl is required for profanity])])])
 
+PKG_CHECK_MODULES([SQLITE], [sqlite3 >= 3.30.0], [],
+    [AC_MSG_ERROR([sqlite3 3.30.0 or higher is required for profanity profanity])])
+
 AS_IF([test "x$enable_icons_and_clipboard" != xno],
     [PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.24.10],
         [AC_DEFINE([HAVE_GTK], [1], [libgtk module])],
@@ -332,9 +335,9 @@ AS_IF([test "x$PACKAGE_STATUS" = xdevelopment],
 AS_IF([test "x$PLATFORM" = xosx],
     [AM_CFLAGS="$AM_CFLAGS -Qunused-arguments"])
 AM_LDFLAGS="$AM_LDFLAGS -export-dynamic"
-AM_CPPFLAGS="$AM_CPPFLAGS $glib_CFLAGS $gio_CFLAGS $curl_CFLAGS $libnotify_CFLAGS $PYTHON_CPPFLAGS ${GTK_CFLAGS}"
+AM_CPPFLAGS="$AM_CPPFLAGS $glib_CFLAGS $gio_CFLAGS $curl_CFLAGS $libnotify_CFLAGS $PYTHON_CPPFLAGS ${GTK_CFLAGS} ${SQLITE_CFLAGS}"
 AM_CPPFLAGS="$AM_CPPFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\" -DICONS_PATH=\"\\\"$ICONS_PATH\\\"\""
-LIBS="$glib_LIBS $gio_LIBS $curl_LIBS $libnotify_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS ${GTK_LIBS} $LIBS"
+LIBS="$glib_LIBS $gio_LIBS $curl_LIBS $libnotify_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS ${GTK_LIBS} ${SQLITE_LIBS} $LIBS"
 
 AC_SUBST(AM_LDFLAGS)
 AC_SUBST(AM_CFLAGS)
diff --git a/src/database.c b/src/database.c
new file mode 100644
index 00000000..3ac203e3
--- /dev/null
+++ b/src/database.c
@@ -0,0 +1,70 @@
+/*
+ * database.c
+ * vim: expandtab:ts=4:sts=4:sw=4
+ *
+ * Copyright (C) 2020 Michael Vetter <jubalh@idoru.org>
+ *
+ * This file is part of Profanity.
+ *
+ * Profanity is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Profanity is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Profanity.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ * In addition, as a special exception, the copyright holders give permission to
+ * link the code of portions of this program with the OpenSSL library under
+ * certain conditions as described in each individual source file, and
+ * distribute linked combinations including the two.
+ *
+ * You must obey the GNU General Public License in all respects for all of the
+ * code used other than OpenSSL. If you modify file(s) with this exception, you
+ * may extend this exception to your version of the file(s), but you are not
+ * obligated to do so. If you do not wish to do so, delete this exception
+ * statement from your version. If you delete this exception statement from all
+ * source files in the program, then also delete it here.
+ *
+ */
+
+#include <sqlite3.h>
+
+#include "log.h"
+
+static sqlite3 *g_log_database;
+
+bool
+log_database_init(void)
+{
+    int ret = sqlite3_initialize();
+    char *filename = "test";
+
+	if (ret != SQLITE_OK) {
+        log_error("Error initializing SQLite database: %d", ret);
+        return FALSE;
+	}
+
+    ret = sqlite3_open(filename, &g_log_database);
+    if (ret != SQLITE_OK) {
+        const char *err_msg = sqlite3_errmsg(g_log_database);
+        log_error("Error opening SQLite database: %s", err_msg);
+        return FALSE;
+    }
+
+    log_error("Initialized SQLite database: %s", filename);
+    return TRUE;
+}
+
+void
+log_database_close(void)
+{
+	sqlite3_close(g_log_database);
+	sqlite3_shutdown();
+}
+
diff --git a/src/database.h b/src/database.h
new file mode 100644
index 00000000..11560385
--- /dev/null
+++ b/src/database.h
@@ -0,0 +1,43 @@
+/*
+ * database.h
+ * vim: expandtab:ts=4:sts=4:sw=4
+ *
+ * Copyright (C) 2020 Michael Vetter <jubalh@idoru.org>
+ *
+ * This file is part of Profanity.
+ *
+ * Profanity is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Profanity is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Profanity.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ * In addition, as a special exception, the copyright holders give permission to
+ * link the code of portions of this program with the OpenSSL library under
+ * certain conditions as described in each individual source file, and
+ * distribute linked combinations including the two.
+ *
+ * You must obey the GNU General Public License in all respects for all of the
+ * code used other than OpenSSL. If you modify file(s) with this exception, you
+ * may extend this exception to your version of the file(s), but you are not
+ * obligated to do so. If you do not wish to do so, delete this exception
+ * statement from your version. If you delete this exception statement from all
+ * source files in the program, then also delete it here.
+ *
+ */
+
+#ifndef DATABASE_H
+#define DATABASE_H
+
+bool log_database_init(void);
+void log_database_close(void);
+
+#endif // DATABASE_H
+
diff --git a/src/profanity.c b/src/profanity.c
index dc7bf954..e6830e20 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -53,6 +53,7 @@
 #include "profanity.h"
 #include "common.h"
 #include "log.h"
+#include "database.h"
 #include "config/files.h"
 #include "config/tlscerts.h"
 #include "config/accounts.h"
@@ -187,6 +188,7 @@ _init(char *log_level, char *config_file, char *log_file, char *theme_name)
         log_info("Starting Profanity (%s)...", PACKAGE_VERSION);
     }
 
+    log_database_init();
     chat_log_init();
     groupchat_log_init();
     accounts_load();
@@ -255,6 +257,7 @@ _shutdown(void)
 #ifdef HAVE_OMEMO
     omemo_close();
 #endif
+    log_database_close();
     chat_log_close();
     theme_close();
     accounts_close();