changeset 3919:b967ffb7e3a6 HEAD

SQLite support. Patch by Jakob Hirsch.
author Timo Sirainen <tss@iki.fi>
date Sun, 22 Jan 2006 14:09:11 +0200
parents 40a461d554e6
children 382f0aafc2bf
files configure.in doc/dovecot-sql.conf src/lib-sql/Makefile.am src/lib-sql/sql-api-private.h src/lib-sql/sql-api.c src/master/main.c
diffstat 6 files changed, 73 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/configure.in	Sun Jan 22 13:33:27 2006 +0200
+++ b/configure.in	Sun Jan 22 14:09:11 2006 +0200
@@ -181,6 +181,15 @@
 	fi,
 	want_mysql=no)
 
+AC_ARG_WITH(sqlite,
+[  --with-sqlite            Build with SQLite3 support],
+	if test x$withval = xno; then
+		want_sqlite=no
+	else
+	want_sqlite=yes
+	fi,
+	want_sqlite=no)
+
 AC_ARG_WITH(ssl,
 [  --with-ssl=[gnutls|openssl] Build with GNUTLS or OpenSSL (default)],
 	if test x$withval = xno; then
@@ -1435,6 +1444,57 @@
 	LIBS=$old_LIBS
 fi
 
+if test $want_sqlite = yes; then
+	# stolen from the mysql code above 
+	for i in /usr /usr/local /usr/local; do
+		for j in include  ""; do
+			if test -r "$i/$j/sqlite3.h"; then
+				MYSQL_INCLUDE=$i/$j
+			fi
+		done
+		for j in lib lib/sqlite3 ""; do
+			if test -f "$i/$j/libsqlite3.so" || test -f "$i/$j/libsqlite3.a"; then
+				MYSQL_LIBDIR=$i/$j
+			fi
+		done
+	done
+
+	old_LIBS=$LIBS
+	if test "$SQLITE_LIBDIR" != ""; then
+		LIBS="$LIBS -L$SQLITE_LIBDIR"
+	fi
+
+	sqlite_lib=""
+	LIBS="$LIBS -lz"
+	AC_CHECK_LIB(sqlite3, sqlite3_open, [
+		sqlite_lib="-lsqlite3 -lz"
+	])
+
+	if test "$sqlite_lib" != ""; then
+		old_CPPFLAGS=$CPPFLAGS
+		if test "$SQLITE_INCLUDE" != ""; then
+			CPPFLAGS="$CPPFLAGS -I $SQLITE_INCLUDE"
+		fi
+		AC_CHECK_HEADER(sqlite3.h, [
+			if test "$SQLITE_INCLUDE" != ""; then
+				SQL_CFLAGS="$SQL_CFLAGS -I$SQLITE_INCLUDE"
+			fi
+			if test "$SQLITE_LIBDIR" != ""; then
+				SQL_LIBS="$SQL_LIBS -L$SQLITE_LIBDIR"
+			fi
+			SQL_LIBS="$SQL_LIBS $sqlite_lib"
+
+			AC_DEFINE(HAVE_SQLITE,, Build with SQLite3 support)
+			have_sql=yes
+			userdb="$userdb sqlite"
+			passdb="$passdb sqlite"
+		])
+		CPPFLAGS=$old_CPPFLAGS
+	fi
+
+	LIBS=$old_LIBS
+fi
+
 if test "$have_sql" = yes; then
 	AC_DEFINE(PASSDB_SQL,, Build with SQL support)
 	AC_DEFINE(USERDB_SQL,, Build with SQL support)
--- a/doc/dovecot-sql.conf	Sun Jan 22 13:33:27 2006 +0200
+++ b/doc/dovecot-sql.conf	Sun Jan 22 14:09:11 2006 +0200
@@ -20,7 +20,7 @@
 #     active CHAR(1) DEFAULT 'Y' NOT NULL
 # );
 
-# Database driver: mysql, pgsql
+# Database driver: mysql, pgsql, sqlite
 #driver = 
 
 # Database connection string. This is driver-specific setting.
@@ -42,9 +42,13 @@
 #   You can connect to UNIX sockets by using host: host=/var/run/mysql.sock
 #   Note that currently you can't use spaces in parameters.
 #
+# sqlite:
+#   The path to the database file.
+#
 # Examples:
 #   connect = host=192.168.1.1 dbname=users
 #   connect = host=sql.example.com dbname=virtual user=virtual password=blarg
+#   connect = /etc/dovecot/authdb.sqlite
 #
 #connect = dbname=virtual user=virtual
 
--- a/src/lib-sql/Makefile.am	Sun Jan 22 13:33:27 2006 +0200
+++ b/src/lib-sql/Makefile.am	Sun Jan 22 14:09:11 2006 +0200
@@ -7,6 +7,7 @@
 libsql_a_SOURCES = \
 	driver-mysql.c \
 	driver-pgsql.c \
+	driver-sqlite.c \
 	sql-api.c
 
 noinst_HEADERS = \
--- a/src/lib-sql/sql-api-private.h	Sun Jan 22 13:33:27 2006 +0200
+++ b/src/lib-sql/sql-api-private.h	Sun Jan 22 14:09:11 2006 +0200
@@ -56,6 +56,7 @@
 
 extern struct sql_db driver_mysql_db;
 extern struct sql_db driver_pgsql_db;
+extern struct sql_db driver_sqlite_db;
 
 extern struct sql_result sql_not_connected_result;
 
--- a/src/lib-sql/sql-api.c	Sun Jan 22 13:33:27 2006 +0200
+++ b/src/lib-sql/sql-api.c	Sun Jan 22 14:09:11 2006 +0200
@@ -10,6 +10,9 @@
 #ifdef HAVE_MYSQL
 	&driver_mysql_db,
 #endif
+#ifdef HAVE_SQLITE
+	&driver_sqlite_db,
+#endif
 	NULL
 };
 
--- a/src/master/main.c	Sun Jan 22 13:33:27 2006 +0200
+++ b/src/master/main.c	Sun Jan 22 14:09:11 2006 +0200
@@ -640,6 +640,9 @@
 #ifdef HAVE_PGSQL
 		" postgresql"
 #endif
+#ifdef HAVE_SQLITE
+		" sqlite"
+#endif
 	"\nPassdb: "
 #ifdef PASSDB_BSDAUTH
 		"bsdauth "