aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-02-12 21:02:03 +1300
committerJelmer Vernooij <jelmer@samba.org>2006-02-12 21:02:03 +1300
commitf665dabdff831743ea35e755b6ec1e2fe2551d9c (patch)
tree50e2977326230982ac72300e78a0cb5050f0a717
parent5ebe625399d5116e222d6389434f645e906265ec (diff)
Initial work on new LDB-based storage backend
-rw-r--r--Makefile2
-rwxr-xr-xconfigure35
-rw-r--r--storage_ldb.c63
3 files changed, 100 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 295fe69e..a32c2639 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,8 @@
objects = account.o bitlbee.o conf.o crypting.o help.o ini.o ipc.o irc.o irc_commands.o log.o nick.o query.o root_commands.o set.o storage.o storage_text.o unix.o url.o user.o util.o
subdirs = protocols
+objects += $(LDB_OBJ)
+
# Expansion of variables
subdirobjs = $(foreach dir,$(subdirs),$(dir)/$(dir).o)
CFLAGS += -Wall
diff --git a/configure b/configure
index 2731d5b1..f0f2adcc 100755
--- a/configure
+++ b/configure
@@ -24,6 +24,7 @@ yahoo=1
debug=0
strip=1
ipv6=1
+ldb=auto
ssl=auto
arch=`uname -s`
@@ -59,6 +60,8 @@ Option Description Default
--ipv6=0/1 IPv6 socket support $ipv6
+--ldb=0/1/auto LDB support $ldb
+
--ssl=... SSL library to use (gnutls, nss, openssl, bogus, auto)
$ssl
EOF
@@ -210,6 +213,20 @@ EOF
fi;
}
+detect_ldb()
+{
+ if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG ldb; then
+ cat<<EOF>>Makefile.settings
+EFLAGS+=`$PKG_CONFIG --libs ldb`
+CFLAGS+=`$PKG_CONFIG --cflags ldb`
+EOF
+ ldb=1
+ ret=1
+ else
+ ret=0
+ fi
+}
+
if [ "$msn" = 1 -o "$jabber" = 1 ]; then
if [ "$ssl" = "auto" ]; then
detect_gnutls
@@ -270,6 +287,18 @@ if [ "$msn" = 1 -o "$jabber" = 1 ]; then
echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
fi
+if [ "$ldb" = "auto" ]; then
+ detect_ldb
+fi
+
+if [ "$ldb" = 0 ]; then
+ echo "LDB_OBJ=\# no ldb" >> Makefile.settings
+ echo "#undef LDB" >> config.h
+elif [ "$ldb" = 1 ]; then
+ echo "#define LDB 1" >> config.h
+ echo "LDB_OBJ=storage_ldb.o" >> Makefile.settings
+fi
+
if [ "$strip" = 0 ]; then
echo "STRIP=\# skip strip" >> Makefile.settings;
else
@@ -407,3 +436,9 @@ if [ -n "$protocols" ]; then
else
echo ' Building without IM-protocol support. We wish you a lot of fun...';
fi
+
+if [ "$ldb" = "0" ]; then
+ echo " LDB storage backend disabled."
+else
+ echo " LDB storage backend enabled."
+fi
diff --git a/storage_ldb.c b/storage_ldb.c
new file mode 100644
index 00000000..09d1452b
--- /dev/null
+++ b/storage_ldb.c
@@ -0,0 +1,63 @@
+ /********************************************************************\
+ * BitlBee -- An IRC to other IM-networks gateway *
+ * *
+ * Copyright 2002-2004 Wilmer van der Gaast and others *
+ \********************************************************************/
+
+/* Storage backend that uses the LDB embedded LDAP-like database */
+
+/* Copyright (C) 2006 Jelmer Vernooij <jelmer@samba.org> */
+
+/*
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 with
+ the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL;
+ if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#define BITLBEE_CORE
+#include "bitlbee.h"
+#include <ldb.h>
+
+static void sldb_init (void)
+{
+}
+
+static storage_status_t sldb_load ( const char *my_nick, const char* password, irc_t *irc )
+{
+ return STORAGE_OK;
+}
+
+static storage_status_t sldb_save( irc_t *irc, int overwrite )
+{
+ return STORAGE_OK;
+}
+
+static storage_status_t sldb_check_pass( const char *nick, const char *password )
+{
+ return STORAGE_OK;
+}
+
+static storage_status_t sldb_remove( const char *nick, const char *password )
+{
+ return STORAGE_OK;
+}
+
+storage_t storage_ldb = {
+ .name = "ldb",
+ .init = sldb_init,
+ .check_pass = sldb_check_pass,
+ .remove = sldb_remove,
+ .load = sldb_load,
+ .save = sldb_save
+};