Index: Makefile
===================================================================
--- Makefile	(revision 728a981e422539df38d27d87e33829082d376ac6)
+++ Makefile	(revision f32d5578d7039f1e61e99b2e1f7bfd0a47828c8c)
@@ -14,5 +14,5 @@
 subdirs = protocols
 
-objects += $(LDB_OBJ)
+objects += $(LDAP_OBJ)
 
 # Expansion of variables
Index: configure
===================================================================
--- configure	(revision 728a981e422539df38d27d87e33829082d376ac6)
+++ configure	(revision f32d5578d7039f1e61e99b2e1f7bfd0a47828c8c)
@@ -28,5 +28,5 @@
 strip=1
 ipv6=1
-ldb=auto
+ldap=auto
 ssl=auto
 
@@ -65,5 +65,5 @@
 --ipv6=0/1	IPv6 socket support			$ipv6
 
---ldb=0/1/auto	LDB support				$ldb
+--ldap=0/1/auto	LDAP support				$ldap
 
 --ssl=...	SSL library to use (gnutls, nss, openssl, bogus, auto)
@@ -224,5 +224,5 @@
 }
 
-detect_ldb()
+detect_ldap()
 {
 	if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG ldb; then
@@ -231,5 +231,5 @@
 CFLAGS+=`$PKG_CONFIG --cflags ldb`
 EOF
-		ldb=1
+		ldap=1
 		ret=1
 	else
@@ -298,14 +298,14 @@
 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
+if [ "$ldap" = "auto" ]; then
+	detect_ldap
+fi
+
+if [ "$ldap" = 0 ]; then
+	echo "LDAP_OBJ=\# no ldap" >> Makefile.settings
+	echo "#undef LDAP" >> config.h
+elif [ "$ldap" = 1 ]; then
+	echo "#define LDAP 1" >> config.h
+	echo "LDAP_OBJ=storage_ldap.o" >> Makefile.settings
 fi
 
@@ -461,7 +461,7 @@
 fi
 
-if [ "$ldb" = "0" ]; then
-	echo "  LDB storage backend disabled."
-else
-	echo "  LDB storage backend enabled."
-fi
+if [ "$ldap" = "0" ]; then
+	echo "  LDAP storage backend disabled."
+else
+	echo "  LDAP storage backend enabled."
+fi
Index: storage_ldap.c
===================================================================
--- storage_ldap.c	(revision f32d5578d7039f1e61e99b2e1f7bfd0a47828c8c)
+++ storage_ldap.c	(revision f32d5578d7039f1e61e99b2e1f7bfd0a47828c8c)
@@ -0,0 +1,162 @@
+  /********************************************************************\
+  * BitlBee -- An IRC to other IM-networks gateway                     *
+  *                                                                    *
+  * Copyright 2002-2004 Wilmer van der Gaast and others                *
+  \********************************************************************/
+
+/* Storage backend that uses a LDAP 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 <ldap.h>
+
+#define BB_LDAP_HOST "localhost"
+#define BB_LDAP_BASE ""
+
+static char *nick_dn(const char *nick)
+{
+	return g_strdup_printf("bitlBeeNick=%s%s%s", nick, BB_LDAP_BASE?",":"", BB_LDAP_BASE?BB_LDAP_BASE:"");
+}
+
+static storage_status_t nick_connect(const char *nick, const char *password, LDAP **ld)
+{
+	char *mydn;
+	int ret;
+	storage_status_t status;
+	*ld = ldap_init(BB_LDAP_HOST, LDAP_PORT);
+
+	if (!ld) {
+		/* FIXME: report error */
+		return STORAGE_OTHER_ERROR;
+	}
+
+	mydn = nick_dn(nick);
+
+	ret = ldap_simple_bind_s(*ld, mydn, password);
+
+	switch (ret) {
+	 case LDAP_SUCCESS: status = STORAGE_OK; break;
+	 case LDAP_INVALID_CREDENTIALS: status = STORAGE_INVALID_PASSWORD; break;
+	 default: 
+		/* FIXME: Log */
+		status = STORAGE_OTHER_ERROR;
+		break;
+	}
+
+	g_free(mydn);
+
+	return status;
+}
+
+static void sldap_init (void)
+{
+}
+
+static storage_status_t sldap_load ( const char *my_nick, const char* password, irc_t *irc )
+{
+	LDAPMessage *res;
+	LDAP *ld;
+	int ret;
+	storage_status_t status;
+	char *mydn; 
+
+	status = nick_connect(my_nick, password, &ld);
+	if (status != STORAGE_OK)
+		return status;
+
+	mydn = nick_dn(my_nick);
+
+	ret = ldap_search_s(ld, mydn, LDAP_SCOPE_ONELEVEL, "(objectClass=*)", NULL, 0, &res);
+
+	g_free(mydn);
+
+	/* FIXME: Check ret */
+
+	/* FIXME: Store in irc_t */
+	
+	return STORAGE_OK;
+}
+
+static storage_status_t sldap_save( irc_t *irc, int overwrite )
+{
+	LDAP *ld;
+	char *mydn;
+	storage_status_t status;
+
+	status = nick_connect(irc->nick, irc->password, &ld);
+	if (status != STORAGE_OK)
+		return status;
+
+	mydn = nick_dn(irc->nick);
+
+	/* FIXME */
+	
+	g_free(mydn);
+	
+	return STORAGE_OK;
+}
+
+static storage_status_t sldap_check_pass( const char *nick, const char *password )
+{
+	LDAP *ld;
+	storage_status_t status;
+
+	status = nick_connect(nick, password, &ld);
+
+	ldap_unbind_s(ld);
+
+	return status;
+}
+
+static storage_status_t sldap_remove( const char *nick, const char *password )
+{
+	storage_status_t status;
+	LDAP *ld;
+	char *mydn;
+	int ret;
+	
+	status = nick_connect(nick, password, &ld);
+
+	if (status != STORAGE_OK)
+		return status;
+
+	mydn = nick_dn(nick);
+	
+	ret = ldap_delete(ld, mydn);
+
+	if (ret != LDAP_SUCCESS) {
+		/* FIXME: report */
+		return STORAGE_OTHER_ERROR;
+	}
+
+	g_free(mydn);
+	return STORAGE_OK;
+}
+
+storage_t storage_ldap = {
+	.name = "ldap",
+	.init = sldap_init,
+	.check_pass = sldap_check_pass,
+	.remove = sldap_remove,
+	.load = sldap_load,
+	.save = sldap_save
+};
Index: orage_ldb.c
===================================================================
--- storage_ldb.c	(revision 728a981e422539df38d27d87e33829082d376ac6)
+++ 	(revision )
@@ -1,63 +1,0 @@
-  /********************************************************************\
-  * 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
-};
