Index: configure
--- configure.orig	2006-05-18 21:30:13.000000000 +0200
+++ configure	2006-09-20 07:42:24.019489745 +0200
@@ -5125,7 +5125,7 @@
 	fi
 
 	saved_LIBS=$LIBS
-        for dbname in db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db
+        for dbname in db
           do
 	    LIBS="$saved_LIBS -l$dbname"
 	    cat >conftest.$ac_ext <<_ACEOF
@@ -5205,6 +5205,54 @@
 fi
 rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
         fi
+        if test "$dblib" = "no"; then
+	    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <db.h>
+int
+main ()
+{
+dbm_open(NULL, 0, 0, 0, NULL, NULL, NULL);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  BDB_LIBADD="$BDB_LIBADD -ldb"; dblib="berkeley"; dbname=db
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+dblib="no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+        fi
 	LIBS=$saved_LIBS
 
 	LDFLAGS=$BDB_SAVE_LDFLAGS
@@ -5882,7 +5930,7 @@
 	fi
 
 	saved_LIBS=$LIBS
-        for dbname in db-4.4 db4.4 db44 db-4.3 db4.3 db43 db-4.2 db4.2 db42 db-4.1 db4.1 db41 db-4.0 db4.0 db-4 db40 db4 db-3.3 db3.3 db33 db-3.2 db3.2 db32 db-3.1 db3.1 db31 db-3 db30 db3 db
+        for dbname in db
           do
 	    LIBS="$saved_LIBS -l$dbname"
 	    cat >conftest.$ac_ext <<_ACEOF
@@ -5962,6 +6010,54 @@
 fi
 rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
         fi
+        if test "$dblib" = "no"; then
+	    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <db.h>
+int
+main ()
+{
+dbm_open(NULL, 0, 0, 0, NULL, NULL, NULL);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  BDB_LIBADD="$BDB_LIBADD -ldb"; dblib="berkeley"; dbname=db
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+dblib="no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+        fi
 	LIBS=$saved_LIBS
 
 	LDFLAGS=$BDB_SAVE_LDFLAGS
Index: lib/saslint.h
--- lib/saslint.h.orig	2006-04-18 22:25:45.000000000 +0200
+++ lib/saslint.h	2006-09-20 07:42:24.019997273 +0200
@@ -109,8 +109,6 @@
   const char *appname;
 } sasl_global_callbacks_t;
 
-extern sasl_global_callbacks_t global_callbacks;
-
 typedef struct _sasl_external_properties 
 {
     sasl_ssf_t ssf;
Index: lib/server.c
--- lib/server.c.orig	2006-05-17 18:46:13.000000000 +0200
+++ lib/server.c	2006-09-20 07:42:24.020844262 +0200
@@ -95,7 +95,7 @@
 
 static mech_list_t *mechlist = NULL; /* global var which holds the list */
 
-sasl_global_callbacks_t global_callbacks;
+static sasl_global_callbacks_t global_callbacks;
 
 /* set the password for a user
  *  conn        -- SASL connection
@@ -477,16 +477,8 @@
         return SASL_CONTINUE;
     }
 
-    /* get the path to the config file */
-    getconfpath_cb = _sasl_find_getconfpath_callback( global_callbacks.callbacks );
-    if (getconfpath_cb == NULL) return SASL_BADPARAM;
-
-    /* getconfpath_cb->proc MUST be a sasl_getconfpath_t; if only C had a type
-       system */
-    result = ((sasl_getconfpath_t *)(getconfpath_cb->proc))(getconfpath_cb->context,
-						    &path_to_config);
-    if (result != SASL_OK) goto done;
-    if (path_to_config == NULL) path_to_config = "";
+    result = SASL_OK;
+    path_to_config = "@l_sysconfdir@";
 
     next = path_to_config;
 
Index: sample/client.c
--- sample/client.c.orig	2004-03-09 18:35:32.000000000 +0100
+++ sample/client.c	2006-09-20 07:42:24.022328546 +0200
@@ -133,13 +133,11 @@
     return SASL_OK;
 }
 
-#ifndef HAVE_GETPASSPHRASE
 static char *
-getpassphrase(const char *prompt)
+my_getpassphrase(const char *prompt)
 {
   return getpass(prompt);
 }
-#endif /* ! HAVE_GETPASSPHRASE */
 
 static int
 getsecret(sasl_conn_t *conn,
@@ -155,7 +153,7 @@
     if (! conn || ! psecret || id != SASL_CB_PASS)
 	return SASL_BADPARAM;
 
-    password = getpassphrase("Password: ");
+    password = my_getpassphrase("Password: ");
     if (! password)
 	return SASL_FAIL;
 
Index: sample/sample-client.c
--- sample/sample-client.c.orig	2004-10-26 13:14:33.000000000 +0200
+++ sample/sample-client.c	2006-09-20 07:42:24.022722474 +0200
@@ -244,13 +244,11 @@
   return SASL_OK;
 }
 
-#ifndef HAVE_GETPASSPHRASE
 static char *
-getpassphrase(const char *prompt)
+my_getpassphrase(const char *prompt)
 {
   return getpass(prompt);
 }
-#endif /* ! HAVE_GETPASSPHRASE */
 
 static int
 getsecret(sasl_conn_t *conn,
@@ -264,7 +262,7 @@
   if (! conn || ! psecret || id != SASL_CB_PASS)
     return SASL_BADPARAM;
 
-  password = getpassphrase("Password: ");
+  password = my_getpassphrase("Password: ");
   if (! password)
     return SASL_FAIL;
 
Index: saslauthd/Makefile.in
--- saslauthd/Makefile.in.orig	2006-05-18 21:30:21.000000000 +0200
+++ saslauthd/Makefile.in	2006-09-20 07:42:24.021263412 +0200
@@ -150,11 +150,11 @@
 saslauthd_DEPENDENCIES = saslauthd-main.o @LTLIBOBJS@
 saslauthd_LDADD = @SASL_KRB_LIB@ \
 		  @GSSAPIBASE_LIBS@ @GSSAPI_LIBS@ @LIB_CRYPT@ @LIB_SIA@ \
-		  @LIB_SOCKET@ @SASL_DB_LIB@ @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@
+		  @LIB_SOCKET@ @SASL_DB_LIB@ @LIB_PAM@ @LDAP_LIBS@ @LTLIBOBJS@ ../lib/libsasl2.a
 
 
 testsaslauthd_SOURCES = testsaslauthd.c utils.c
-testsaslauthd_LDADD = @LIB_SOCKET@
+testsaslauthd_LDADD = @LIB_SOCKET@ ../lib/libsasl2.a
 
 saslcache_SOURCES = saslcache.c
 
Index: saslauthd/lak.c
--- saslauthd/lak.c.orig	2005-05-15 07:49:51.000000000 +0200
+++ saslauthd/lak.c	2006-09-20 07:42:24.022012854 +0200
@@ -47,6 +47,7 @@
 #include <crypt.h>
 #endif
 
+#include "saslauthd.h" /* get strlcpy macro for non-BSD; get HAVE_OPENSSL from config.h */
 #ifdef HAVE_OPENSSL
 #ifndef OPENSSL_DISABLE_OLD_DES_SUPPORT
 #define OPENSSL_DISABLE_OLD_DES_SUPPORT
@@ -57,7 +58,7 @@
 
 #include <ldap.h>
 #include <lber.h>
-#include <sasl.h>
+#include "sasl.h"
 #include "lak.h"
 
 typedef struct lak_auth_method {
