]> git.sur5r.net Git - openldap/commitdiff
Sync with HEAD, including
authorKurt Zeilenga <kurt@openldap.org>
Thu, 29 Aug 2002 04:10:13 +0000 (04:10 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 29 Aug 2002 04:10:13 +0000 (04:10 +0000)
- subclass indexing
- bdb locker id fixes

72 files changed:
CHANGES
configure
configure.in
include/ldap_pvt_thread.h [new file with mode: 0644]
include/portable.h.in
include/portable.nt
libraries/libldap_r/thr_stub.c [new file with mode: 0644]
libraries/libldap_r/tpool.c
servers/slapd/Makefile.in
servers/slapd/acl.c
servers/slapd/attr.c
servers/slapd/back-bdb/attr.c
servers/slapd/back-bdb/back-bdb.h
servers/slapd/back-bdb/cache.c
servers/slapd/back-bdb/dbcache.c
servers/slapd/back-bdb/dn2id.c
servers/slapd/back-bdb/error.c
servers/slapd/back-bdb/idl.c
servers/slapd/back-bdb/idl.h [new file with mode: 0644]
servers/slapd/back-bdb/init.c
servers/slapd/back-bdb/proto-bdb.h
servers/slapd/back-bdb/search.c
servers/slapd/back-dnssrv/referral.c
servers/slapd/back-dnssrv/search.c
servers/slapd/back-ldbm/attr.c
servers/slapd/back-shell/shell.h
servers/slapd/backend.c
servers/slapd/bind.c
servers/slapd/charray.c [deleted file]
servers/slapd/connection.c
servers/slapd/daemon.c
servers/slapd/init.c
servers/slapd/libslapd.dsp
servers/slapd/limits.c
servers/slapd/modify.c
servers/slapd/modrdn.c
servers/slapd/oc.c
servers/slapd/oidm.c [new file with mode: 0644]
servers/slapd/proto-slap.h
servers/slapd/result.c
servers/slapd/root_dse.c
servers/slapd/sasl.c
servers/slapd/saslauthz.c
servers/slapd/schema_check.c
servers/slapd/schema_init.c
servers/slapd/schema_prep.c
servers/slapd/slap.h
servers/slapd/value.c
tests/data/acl.out.master
tests/data/do_add.1 [new file with mode: 0644]
tests/data/do_add.2 [new file with mode: 0644]
tests/data/do_add.3 [new file with mode: 0644]
tests/data/do_add.4 [new file with mode: 0644]
tests/data/lang-out.ldif [new file with mode: 0644]
tests/data/modify.out.master
tests/data/modrdn.out.master [new file with mode: 0644]
tests/data/modrdn.out.master.0 [new file with mode: 0644]
tests/data/modrdn.out.master.1 [new file with mode: 0644]
tests/data/modrdn.out.master.2 [new file with mode: 0644]
tests/data/modrdn.out.master.3 [new file with mode: 0644]
tests/data/passwd.ldif
tests/data/search.out.master
tests/data/test-glued.ldif [new file with mode: 0644]
tests/data/test-lang.ldif [new file with mode: 0644]
tests/data/test-ordered.ldif
tests/data/test.ldif
tests/scripts/test003-search
tests/scripts/test004-modify
tests/scripts/test007-replication
tests/scripts/test009-referral
tests/scripts/test011-subtree-repl
tests/scripts/test015-xsearch

diff --git a/CHANGES b/CHANGES
index 69a34ddfaf19359a997016b072fd694ba984f7bf..c5e0a14e5dd74f1559cad13fb5293bed28e2e18b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,21 @@ OpenLDAP 2.1 Change Log
 
 OpenLDAP 2.1.5 Engineering
        Fixed back-ldbm indirect IDL bug (ITS#2039)
+       Fixed -lldap DNS SRV buffer size bug
+       Fixed slapd objectClass subclassing matching
+       Fixed back-bdb lock_id bugs
+       Added ldap tools passfile (-y) support
+       Added slapadd lastmod attribute support
+       Updated back-passwd gecos buffer size bug
+       Updated back-sql
+       Build Environment
+               Add SASL version checks
+               Add IPv6 sockaddr_storage check
+               Add Berkeley DB 4.1 support
+               Updated backend module linking
+       Documentation
+               Added ldapwhoami(1) man page
+               Misc man page updates
 
 OpenLDAP 2.1.4 Release
        Fixed slapd DN normalization (requires DB reload)
index a272fc79e7cf68f47e09df6384421b6bc637d8c3..fb058a9637ab406a25c544eb2c9de5428e817193 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # $OpenLDAP$
-# from OpenLDAP 
+# from OpenLDAP: pkg/ldap/configure.in,v 1.408.2.10 2002/08/22 00:38:21 kurt Exp  
 
 # Copyright 1998-2002 The OpenLDAP Foundation.  All Rights Reserved.
 # 
@@ -2812,7 +2812,6 @@ echo "$ac_t""done" 1>&6
 
 LDAP_LIBS=
 LDIF_LIBS=
-LDBM_LIB=
 LDBM_LIBS=
 LTHREAD_LIBS=
 LUTIL_LIBS=
@@ -2887,7 +2886,7 @@ SLAPD_SLP_LIBS=
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:2891: checking for a BSD compatible install" >&5
+echo "configure:2890: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"\${ac_cv_path_install+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2968,7 +2967,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2972: checking for $ac_word" >&5
+echo "configure:2971: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3020,7 +3019,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3024: checking for $ac_word" >&5
+echo "configure:3023: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3062,7 +3061,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3066: checking for $ac_word" >&5
+echo "configure:3065: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AR+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3112,12 +3111,12 @@ if test "X${PATH_SEPARATOR+set}" != Xset; then
 fi
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:3116: checking for Cygwin environment" >&5
+echo "configure:3115: checking for Cygwin environment" >&5
 if eval "test \"\${ac_cv_cygwin+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3121 "configure"
+#line 3120 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3128,7 +3127,7 @@ int main() {
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:3132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3131: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -3144,19 +3143,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
 CYGWIN=
 test "$ac_cv_cygwin" = yes && CYGWIN=yes
 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:3148: checking for mingw32 environment" >&5
+echo "configure:3147: checking for mingw32 environment" >&5
 if eval "test \"\${ac_cv_mingw32+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3153 "configure"
+#line 3152 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:3160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -3172,19 +3171,19 @@ echo "$ac_t""$ac_cv_mingw32" 1>&6
 MINGW32=
 test "$ac_cv_mingw32" = yes && MINGW32=yes
 echo $ac_n "checking for EMX OS/2 environment""... $ac_c" 1>&6
-echo "configure:3176: checking for EMX OS/2 environment" >&5
+echo "configure:3175: checking for EMX OS/2 environment" >&5
 if eval "test \"\${ac_cv_emxos2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3181 "configure"
+#line 3180 "configure"
 #include "confdefs.h"
 
 int main() {
 return __EMX__;
 ; return 0; }
 EOF
-if { (eval echo configure:3188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3187: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_emxos2=yes
 else
@@ -3200,7 +3199,7 @@ echo "$ac_t""$ac_cv_emxos2" 1>&6
 EMXOS2=
 test "$ac_cv_emxos2" = yes && EMXOS2=yes
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:3204: checking how to run the C preprocessor" >&5
+echo "configure:3203: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -3215,13 +3214,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 3219 "configure"
+#line 3218 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3225: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -3232,13 +3231,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 3236 "configure"
+#line 3235 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3241: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -3249,13 +3248,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 3253 "configure"
+#line 3252 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3258: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -3305,7 +3304,7 @@ fi
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3309: checking for $ac_word" >&5
+echo "configure:3308: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3335,7 +3334,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3339: checking for $ac_word" >&5
+echo "configure:3338: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3386,7 +3385,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3390: checking for $ac_word" >&5
+echo "configure:3389: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3418,7 +3417,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:3422: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
+echo "configure:3421: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -3429,12 +3428,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 3433 "configure"
+#line 3432 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:3438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -3460,12 +3459,12 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:3464: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:3463: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:3469: checking whether we are using GNU C" >&5
+echo "configure:3468: checking whether we are using GNU C" >&5
 if eval "test \"\${ac_cv_prog_gcc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3474,7 +3473,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -3493,7 +3492,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:3497: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:3496: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"\${ac_cv_prog_cc_g+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3536,7 +3535,7 @@ ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
   echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:3540: checking for ld used by GCC" >&5
+echo "configure:3539: checking for ld used by GCC" >&5
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -3566,10 +3565,10 @@ echo "configure:3540: checking for ld used by GCC" >&5
   esac
 elif test "$with_gnu_ld" = yes; then
   echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:3570: checking for GNU ld" >&5
+echo "configure:3569: checking for GNU ld" >&5
 else
   echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:3573: checking for non-GNU ld" >&5
+echo "configure:3572: checking for non-GNU ld" >&5
 fi
 if eval "test \"\${lt_cv_path_LD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3604,7 +3603,7 @@ else
 fi
 test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
 echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:3608: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:3607: checking if the linker ($LD) is GNU ld" >&5
 if eval "test \"\${lt_cv_prog_gnu_ld+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3621,7 +3620,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
-echo "configure:3625: checking for $LD option to reload object files" >&5
+echo "configure:3624: checking for $LD option to reload object files" >&5
 if eval "test \"\${lt_cv_ld_reload_flag+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3633,7 +3632,7 @@ reload_flag=$lt_cv_ld_reload_flag
 test -n "$reload_flag" && reload_flag=" $reload_flag"
 
 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:3637: checking for BSD-compatible nm" >&5
+echo "configure:3636: checking for BSD-compatible nm" >&5
 if eval "test \"\${lt_cv_path_NM+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3671,7 +3670,7 @@ NM="$lt_cv_path_NM"
 echo "$ac_t""$NM" 1>&6
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:3675: checking whether ln -s works" >&5
+echo "configure:3674: checking whether ln -s works" >&5
 if eval "test \"\${ac_cv_prog_LN_S+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3692,7 +3691,7 @@ else
 fi
 
 echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
-echo "configure:3696: checking how to recognise dependant libraries" >&5
+echo "configure:3695: checking how to recognise dependant libraries" >&5
 if eval "test \"\${lt_cv_deplibs_check_method+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3875,13 +3874,13 @@ file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 
 echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:3879: checking for object suffix" >&5
+echo "configure:3878: checking for object suffix" >&5
 if eval "test \"\${ac_cv_objext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   rm -f conftest*
 echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:3885: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3884: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   for ac_file in conftest.*; do
     case $ac_file in
     *.c) ;;
@@ -3902,7 +3901,7 @@ ac_objext=$ac_cv_objext
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3906: checking for executable suffix" >&5
+echo "configure:3905: checking for executable suffix" >&5
 if eval "test \"\${ac_cv_exeext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3912,7 +3911,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:3916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:3915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.C | *.o | *.obj | *.xcoff) ;;
@@ -3943,7 +3942,7 @@ fi
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
 echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6
-echo "configure:3947: checking command to parse $NM output" >&5
+echo "configure:3946: checking command to parse $NM output" >&5
 if eval "test \"\${lt_cv_sys_global_symbol_pipe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4023,10 +4022,10 @@ void nm_test_func(){}
 int main(){nm_test_var='a';nm_test_func();return(0);}
 EOF
 
-  if { (eval echo configure:4027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  if { (eval echo configure:4026: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo configure:4030: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
+    if { (eval echo configure:4029: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
        mv -f "$nlist"T "$nlist"
@@ -4077,7 +4076,7 @@ EOF
          save_CFLAGS="$CFLAGS"
          LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$no_builtin_flag"
-         if { (eval echo configure:4081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+         if { (eval echo configure:4080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
            pipe_works=yes
          fi
          LIBS="$save_LIBS"
@@ -4126,17 +4125,17 @@ for ac_hdr in dlfcn.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4130: checking for $ac_hdr" >&5
+echo "configure:4129: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4135 "configure"
+#line 4134 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4140: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4171,7 +4170,7 @@ case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
     echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6
-echo "configure:4175: checking for ${ac_tool_prefix}file" >&5
+echo "configure:4174: checking for ${ac_tool_prefix}file" >&5
 if eval "test \"\${lt_cv_path_MAGIC_CMD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4233,7 +4232,7 @@ fi
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
     echo $ac_n "checking for file""... $ac_c" 1>&6
-echo "configure:4237: checking for file" >&5
+echo "configure:4236: checking for file" >&5
 if eval "test \"\${lt_cv_path_MAGIC_CMD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4304,7 +4303,7 @@ esac
 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4308: checking for $ac_word" >&5
+echo "configure:4307: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4336,7 +4335,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4340: checking for $ac_word" >&5
+echo "configure:4339: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4371,7 +4370,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4375: checking for $ac_word" >&5
+echo "configure:4374: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4403,7 +4402,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4407: checking for $ac_word" >&5
+echo "configure:4406: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4452,8 +4451,8 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
 case $host in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4456 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:4457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  echo '#line 4455 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:4456: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     case `/usr/bin/file conftest.$ac_objext` in
     *32-bit*)
       LD="${LD-ld} -32"
@@ -4474,7 +4473,7 @@ case $host in
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
   echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:4478: checking whether the C compiler needs -belf" >&5
+echo "configure:4477: checking whether the C compiler needs -belf" >&5
 if eval "test \"\${lt_cv_cc_needs_belf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4487,14 +4486,14 @@ ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$a
 cross_compiling=$ac_cv_prog_cc_cross
 
      cat > conftest.$ac_ext <<EOF
-#line 4491 "configure"
+#line 4490 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_cc_needs_belf=yes
 else
@@ -4524,7 +4523,7 @@ echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6
   # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
 set dummy ${ac_tool_prefix}dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4528: checking for $ac_word" >&5
+echo "configure:4527: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4556,7 +4555,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "dlltool", so it can be a program name with args.
 set dummy dlltool; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4560: checking for $ac_word" >&5
+echo "configure:4559: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4591,7 +4590,7 @@ fi
   # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
 set dummy ${ac_tool_prefix}as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4595: checking for $ac_word" >&5
+echo "configure:4594: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4623,7 +4622,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "as", so it can be a program name with args.
 set dummy as; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4627: checking for $ac_word" >&5
+echo "configure:4626: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4658,7 +4657,7 @@ fi
   # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
 set dummy ${ac_tool_prefix}objdump; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4662: checking for $ac_word" >&5
+echo "configure:4661: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4690,7 +4689,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "objdump", so it can be a program name with args.
 set dummy objdump; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4694: checking for $ac_word" >&5
+echo "configure:4693: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4726,12 +4725,12 @@ fi
   # recent cygwin and mingw systems supply a stub DllMain which the user
   # can override, but on older systems we have to supply one
   echo $ac_n "checking if libtool should supply DllMain function""... $ac_c" 1>&6
-echo "configure:4730: checking if libtool should supply DllMain function" >&5
+echo "configure:4729: checking if libtool should supply DllMain function" >&5
 if eval "test \"\${lt_cv_need_dllmain+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4735 "configure"
+#line 4734 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4739,7 +4738,7 @@ extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
       DllMain (0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:4743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_need_dllmain=no
 else
@@ -4760,19 +4759,19 @@ echo "$ac_t""$lt_cv_need_dllmain" 1>&6
     SAVE_CFLAGS="$CFLAGS"
     CFLAGS="$CFLAGS -mdll"
     echo $ac_n "checking how to link DLLs""... $ac_c" 1>&6
-echo "configure:4764: checking how to link DLLs" >&5
+echo "configure:4763: checking how to link DLLs" >&5
 if eval "test \"\${lt_cv_cc_dll_switch+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4769 "configure"
+#line 4768 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_cc_dll_switch=-mdll
 else
@@ -4886,7 +4885,7 @@ set dummy $CC
 compiler="$2"
 
 echo $ac_n "checking for objdir""... $ac_c" 1>&6
-echo "configure:4890: checking for objdir" >&5
+echo "configure:4889: checking for objdir" >&5
 rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
 if test -d .libs; then
@@ -4913,7 +4912,7 @@ test -z "$pic_mode" && pic_mode=default
 # in isolation, and that seeing it set (from the cache) indicates that
 # the associated values are set (in the cache) correctly too.
 echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6
-echo "configure:4917: checking for $compiler option to produce PIC" >&5
+echo "configure:4916: checking for $compiler option to produce PIC" >&5
 if eval "test \"\${lt_cv_prog_cc_pic+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5065,21 +5064,21 @@ else
 
   # Check to make sure the pic_flag actually works.
   echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6
-echo "configure:5069: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+echo "configure:5068: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
   if eval "test \"\${lt_cv_prog_cc_pic_works+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
       save_CFLAGS="$CFLAGS"
     CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC"
     cat > conftest.$ac_ext <<EOF
-#line 5076 "configure"
+#line 5075 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
         case $host_os in
       hpux9* | hpux10* | hpux11*)
@@ -5131,7 +5130,7 @@ if test -n "$lt_cv_prog_cc_shlib"; then
 fi
 
 echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6
-echo "configure:5135: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+echo "configure:5134: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
 if eval "test \"\${lt_cv_prog_cc_static_works+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5139,14 +5138,14 @@ else
   save_LDFLAGS="$LDFLAGS"
   LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
   cat > conftest.$ac_ext <<EOF
-#line 5143 "configure"
+#line 5142 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_prog_cc_static_works=yes
 else
@@ -5173,7 +5172,7 @@ can_build_shared="$lt_cv_prog_cc_can_build_shared"
 
 # Check to see if options -o and -c are simultaneously supported by compiler
 echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6
-echo "configure:5177: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo "configure:5176: checking if $compiler supports -c -o file.$ac_objext" >&5
 if eval "test \"\${lt_cv_compiler_c_o+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5192,7 +5191,7 @@ chmod -w .
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
 compiler_c_o=no
-if { (eval echo configure:5196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+if { (eval echo configure:5195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
   # The compiler can only warn and ignore the option if not recognized
   # So say no if there are warnings
   if test -s out/conftest.err; then
@@ -5221,7 +5220,7 @@ echo "$ac_t""$compiler_c_o" 1>&6
 if test x"$compiler_c_o" = x"yes"; then
   # Check to see if we can write to a .lo
   echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6
-echo "configure:5225: checking if $compiler supports -c -o file.lo" >&5
+echo "configure:5224: checking if $compiler supports -c -o file.lo" >&5
   if eval "test \"\${lt_cv_compiler_o_lo+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5232,14 +5231,14 @@ else
   save_objext="$ac_objext"
   ac_objext=lo
   cat > conftest.$ac_ext <<EOF
-#line 5236 "configure"
+#line 5235 "configure"
 #include "confdefs.h"
 
 int main() {
 int some_variable = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5242: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
       # The compiler can only warn and ignore the option if not recognized
     # So say no if there are warnings
@@ -5270,7 +5269,7 @@ hard_links="nottested"
 if test "$compiler_c_o" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
   echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6
-echo "configure:5274: checking if we can lock with hard links" >&5
+echo "configure:5273: checking if we can lock with hard links" >&5
   hard_links=yes
   $rm conftest*
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
@@ -5289,20 +5288,20 @@ fi
 if test "$GCC" = yes; then
   # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
   echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6
-echo "configure:5293: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo "configure:5292: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
   echo "int some_variable = 0;" > conftest.$ac_ext
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
   compiler_rtti_exceptions=no
   cat > conftest.$ac_ext <<EOF
-#line 5299 "configure"
+#line 5298 "configure"
 #include "confdefs.h"
 
 int main() {
 int some_variable = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
       # The compiler can only warn and ignore the option if not recognized
     # So say no if there are warnings
@@ -5329,7 +5328,7 @@ fi
 
 # See if the linker supports building shared libraries.
 echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6
-echo "configure:5333: checking whether the linker ($LD) supports shared libraries" >&5
+echo "configure:5332: checking whether the linker ($LD) supports shared libraries" >&5
 
 allow_undefined_flag=
 no_undefined_flag=
@@ -6013,7 +6012,7 @@ test "$ld_shlibs" = no && can_build_shared=no
 
 # Check hardcoding attributes.
 echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6
-echo "configure:6017: checking how to hardcode library paths into programs" >&5
+echo "configure:6016: checking how to hardcode library paths into programs" >&5
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" || \
    test -n "$runpath_var"; then
@@ -6041,7 +6040,7 @@ echo "$ac_t""$hardcode_action" 1>&6
 striplib=
 old_striplib=
 echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6
-echo "configure:6045: checking whether stripping libraries is possible" >&5
+echo "configure:6044: checking whether stripping libraries is possible" >&5
 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
   test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
   test -z "$striplib" && striplib="$STRIP --strip-unneeded"
@@ -6055,7 +6054,7 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 # PORTME Fill in your ld.so characteristics
 echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6
-echo "configure:6059: checking dynamic linker characteristics" >&5
+echo "configure:6058: checking dynamic linker characteristics" >&5
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
@@ -6452,11 +6451,11 @@ test "$dynamic_linker" = no && can_build_shared=no
 
 # Report the final consequences.
 echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6
-echo "configure:6456: checking if libtool supports shared libraries" >&5
+echo "configure:6455: checking if libtool supports shared libraries" >&5
 echo "$ac_t""$can_build_shared" 1>&6
 
 echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6
-echo "configure:6460: checking whether to build shared libraries" >&5
+echo "configure:6459: checking whether to build shared libraries" >&5
 test "$can_build_shared" = "no" && enable_shared=no
 
 # On AIX, shared libraries and static libraries use the same namespace, and
@@ -6479,7 +6478,7 @@ esac
 echo "$ac_t""$enable_shared" 1>&6
 
 echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
-echo "configure:6483: checking whether to build static libraries" >&5
+echo "configure:6482: checking whether to build static libraries" >&5
 # Make sure either enable_shared or enable_static is yes.
 test "$enable_shared" = yes || enable_static=yes
 echo "$ac_t""$enable_static" 1>&6
@@ -6520,12 +6519,12 @@ else
 
   *)
     echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "configure:6524: checking for shl_load" >&5
+echo "configure:6523: checking for shl_load" >&5
 if eval "test \"\${ac_cv_func_shl_load+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6529 "configure"
+#line 6528 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shl_load(); below.  */
@@ -6549,7 +6548,7 @@ f = shl_load;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shl_load=yes"
 else
@@ -6567,7 +6566,7 @@ if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:6571: checking for shl_load in -ldld" >&5
+echo "configure:6570: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6575,7 +6574,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6579 "configure"
+#line 6578 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6586,7 +6585,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:6590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6605,12 +6604,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "configure:6609: checking for dlopen" >&5
+echo "configure:6608: checking for dlopen" >&5
 if eval "test \"\${ac_cv_func_dlopen+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6614 "configure"
+#line 6613 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dlopen(); below.  */
@@ -6634,7 +6633,7 @@ f = dlopen;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6638: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dlopen=yes"
 else
@@ -6652,7 +6651,7 @@ if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:6656: checking for dlopen in -ldl" >&5
+echo "configure:6655: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6660,7 +6659,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6664 "configure"
+#line 6663 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6671,7 +6670,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:6675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6690,7 +6689,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
-echo "configure:6694: checking for dlopen in -lsvld" >&5
+echo "configure:6693: checking for dlopen in -lsvld" >&5
 ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6698,7 +6697,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsvld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6702 "configure"
+#line 6701 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6709,7 +6708,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:6713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6728,7 +6727,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "configure:6732: checking for dld_link in -ldld" >&5
+echo "configure:6731: checking for dld_link in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6736,7 +6735,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6740 "configure"
+#line 6739 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6747,7 +6746,7 @@ int main() {
 dld_link()
 ; return 0; }
 EOF
-if { (eval echo configure:6751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6803,7 +6802,7 @@ fi
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "configure:6807: checking whether a program can dlopen itself" >&5
+echo "configure:6806: checking whether a program can dlopen itself" >&5
 if eval "test \"\${lt_cv_dlopen_self+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6813,7 +6812,7 @@ else
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 6817 "configure"
+#line 6816 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -6874,7 +6873,7 @@ int main ()
     exit (status);
 }
 EOF
-  if { (eval echo configure:6878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  if { (eval echo configure:6877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -6897,7 +6896,7 @@ echo "$ac_t""$lt_cv_dlopen_self" 1>&6
     if test "x$lt_cv_dlopen_self" = xyes; then
       LDFLAGS="$LDFLAGS $link_static_flag"
       echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "configure:6901: checking whether a statically linked program can dlopen itself" >&5
+echo "configure:6900: checking whether a statically linked program can dlopen itself" >&5
 if eval "test \"\${lt_cv_dlopen_self_static+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -6907,7 +6906,7 @@ else
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 6911 "configure"
+#line 6910 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -6968,7 +6967,7 @@ int main ()
     exit (status);
 }
 EOF
-  if { (eval echo configure:6972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  if { (eval echo configure:6971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -7017,14 +7016,14 @@ if test "$enable_shared" = yes && test "$GCC" = yes; then
     # systems, -lgcc has to come before -lc. If gcc already passes -lc
     # to ld, don't add -lc before -lgcc.
     echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6
-echo "configure:7021: checking whether -lc should be explicitly linked in" >&5
+echo "configure:7020: checking whether -lc should be explicitly linked in" >&5
     if eval "test \"\${lt_cv_archive_cmds_need_lc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   $rm conftest*
     echo 'static int dummy;' > conftest.$ac_ext
 
-    if { (eval echo configure:7028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    if { (eval echo configure:7027: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
       soname=conftest
       lib=conftest
       libobjs=conftest.$ac_objext
@@ -7037,7 +7036,7 @@ else
       libname=conftest
       save_allow_undefined_flag=$allow_undefined_flag
       allow_undefined_flag=
-      if { (eval echo configure:7041: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
+      if { (eval echo configure:7040: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; }
       then
        lt_cv_archive_cmds_need_lc=no
       else
@@ -7624,7 +7623,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7628: checking for $ac_word" >&5
+echo "configure:7627: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AWK+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7655,7 +7654,7 @@ done
 
 # test for ln hardlink support
 echo $ac_n "checking whether ln works""... $ac_c" 1>&6
-echo "configure:7659: checking whether ln works" >&5
+echo "configure:7658: checking whether ln works" >&5
 if eval "test \"\${ol_cv_prog_LN_H+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7678,7 +7677,7 @@ else
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:7682: checking whether ln -s works" >&5
+echo "configure:7681: checking whether ln -s works" >&5
 if eval "test \"\${ac_cv_prog_LN_S+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7702,7 +7701,7 @@ fi
 # Extract the first word of "sendmail", so it can be a program name with args.
 set dummy sendmail; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7706: checking for $ac_word" >&5
+echo "configure:7705: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_SENDMAIL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7738,7 +7737,7 @@ fi
 # Extract the first word of "vi", so it can be a program name with args.
 set dummy vi; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7742: checking for $ac_word" >&5
+echo "configure:7741: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_EDITOR+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7777,7 +7776,7 @@ if test $ol_enable_perl != no ; then
        # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7781: checking for $ac_word" >&5
+echo "configure:7780: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_PERLBIN+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7828,7 +7827,7 @@ fi
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:7832: checking how to run the C preprocessor" >&5
+echo "configure:7831: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -7843,13 +7842,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 7847 "configure"
+#line 7846 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7853: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -7860,13 +7859,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 7864 "configure"
+#line 7863 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7870: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7869: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -7877,13 +7876,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 7881 "configure"
+#line 7880 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7886: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -7922,12 +7921,12 @@ fi
 
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:7926: checking for Cygwin environment" >&5
+echo "configure:7925: checking for Cygwin environment" >&5
 if eval "test \"\${ac_cv_cygwin+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7931 "configure"
+#line 7930 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -7938,7 +7937,7 @@ int main() {
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:7942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -7954,19 +7953,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
 CYGWIN=
 test "$ac_cv_cygwin" = yes && CYGWIN=yes
 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:7958: checking for mingw32 environment" >&5
+echo "configure:7957: checking for mingw32 environment" >&5
 if eval "test \"\${ac_cv_mingw32+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7963 "configure"
+#line 7962 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:7970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -7985,7 +7984,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:7989: checking for executable suffix" >&5
+echo "configure:7988: checking for executable suffix" >&5
 if eval "test \"\${ac_cv_exeext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7995,7 +7994,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:7999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:7998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.C | *.o | *.obj | *.xcoff) ;;
@@ -8016,13 +8015,13 @@ echo "$ac_t""${ac_cv_exeext}" 1>&6
 ac_exeext=$EXEEXT
 
 echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:8020: checking for object suffix" >&5
+echo "configure:8019: checking for object suffix" >&5
 if eval "test \"\${ac_cv_objext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   rm -f conftest*
 echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:8026: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   for ac_file in conftest.*; do
     case $ac_file in
     *.c) ;;
@@ -8046,7 +8045,7 @@ EOF
 
 
 echo $ac_n "checking for be_app in -lbe""... $ac_c" 1>&6
-echo "configure:8050: checking for be_app in -lbe" >&5
+echo "configure:8049: checking for be_app in -lbe" >&5
 ac_lib_var=`echo be'_'be_app | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8054,7 +8053,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbe -lroot -lnet $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8058 "configure"
+#line 8057 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8065,7 +8064,7 @@ int main() {
 be_app()
 ; return 0; }
 EOF
-if { (eval echo configure:8069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8091,7 +8090,7 @@ fi
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:8095: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:8094: checking for ${CC-cc} option to accept ANSI C" >&5
 if eval "test \"\${am_cv_prog_cc_stdc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8108,7 +8107,7 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
 do
   CC="$ac_save_CC $ac_arg"
   cat > conftest.$ac_ext <<EOF
-#line 8112 "configure"
+#line 8111 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -8145,7 +8144,7 @@ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
 
 ; return 0; }
 EOF
-if { (eval echo configure:8149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8148: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_prog_cc_stdc="$ac_arg"; break
 else
@@ -8179,7 +8178,7 @@ if test -z "${MKDEP}"; then
        OL_MKDEP="${CC-cc}"
        if test -z "${MKDEP_FLAGS}"; then
                echo $ac_n "checking for ${OL_MKDEP} depend flag""... $ac_c" 1>&6
-echo "configure:8183: checking for ${OL_MKDEP} depend flag" >&5
+echo "configure:8182: checking for ${OL_MKDEP} depend flag" >&5
 if eval "test \"\${ol_cv_mkdep+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8189,7 +8188,7 @@ else
                                cat > conftest.c <<EOF
  noCode;
 EOF
-                               if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+                               if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
                                        | egrep '^conftest\.'"${ac_objext}" >/dev/null 2>&1
                                then
                                        if test ! -f conftest."${ac_object}" ; then
@@ -8222,7 +8221,7 @@ if test "${ol_cv_mkdep}" = no ; then
 fi
 
 echo $ac_n "checking for afopen in -ls""... $ac_c" 1>&6
-echo "configure:8226: checking for afopen in -ls" >&5
+echo "configure:8225: checking for afopen in -ls" >&5
 ac_lib_var=`echo s'_'afopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8230,7 +8229,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ls  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8234 "configure"
+#line 8233 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8241,7 +8240,7 @@ int main() {
 afopen()
 ; return 0; }
 EOF
-if { (eval echo configure:8245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8275,17 +8274,17 @@ if test $ol_enable_modules != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8279: checking for $ac_hdr" >&5
+echo "configure:8278: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8284 "configure"
+#line 8283 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8289: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8317,7 +8316,7 @@ done
        fi
 
        echo $ac_n "checking for lt_dlinit in -lltdl""... $ac_c" 1>&6
-echo "configure:8321: checking for lt_dlinit in -lltdl" >&5
+echo "configure:8320: checking for lt_dlinit in -lltdl" >&5
 ac_lib_var=`echo ltdl'_'lt_dlinit | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8325,7 +8324,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lltdl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8329 "configure"
+#line 8328 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8336,7 +8335,7 @@ int main() {
 lt_dlinit()
 ; return 0; }
 EOF
-if { (eval echo configure:8340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8339: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8383,13 +8382,13 @@ fi
 
 # test for EBCDIC
 echo $ac_n "checking for EBCDIC""... $ac_c" 1>&6
-echo "configure:8387: checking for EBCDIC" >&5
+echo "configure:8386: checking for EBCDIC" >&5
 if eval "test \"\${ol_cv_cpp_ebcdic+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 8393 "configure"
+#line 8392 "configure"
 #include "confdefs.h"
 
 #if !('M' == 0xd4)
@@ -8398,7 +8397,7 @@ else
 
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8402: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8401: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8422,12 +8421,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:8426: checking for ANSI C header files" >&5
+echo "configure:8425: checking for ANSI C header files" >&5
 if eval "test \"\${ol_cv_header_stdc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8431 "configure"
+#line 8430 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -8435,7 +8434,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8452,7 +8451,7 @@ rm -f conftest*
 if test $ol_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 8456 "configure"
+#line 8455 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -8470,7 +8469,7 @@ fi
 if test $ol_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 8474 "configure"
+#line 8473 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -8491,7 +8490,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 8495 "configure"
+#line 8494 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #ifndef HAVE_EBCDIC
@@ -8509,7 +8508,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:8513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -8543,12 +8542,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:8547: checking for $ac_hdr that defines DIR" >&5
+echo "configure:8546: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"\${ac_cv_header_dirent_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8552 "configure"
+#line 8551 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -8556,7 +8555,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:8560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -8581,7 +8580,7 @@ done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:8585: checking for opendir in -ldir" >&5
+echo "configure:8584: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8589,7 +8588,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8593 "configure"
+#line 8592 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8600,7 +8599,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:8604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8622,7 +8621,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:8626: checking for opendir in -lx" >&5
+echo "configure:8625: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8630,7 +8629,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8634 "configure"
+#line 8633 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8641,7 +8640,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:8645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8664,12 +8663,12 @@ fi
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:8668: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:8667: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"\${ac_cv_header_sys_wait_h+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8673 "configure"
+#line 8672 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -8685,7 +8684,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:8689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -8706,12 +8705,12 @@ EOF
 fi
 
 echo $ac_n "checking POSIX termios""... $ac_c" 1>&6
-echo "configure:8710: checking POSIX termios" >&5
+echo "configure:8709: checking POSIX termios" >&5
 if eval "test \"\${am_cv_sys_posix_termios+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8715 "configure"
+#line 8714 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <unistd.h>
@@ -8721,7 +8720,7 @@ int main() {
    tcgetattr(0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:8725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   am_cv_sys_posix_termios=yes
 else
@@ -8737,7 +8736,7 @@ echo "$ac_t""$am_cv_sys_posix_termios" 1>&6
 
 
  echo $ac_n "checking whether use of TIOCGWINSZ requires sys/ioctl.h""... $ac_c" 1>&6
-echo "configure:8741: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
+echo "configure:8740: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
 if eval "test \"\${am_cv_sys_tiocgwinsz_needs_sys_ioctl_h+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8746,7 +8745,7 @@ else
   gwinsz_in_termios_h=no
   if test $am_cv_sys_posix_termios = yes; then
     cat > conftest.$ac_ext <<EOF
-#line 8750 "configure"
+#line 8749 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #     include <termios.h>
@@ -8766,7 +8765,7 @@ rm -f conftest*
 
   if test $gwinsz_in_termios_h = no; then
     cat > conftest.$ac_ext <<EOF
-#line 8770 "configure"
+#line 8769 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #     include <sys/ioctl.h>
@@ -8850,17 +8849,17 @@ for ac_hdr in \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8854: checking for $ac_hdr" >&5
+echo "configure:8853: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8859 "configure"
+#line 8858 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8864: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8890,12 +8889,12 @@ done
 
 
 echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "configure:8894: checking for dlopen" >&5
+echo "configure:8893: checking for dlopen" >&5
 if eval "test \"\${ac_cv_func_dlopen+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8899 "configure"
+#line 8898 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dlopen(); below.  */
@@ -8919,7 +8918,7 @@ f = dlopen;
 
 ; return 0; }
 EOF
-if { (eval echo configure:8923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dlopen=yes"
 else
@@ -8937,7 +8936,7 @@ if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:8941: checking for dlopen in -ldl" >&5
+echo "configure:8940: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8945,7 +8944,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8949 "configure"
+#line 8948 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8956,7 +8955,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:8960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8987,7 +8986,7 @@ fi
 
 
 echo $ac_n "checking for sigset in -lV3""... $ac_c" 1>&6
-echo "configure:8991: checking for sigset in -lV3" >&5
+echo "configure:8990: checking for sigset in -lV3" >&5
 ac_lib_var=`echo V3'_'sigset | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8995,7 +8994,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lV3  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8999 "configure"
+#line 8998 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9006,7 +9005,7 @@ int main() {
 sigset()
 ; return 0; }
 EOF
-if { (eval echo configure:9010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9035,12 +9034,12 @@ fi
 
 
 echo $ac_n "checking for winsock""... $ac_c" 1>&6
-echo "configure:9039: checking for winsock" >&5
+echo "configure:9038: checking for winsock" >&5
 save_LIBS="$LIBS"
 for curlib in ws2_32 wsock32; do
        LIBS="$LIBS -l$curlib"
        cat > conftest.$ac_ext <<EOF
-#line 9044 "configure"
+#line 9043 "configure"
 #include "confdefs.h"
 
                        char socket@12();
@@ -9057,7 +9056,7 @@ int main() {
                        
 ; return 0; }
 EOF
-if { (eval echo configure:9061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   have_winsock=yes
 else
@@ -9092,12 +9091,12 @@ echo "$ac_t""$have_winsock" 1>&6
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:9096: checking for socket" >&5
+echo "configure:9095: checking for socket" >&5
 if eval "test \"\${ac_cv_func_socket+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9101 "configure"
+#line 9100 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -9121,7 +9120,7 @@ f = socket;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -9140,7 +9139,7 @@ else
   echo "$ac_t""no" 1>&6
        
        echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:9144: checking for main in -lsocket" >&5
+echo "configure:9143: checking for main in -lsocket" >&5
 ac_lib_var=`echo socket'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9148,14 +9147,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9152 "configure"
+#line 9151 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9183,7 +9182,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnet""... $ac_c" 1>&6
-echo "configure:9187: checking for main in -lnet" >&5
+echo "configure:9186: checking for main in -lnet" >&5
 ac_lib_var=`echo net'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9191,14 +9190,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9195 "configure"
+#line 9194 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9226,7 +9225,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnsl_s""... $ac_c" 1>&6
-echo "configure:9230: checking for main in -lnsl_s" >&5
+echo "configure:9229: checking for main in -lnsl_s" >&5
 ac_lib_var=`echo nsl_s'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9234,14 +9233,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9238 "configure"
+#line 9237 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9269,7 +9268,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:9273: checking for main in -lnsl" >&5
+echo "configure:9272: checking for main in -lnsl" >&5
 ac_lib_var=`echo nsl'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9277,14 +9276,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9281 "configure"
+#line 9280 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9312,7 +9311,7 @@ else
 fi
 
        echo $ac_n "checking for socket in -linet""... $ac_c" 1>&6
-echo "configure:9316: checking for socket in -linet" >&5
+echo "configure:9315: checking for socket in -linet" >&5
 ac_lib_var=`echo inet'_'socket | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9320,7 +9319,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9324 "configure"
+#line 9323 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9331,7 +9330,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:9335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9359,7 +9358,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lgen""... $ac_c" 1>&6
-echo "configure:9363: checking for main in -lgen" >&5
+echo "configure:9362: checking for main in -lgen" >&5
 ac_lib_var=`echo gen'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9367,14 +9366,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgen  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9371 "configure"
+#line 9370 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9406,12 +9405,12 @@ fi
 
 
 echo $ac_n "checking for select""... $ac_c" 1>&6
-echo "configure:9410: checking for select" >&5
+echo "configure:9409: checking for select" >&5
 if eval "test \"\${ac_cv_func_select+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9415 "configure"
+#line 9414 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char select(); below.  */
@@ -9435,7 +9434,7 @@ f = select;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_select=yes"
 else
@@ -9458,7 +9457,7 @@ fi
 
 if test "${ac_cv_header_winsock_h}" != yes; then
                                echo $ac_n "checking types of arguments for select()""... $ac_c" 1>&6
-echo "configure:9462: checking types of arguments for select()" >&5
+echo "configure:9461: checking types of arguments for select()" >&5
  if eval "test \"\${ac_cv_func_select_arg234+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9472,7 +9471,7 @@ else
      for ac_cv_func_select_arg1 in 'int' 'size_t' 'unsigned long' 'unsigned'; do
       for ac_cv_func_select_arg5 in 'struct timeval *' 'const struct timeval *'; do
        cat > conftest.$ac_ext <<EOF
-#line 9476 "configure"
+#line 9475 "configure"
 #include "confdefs.h"
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -9491,7 +9490,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:9495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
           ac_not_found=no ; break 3
 else
@@ -9536,17 +9535,17 @@ for ac_hdr in regex.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9540: checking for $ac_hdr" >&5
+echo "configure:9539: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9545 "configure"
+#line 9544 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9549: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9577,14 +9576,14 @@ if test "$ac_cv_header_regex_h" != yes ; then
 fi
 
 echo $ac_n "checking for library containing regfree""... $ac_c" 1>&6
-echo "configure:9581: checking for library containing regfree" >&5
+echo "configure:9580: checking for library containing regfree" >&5
 if eval "test \"\${ac_cv_search_regfree+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_func_search_save_LIBS="$LIBS"
 ac_cv_search_regfree="no"
 cat > conftest.$ac_ext <<EOF
-#line 9588 "configure"
+#line 9587 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9595,7 +9594,7 @@ int main() {
 regfree()
 ; return 0; }
 EOF
-if { (eval echo configure:9599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_regfree="none required"
 else
@@ -9606,7 +9605,7 @@ rm -f conftest*
 test "$ac_cv_search_regfree" = "no" && for ac_lib in regex gnuregex; do
 LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9610 "configure"
+#line 9609 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9617,7 +9616,7 @@ int main() {
 regfree()
 ; return 0; }
 EOF
-if { (eval echo configure:9621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_regfree="-l$ac_lib"
 break
@@ -9640,7 +9639,7 @@ fi
 
 
 echo $ac_n "checking for compatible POSIX regex""... $ac_c" 1>&6
-echo "configure:9644: checking for compatible POSIX regex" >&5
+echo "configure:9643: checking for compatible POSIX regex" >&5
 if eval "test \"\${ol_cv_c_posix_regex+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9649,7 +9648,7 @@ else
   ol_cv_c_posix_regex=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9653 "configure"
+#line 9652 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9675,7 +9674,7 @@ main()
        return rc;
 }
 EOF
-if { (eval echo configure:9679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_c_posix_regex=yes
 else
@@ -9701,17 +9700,17 @@ for ac_hdr in sys/uuid.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9705: checking for $ac_hdr" >&5
+echo "configure:9704: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9710 "configure"
+#line 9709 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9741,14 +9740,14 @@ if test $ac_cv_header_sys_uuid_h = yes ; then
        save_LIBS="$LIBS"
        
 echo $ac_n "checking for library containing uuid_to_str""... $ac_c" 1>&6
-echo "configure:9745: checking for library containing uuid_to_str" >&5
+echo "configure:9744: checking for library containing uuid_to_str" >&5
 if eval "test \"\${ac_cv_search_uuid_to_str+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_func_search_save_LIBS="$LIBS"
 ac_cv_search_uuid_to_str="no"
 cat > conftest.$ac_ext <<EOF
-#line 9752 "configure"
+#line 9751 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9759,7 +9758,7 @@ int main() {
 uuid_to_str()
 ; return 0; }
 EOF
-if { (eval echo configure:9763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_uuid_to_str="none required"
 else
@@ -9770,7 +9769,7 @@ rm -f conftest*
 test "$ac_cv_search_uuid_to_str" = "no" && for ac_lib in uuid; do
 LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9774 "configure"
+#line 9773 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9781,7 +9780,7 @@ int main() {
 uuid_to_str()
 ; return 0; }
 EOF
-if { (eval echo configure:9785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_search_uuid_to_str="-l$ac_lib"
 break
@@ -9816,11 +9815,11 @@ fi
 
 if test $have_uuid = no ; then
        echo $ac_n "checking to see if -lrpcrt4 is needed for win32 UUID support""... $ac_c" 1>&6
-echo "configure:9820: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5
+echo "configure:9819: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5
        save_LIBS="$LIBS"
        LIBS="$LIBS -lrpcrt4"
        cat > conftest.$ac_ext <<EOF
-#line 9824 "configure"
+#line 9823 "configure"
 #include "confdefs.h"
 
                char UuidCreate@4();
@@ -9833,7 +9832,7 @@ int main() {
                
 ; return 0; }
 EOF
-if { (eval echo configure:9837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   need_rpcrt=yes
 else
@@ -9852,12 +9851,12 @@ fi
 
 ol_link_dnssrv=no
 echo $ac_n "checking for res_query""... $ac_c" 1>&6
-echo "configure:9856: checking for res_query" >&5
+echo "configure:9855: checking for res_query" >&5
 if eval "test \"\${ac_cv_func_res_query+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9861 "configure"
+#line 9860 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char res_query(); below.  */
@@ -9881,7 +9880,7 @@ f = res_query;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_res_query=yes"
 else
@@ -9902,12 +9901,12 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query""... $ac_c" 1>&6
-echo "configure:9906: checking for __res_query" >&5
+echo "configure:9905: checking for __res_query" >&5
 if eval "test \"\${ac_cv_func___res_query+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 9911 "configure"
+#line 9910 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char __res_query(); below.  */
@@ -9931,7 +9930,7 @@ f = __res_query;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func___res_query=yes"
 else
@@ -9955,7 +9954,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for res_query in -lbind""... $ac_c" 1>&6
-echo "configure:9959: checking for res_query in -lbind" >&5
+echo "configure:9958: checking for res_query in -lbind" >&5
 ac_lib_var=`echo bind'_'res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -9963,7 +9962,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9967 "configure"
+#line 9966 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9974,7 +9973,7 @@ int main() {
 res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:9978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10006,7 +10005,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query in -lbind""... $ac_c" 1>&6
-echo "configure:10010: checking for __res_query in -lbind" >&5
+echo "configure:10009: checking for __res_query in -lbind" >&5
 ac_lib_var=`echo bind'_'__res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10014,7 +10013,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10018 "configure"
+#line 10017 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10025,7 +10024,7 @@ int main() {
 __res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10057,7 +10056,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for res_query in -lresolv""... $ac_c" 1>&6
-echo "configure:10061: checking for res_query in -lresolv" >&5
+echo "configure:10060: checking for res_query in -lresolv" >&5
 ac_lib_var=`echo resolv'_'res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10065,7 +10064,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10069 "configure"
+#line 10068 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10076,7 +10075,7 @@ int main() {
 res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10108,7 +10107,7 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query in -lresolv""... $ac_c" 1>&6
-echo "configure:10112: checking for __res_query in -lresolv" >&5
+echo "configure:10111: checking for __res_query in -lresolv" >&5
 ac_lib_var=`echo resolv'_'__res_query | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10116,7 +10115,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10120 "configure"
+#line 10119 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10127,7 +10126,7 @@ int main() {
 __res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 for ac_func in getaddrinfo gai_strerror inet_ntop 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10179: checking for $ac_func" >&5
+echo "configure:10178: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10184 "configure"
+#line 10183 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10204,7 +10203,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:10208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -10236,13 +10235,13 @@ if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
        fi
 elif test $ol_enable_ipv6 != no ; then
        echo $ac_n "checking INET6_ADDRSTRLEN""... $ac_c" 1>&6
-echo "configure:10240: checking INET6_ADDRSTRLEN" >&5
+echo "configure:10239: checking INET6_ADDRSTRLEN" >&5
 if eval "test \"\${ol_cv_inet6_addrstrlen+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 10246 "configure"
+#line 10245 "configure"
 #include "confdefs.h"
 
 #                      include <netinet/in.h>
 
 echo "$ac_t""$ol_cv_inet6_addrstrlen" 1>&6
 
-       if test $ol_cv_inet6_addrstrlen = yes ; then
+
+       echo $ac_n "checking struct sockaddr_storage""... $ac_c" 1>&6
+echo "configure:10270: checking struct sockaddr_storage" >&5
+if eval "test \"\${ol_cv_struct_sockaddr_storage+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+               cat > conftest.$ac_ext <<EOF
+#line 10276 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int main() {
+
+                       struct sockaddr_storage ss;
+
+; return 0; }
+EOF
+if { (eval echo configure:10288: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ol_cv_struct_sockaddr_storage=yes
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ol_cv_struct_sockaddr_storage=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ol_cv_struct_sockaddr_storage" 1>&6
+
+       if test $ol_cv_inet6_addrstrlen = yes \
+               -a $ol_cv_struct_sockaddr_storage = yes ; then
                ol_link_ipv6=yes
-       elif test $ol_enable_ipv6 = yes ; then
+       elif test $ol_enable_ipv6 = yes \
+                       -a $ol_cv_inet6_addrstrlen = no ; then
                { echo "configure: error: IPv6 support requires INET6_ADDRSTRLEN" 1>&2; exit 1; }
+       elif test $ol_enable_ipv6 = yes \
+                       -a $ol_cv_struct_sockaddr_storage = no ; then
+               { echo "configure: error: IPv6 support requires struct sockaddr_storage" 1>&2; exit 1; }
        fi
 fi
 
@@ -10277,17 +10315,17 @@ if test $ol_enable_local != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10281: checking for $ac_hdr" >&5
+echo "configure:10319: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10286 "configure"
+#line 10324 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10291: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10334,17 +10372,17 @@ if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10338: checking for $ac_hdr" >&5
+echo "configure:10376: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10343 "configure"
+#line 10381 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10376,17 +10414,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10380: checking for $ac_hdr" >&5
+echo "configure:10418: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10385 "configure"
+#line 10423 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10420,7 +10458,7 @@ done
 
                if test $krb5_impl = mit; then
                        echo $ac_n "checking for main in -lk5crypto""... $ac_c" 1>&6
-echo "configure:10424: checking for main in -lk5crypto" >&5
+echo "configure:10462: checking for main in -lk5crypto" >&5
 ac_lib_var=`echo k5crypto'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10428,14 +10466,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lk5crypto  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10432 "configure"
+#line 10470 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10458,7 +10496,7 @@ fi
 
 
                        echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6
-echo "configure:10462: checking for main in -lkrb5" >&5
+echo "configure:10500: checking for main in -lkrb5" >&5
 ac_lib_var=`echo krb5'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10466,14 +10504,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5 -l$krb5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10470 "configure"
+#line 10508 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10498,7 +10536,7 @@ fi
 
                elif test $krb5_impl = heimdal; then
                        echo $ac_n "checking for main in -ldes""... $ac_c" 1>&6
-echo "configure:10502: checking for main in -ldes" >&5
+echo "configure:10540: checking for main in -ldes" >&5
 ac_lib_var=`echo des'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10506,14 +10544,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldes  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10510 "configure"
+#line 10548 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10536,7 +10574,7 @@ fi
 
 
                        echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6
-echo "configure:10540: checking for main in -lkrb5" >&5
+echo "configure:10578: checking for main in -lkrb5" >&5
 ac_lib_var=`echo krb5'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10544,14 +10582,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10548 "configure"
+#line 10586 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10614,17 +10652,17 @@ if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10618: checking for $ac_hdr" >&5
+echo "configure:10656: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10623 "configure"
+#line 10661 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10654,7 +10692,7 @@ done
        if test $ac_cv_header_kerberosIV_krb_h = yes ; then
                if test $krb5_impl = mit; then
                        echo $ac_n "checking for main in -lkrb4""... $ac_c" 1>&6
-echo "configure:10658: checking for main in -lkrb4" >&5
+echo "configure:10696: checking for main in -lkrb4" >&5
 ac_lib_var=`echo krb4'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10662,14 +10700,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb4 -ldes425 -lkrb5 -l$krb5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10666 "configure"
+#line 10704 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10694,7 +10732,7 @@ fi
 
                elif test $krb5_impl = heimdal; then
                        echo $ac_n "checking for main in -lkrb4""... $ac_c" 1>&6
-echo "configure:10698: checking for main in -lkrb4" >&5
+echo "configure:10736: checking for main in -lkrb4" >&5
 ac_lib_var=`echo krb4'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10702,14 +10740,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb4 -lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10706 "configure"
+#line 10744 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10751,7 +10789,7 @@ EOF
 
 
                        echo $ac_n "checking for des_debug in Kerberos libraries""... $ac_c" 1>&6
-echo "configure:10755: checking for des_debug in Kerberos libraries" >&5
+echo "configure:10793: checking for des_debug in Kerberos libraries" >&5
 if eval "test \"\${ol_cv_var_des_debug+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -10759,7 +10797,7 @@ else
                                                                save_LIBS="$LIBS"
                                LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
                                cat > conftest.$ac_ext <<EOF
-#line 10763 "configure"
+#line 10801 "configure"
 #include "confdefs.h"
 
 #include <kerberosIV/krb.h>
@@ -10772,7 +10810,7 @@ des_debug = 1;
 
 ; return 0; }
 EOF
-if { (eval echo configure:10776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_var_des_debug=yes
 else
@@ -10811,17 +10849,17 @@ if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10815: checking for $ac_hdr" >&5
+echo "configure:10853: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10820 "configure"
+#line 10858 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10850,7 +10888,7 @@ done
 
        if test $ac_cv_header_krb_h = yes ; then
                echo $ac_n "checking for main in -lkrb""... $ac_c" 1>&6
-echo "configure:10854: checking for main in -lkrb" >&5
+echo "configure:10892: checking for main in -lkrb" >&5
 ac_lib_var=`echo krb'_'main | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10858,14 +10896,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb -ldes $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10862 "configure"
+#line 10900 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10935,17 +10973,17 @@ if test $ol_with_tls != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10939: checking for $ac_hdr" >&5
+echo "configure:10977: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 10944 "configure"
+#line 10982 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10987: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10974,7 +11012,7 @@ done
        
        if test $ac_cv_header_openssl_ssl_h = yes -o $ac_cv_header_ssl_h = yes ; then
                echo $ac_n "checking for SSLeay_add_ssl_algorithms in -lssl""... $ac_c" 1>&6
-echo "configure:10978: checking for SSLeay_add_ssl_algorithms in -lssl" >&5
+echo "configure:11016: checking for SSLeay_add_ssl_algorithms in -lssl" >&5
 ac_lib_var=`echo ssl'_'SSLeay_add_ssl_algorithms | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -10982,7 +11020,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10986 "configure"
+#line 11024 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10993,7 +11031,7 @@ int main() {
 SSLeay_add_ssl_algorithms()
 ; return 0; }
 EOF
-if { (eval echo configure:10997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11018,7 +11056,7 @@ fi
                        
                if test $have_ssleay = no ; then
                        echo $ac_n "checking for SSL_library_init in -lssl""... $ac_c" 1>&6
-echo "configure:11022: checking for SSL_library_init in -lssl" >&5
+echo "configure:11060: checking for SSL_library_init in -lssl" >&5
 ac_lib_var=`echo ssl'_'SSL_library_init | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -11026,7 +11064,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11030 "configure"
+#line 11068 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11037,7 +11075,7 @@ int main() {
 SSL_library_init()
 ; return 0; }
 EOF
-if { (eval echo configure:11041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11063,7 +11101,7 @@ fi
 
                if test $have_ssleay = no ; then
                        echo $ac_n "checking for ssl3_accept in -lssl""... $ac_c" 1>&6
-echo "configure:11067: checking for ssl3_accept in -lssl" >&5
+echo "configure:11105: checking for ssl3_accept in -lssl" >&5
 ac_lib_var=`echo ssl'_'ssl3_accept | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -11071,7 +11109,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto -lRSAglue -lrsaref $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11075 "configure"
+#line 11113 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11082,7 +11120,7 @@ int main() {
 ssl3_accept()
 ; return 0; }
 EOF
-if { (eval echo configure:11086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11163,12 +11201,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:11167: checking for $ac_func" >&5
+echo "configure:11205: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11172 "configure"
+#line 11210 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -11192,7 +11230,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:11196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -11221,19 +11259,19 @@ if test "$ac_cv_func_ctime_r" = no ; then
        ol_cv_func_ctime_r_nargs=0
 else
        echo $ac_n "checking number of arguments of ctime_r""... $ac_c" 1>&6
-echo "configure:11225: checking number of arguments of ctime_r" >&5
+echo "configure:11263: checking number of arguments of ctime_r" >&5
 if eval "test \"\${ol_cv_func_ctime_r_nargs+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11230 "configure"
+#line 11268 "configure"
 #include "confdefs.h"
 #include <time.h>
 int main() {
 time_t ti; char *buffer; ctime_r(&ti,buffer,32);
 ; return 0; }
 EOF
-if { (eval echo configure:11237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_ctime_r_nargs3=yes
 else
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 11249 "configure"
+#line 11287 "configure"
 #include "confdefs.h"
 #include <time.h>
 int main() {
 time_t ti; char *buffer; ctime_r(&ti,buffer);
 ; return 0; }
 EOF
-if { (eval echo configure:11256: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_ctime_r_nargs2=yes
 else
 
 if test "$ac_cv_func_gethostbyname_r" = yes ; then
        echo $ac_n "checking number of arguments of gethostbyname_r""... $ac_c" 1>&6
-echo "configure:11296: checking number of arguments of gethostbyname_r" >&5
+echo "configure:11334: checking number of arguments of gethostbyname_r" >&5
 if eval "test \"\${ol_cv_func_gethostbyname_r_nargs+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11301 "configure"
+#line 11339 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11311,7 +11349,7 @@ struct hostent hent; char buffer[BUFSIZE];
                        buffer, bufsize, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyname_r_nargs5=yes
 else
@@ -11323,7 +11361,7 @@ fi
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 11327 "configure"
+#line 11365 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11338,7 +11376,7 @@ struct hostent hent;struct hostent *rhent;
                        &rhent, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11380: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyname_r_nargs6=yes
 else
  
 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
        echo $ac_n "checking number of arguments of gethostbyaddr_r""... $ac_c" 1>&6
-echo "configure:11383: checking number of arguments of gethostbyaddr_r" >&5
+echo "configure:11421: checking number of arguments of gethostbyaddr_r" >&5
 if eval "test \"\${ol_cv_func_gethostbyaddr_r_nargs+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11388 "configure"
+#line 11426 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11400,7 +11438,7 @@ struct hostent hent; char buffer[BUFSIZE];
                        alen, AF_INET, &hent, buffer, bufsize, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11404: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyaddr_r_nargs7=yes
 else
@@ -11412,7 +11450,7 @@ fi
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 11416 "configure"
+#line 11454 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -11430,7 +11468,7 @@ struct hostent hent;
                        &rhent, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:11434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyaddr_r_nargs8=yes
 else
@@ -11493,12 +11531,12 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 
        
        echo $ac_n "checking for _beginthread""... $ac_c" 1>&6
-echo "configure:11497: checking for _beginthread" >&5
+echo "configure:11535: checking for _beginthread" >&5
 if eval "test \"\${ac_cv_func__beginthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11502 "configure"
+#line 11540 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _beginthread(); below.  */
@@ -11522,7 +11560,7 @@ f = _beginthread;
 
 ; return 0; }
 EOF
-if { (eval echo configure:11526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__beginthread=yes"
 else
@@ -11578,17 +11616,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11582: checking for $ac_hdr" >&5
+echo "configure:11620: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11587 "configure"
+#line 11625 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11592: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11617,13 +11655,13 @@ done
 
        if test $ac_cv_header_pthread_h = yes ; then
                echo $ac_n "checking POSIX thread version""... $ac_c" 1>&6
-echo "configure:11621: checking POSIX thread version" >&5
+echo "configure:11659: checking POSIX thread version" >&5
 if eval "test \"\${ol_cv_pthread_version+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 11627 "configure"
+#line 11665 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11645,7 +11683,7 @@ rm -f conftest*
 
 
        cat > conftest.$ac_ext <<EOF
-#line 11649 "configure"
+#line 11687 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11698,12 +11736,12 @@ EOF
 
                
        echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6
-echo "configure:11702: checking for LinuxThreads pthread.h" >&5
+echo "configure:11740: checking for LinuxThreads pthread.h" >&5
 if eval "test \"\${ol_cv_header_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11707 "configure"
+#line 11745 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -11730,12 +11768,12 @@ EOF
 
                
        echo $ac_n "checking for GNU Pth pthread.h""... $ac_c" 1>&6
-echo "configure:11734: checking for GNU Pth pthread.h" >&5
+echo "configure:11772: checking for GNU Pth pthread.h" >&5
 if eval "test \"\${ol_cv_header_gnu_pth_pthread_h+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11739 "configure"
+#line 11777 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 #ifdef _POSIX_THREAD_IS_GNU_PTH
@@ -11764,17 +11802,17 @@ echo "$ac_t""$ol_cv_header_gnu_pth_pthread_h" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11768: checking for $ac_hdr" >&5
+echo "configure:11806: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 11773 "configure"
+#line 11811 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11816: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11804,14 +11842,14 @@ done
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                echo $ac_n "checking for pthread_create in default libraries""... $ac_c" 1>&6
-echo "configure:11808: checking for pthread_create in default libraries" >&5
+echo "configure:11846: checking for pthread_create in default libraries" >&5
 if eval "test \"\${ol_cv_pthread_create+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 11815 "configure"
+#line 11853 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11892,7 +11930,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_create=yes
 else
@@ -11904,7 +11942,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 11908 "configure"
+#line 11946 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11990,7 +12028,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:11994: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_create=yes
 else
@@ -12015,7 +12053,7 @@ echo "$ac_t""$ol_cv_pthread_create" 1>&6
 if test "$ol_link_threads" = no ; then
        # try -kthread
        echo $ac_n "checking for pthread link with -kthread""... $ac_c" 1>&6
-echo "configure:12019: checking for pthread link with -kthread" >&5
+echo "configure:12057: checking for pthread link with -kthread" >&5
 if eval "test \"\${ol_cv_pthread_kthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12026,7 +12064,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12030 "configure"
+#line 12068 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12107,7 +12145,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_kthread=yes
 else
@@ -12119,7 +12157,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12123 "configure"
+#line 12161 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12205,7 +12243,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_kthread=yes
 else
@@ -12235,7 +12273,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -pthread
        echo $ac_n "checking for pthread link with -pthread""... $ac_c" 1>&6
-echo "configure:12239: checking for pthread link with -pthread" >&5
+echo "configure:12277: checking for pthread link with -pthread" >&5
 if eval "test \"\${ol_cv_pthread_pthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12246,7 +12284,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12250 "configure"
+#line 12288 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12327,7 +12365,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_pthread=yes
 else
@@ -12339,7 +12377,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12343 "configure"
+#line 12381 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12425,7 +12463,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_pthread=yes
 else
@@ -12455,7 +12493,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -pthreads
        echo $ac_n "checking for pthread link with -pthreads""... $ac_c" 1>&6
-echo "configure:12459: checking for pthread link with -pthreads" >&5
+echo "configure:12497: checking for pthread link with -pthreads" >&5
 if eval "test \"\${ol_cv_pthread_pthreads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12466,7 +12504,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12470 "configure"
+#line 12508 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12547,7 +12585,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_pthreads=yes
 else
@@ -12559,7 +12597,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12563 "configure"
+#line 12601 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12645,7 +12683,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_pthreads=yes
 else
@@ -12675,7 +12713,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -mthreads
        echo $ac_n "checking for pthread link with -mthreads""... $ac_c" 1>&6
-echo "configure:12679: checking for pthread link with -mthreads" >&5
+echo "configure:12717: checking for pthread link with -mthreads" >&5
 if eval "test \"\${ol_cv_pthread_mthreads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12686,7 +12724,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12690 "configure"
+#line 12728 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12767,7 +12805,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_mthreads=yes
 else
@@ -12779,7 +12817,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12783 "configure"
+#line 12821 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12865,7 +12903,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_mthreads=yes
 else
@@ -12895,7 +12933,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -thread
        echo $ac_n "checking for pthread link with -thread""... $ac_c" 1>&6
-echo "configure:12899: checking for pthread link with -thread" >&5
+echo "configure:12937: checking for pthread link with -thread" >&5
 if eval "test \"\${ol_cv_pthread_thread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -12906,7 +12944,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12910 "configure"
+#line 12948 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12987,7 +13025,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_thread=yes
 else
@@ -12999,7 +13037,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13003 "configure"
+#line 13041 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13085,7 +13123,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_thread=yes
 else
@@ -13116,7 +13154,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread -lmach -lexc -lc_r
        echo $ac_n "checking for pthread link with -lpthread -lmach -lexc -lc_r""... $ac_c" 1>&6
-echo "configure:13120: checking for pthread link with -lpthread -lmach -lexc -lc_r" >&5
+echo "configure:13158: checking for pthread link with -lpthread -lmach -lexc -lc_r" >&5
 if eval "test \"\${ol_cv_pthread_lpthread_lmach_lexc_lc_r+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13127,7 +13165,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13131 "configure"
+#line 13169 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13208,7 +13246,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread_lmach_lexc_lc_r=yes
 else
@@ -13220,7 +13258,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13224 "configure"
+#line 13262 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13306,7 +13344,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthread_lmach_lexc_lc_r=yes
 else
@@ -13336,7 +13374,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread -lmach -lexc
        echo $ac_n "checking for pthread link with -lpthread -lmach -lexc""... $ac_c" 1>&6
-echo "configure:13340: checking for pthread link with -lpthread -lmach -lexc" >&5
+echo "configure:13378: checking for pthread link with -lpthread -lmach -lexc" >&5
 if eval "test \"\${ol_cv_pthread_lpthread_lmach_lexc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13347,7 +13385,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13351 "configure"
+#line 13389 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13428,7 +13466,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread_lmach_lexc=yes
 else
@@ -13440,7 +13478,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13444 "configure"
+#line 13482 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13526,7 +13564,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthread_lmach_lexc=yes
 else
@@ -13557,7 +13595,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread -Wl,-woff,85
        echo $ac_n "checking for pthread link with -lpthread -Wl,-woff,85""... $ac_c" 1>&6
-echo "configure:13561: checking for pthread link with -lpthread -Wl,-woff,85" >&5
+echo "configure:13599: checking for pthread link with -lpthread -Wl,-woff,85" >&5
 if eval "test \"\${ol_cv_pthread_lib_lpthread_woff+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13568,7 +13606,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13572 "configure"
+#line 13610 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13649,7 +13687,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lib_lpthread_woff=yes
 else
@@ -13661,7 +13699,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13665 "configure"
+#line 13703 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13747,7 +13785,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lib_lpthread_woff=yes
 else
@@ -13778,7 +13816,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthread
        echo $ac_n "checking for pthread link with -lpthread""... $ac_c" 1>&6
-echo "configure:13782: checking for pthread link with -lpthread" >&5
+echo "configure:13820: checking for pthread link with -lpthread" >&5
 if eval "test \"\${ol_cv_pthread_lpthread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -13789,7 +13827,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13793 "configure"
+#line 13831 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13870,7 +13908,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread=yes
 else
@@ -13882,7 +13920,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13886 "configure"
+#line 13924 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13968,7 +14006,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13972: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthread=yes
 else
@@ -13998,7 +14036,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lc_r
        echo $ac_n "checking for pthread link with -lc_r""... $ac_c" 1>&6
-echo "configure:14002: checking for pthread link with -lc_r" >&5
+echo "configure:14040: checking for pthread link with -lc_r" >&5
 if eval "test \"\${ol_cv_pthread_lc_r+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14009,7 +14047,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14013 "configure"
+#line 14051 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14090,7 +14128,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lc_r=yes
 else
@@ -14102,7 +14140,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14106 "configure"
+#line 14144 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14188,7 +14226,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lc_r=yes
 else
@@ -14219,7 +14257,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -threads
        echo $ac_n "checking for pthread link with -threads""... $ac_c" 1>&6
-echo "configure:14223: checking for pthread link with -threads" >&5
+echo "configure:14261: checking for pthread link with -threads" >&5
 if eval "test \"\${ol_cv_pthread_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14230,7 +14268,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14234 "configure"
+#line 14272 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14311,7 +14349,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_threads=yes
 else
@@ -14323,7 +14361,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14327 "configure"
+#line 14365 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14409,7 +14447,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_threads=yes
 else
@@ -14440,7 +14478,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads -lmach -lexc -lc_r
        echo $ac_n "checking for pthread link with -lpthreads -lmach -lexc -lc_r""... $ac_c" 1>&6
-echo "configure:14444: checking for pthread link with -lpthreads -lmach -lexc -lc_r" >&5
+echo "configure:14482: checking for pthread link with -lpthreads -lmach -lexc -lc_r" >&5
 if eval "test \"\${ol_cv_pthread_lpthreads_lmach_lexc_lc_r+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14451,7 +14489,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14455 "configure"
+#line 14493 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14532,7 +14570,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthreads_lmach_lexc_lc_r=yes
 else
@@ -14544,7 +14582,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14548 "configure"
+#line 14586 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14630,7 +14668,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthreads_lmach_lexc_lc_r=yes
 else
@@ -14660,7 +14698,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads -lmach -lexc
        echo $ac_n "checking for pthread link with -lpthreads -lmach -lexc""... $ac_c" 1>&6
-echo "configure:14664: checking for pthread link with -lpthreads -lmach -lexc" >&5
+echo "configure:14702: checking for pthread link with -lpthreads -lmach -lexc" >&5
 if eval "test \"\${ol_cv_pthread_lpthreads_lmach_lexc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14671,7 +14709,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14675 "configure"
+#line 14713 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14752,7 +14790,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthreads_lmach_lexc=yes
 else
@@ -14764,7 +14802,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14768 "configure"
+#line 14806 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14850,7 +14888,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthreads_lmach_lexc=yes
 else
@@ -14880,7 +14918,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads -lexc
        echo $ac_n "checking for pthread link with -lpthreads -lexc""... $ac_c" 1>&6
-echo "configure:14884: checking for pthread link with -lpthreads -lexc" >&5
+echo "configure:14922: checking for pthread link with -lpthreads -lexc" >&5
 if eval "test \"\${ol_cv_pthread_lpthreads_lexc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -14891,7 +14929,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14895 "configure"
+#line 14933 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14972,7 +15010,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthreads_lexc=yes
 else
@@ -14984,7 +15022,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14988 "configure"
+#line 15026 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15070,7 +15108,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lpthreads_lexc=yes
 else
@@ -15101,7 +15139,7 @@ fi
 if test "$ol_link_threads" = no ; then
        # try -lpthreads
        echo $ac_n "checking for pthread link with -lpthreads""... $ac_c" 1>&6
-echo "configure:15105: checking for pthread link with -lpthreads" >&5
+echo "configure:15143: checking for pthread link with -lpthreads" >&5
 if eval "test \"\${ol_cv_pthread_lib_lpthreads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15112,7 +15150,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 15116 "configure"
+#line 15154 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15193,7 +15231,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:15197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lib_lpthreads=yes
 else
@@ -15205,7 +15243,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 15209 "configure"
+#line 15247 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15291,7 +15329,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_lib_lpthreads=yes
 else
@@ -15333,12 +15371,12 @@ EOF
                                                                                                for ac_func in sched_yield pthread_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15337: checking for $ac_func" >&5
+echo "configure:15375: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15342 "configure"
+#line 15380 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15362,7 +15400,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15390,7 +15428,7 @@ done
                        if test $ac_cv_func_sched_yield = no -a \
                                $ac_cv_func_pthread_yield = no ; then
                                                                echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6
-echo "configure:15394: checking for sched_yield in -lrt" >&5
+echo "configure:15432: checking for sched_yield in -lrt" >&5
 ac_lib_var=`echo rt'_'sched_yield | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -15398,7 +15436,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lrt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 15402 "configure"
+#line 15440 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -15409,7 +15447,7 @@ int main() {
 sched_yield()
 ; return 0; }
 EOF
-if { (eval echo configure:15413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
                                                                                                for ac_func in thr_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15445: checking for $ac_func" >&5
+echo "configure:15483: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15450 "configure"
+#line 15488 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15470,7 +15508,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15504,12 +15542,12 @@ done
                                                for ac_func in pthread_kill pthread_rwlock_destroy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15508: checking for $ac_func" >&5
+echo "configure:15546: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15513 "configure"
+#line 15551 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15533,7 +15571,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15559,13 +15597,13 @@ done
 
 
                                                                        echo $ac_n "checking for pthread_detach with <pthread.h>""... $ac_c" 1>&6
-echo "configure:15563: checking for pthread_detach with <pthread.h>" >&5
+echo "configure:15601: checking for pthread_detach with <pthread.h>" >&5
 if eval "test \"\${ol_cv_func_pthread_detach+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                                                                cat > conftest.$ac_ext <<EOF
-#line 15569 "configure"
+#line 15607 "configure"
 #include "confdefs.h"
 
 #include <pthread.h>
@@ -15577,7 +15615,7 @@ int main() {
 pthread_detach(NULL);
 ; return 0; }
 EOF
-if { (eval echo configure:15581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15619: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_func_pthread_detach=yes
 else
@@ -15609,12 +15647,12 @@ EOF
                        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15613: checking for $ac_func" >&5
+echo "configure:15651: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15618 "configure"
+#line 15656 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15638,7 +15676,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15667,12 +15705,12 @@ done
        for ac_func in pthread_kill_other_threads_np
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15671: checking for $ac_func" >&5
+echo "configure:15709: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 15676 "configure"
+#line 15714 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15696,7 +15734,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -15721,7 +15759,7 @@ fi
 done
 
        echo $ac_n "checking for LinuxThreads implementation""... $ac_c" 1>&6
-echo "configure:15725: checking for LinuxThreads implementation" >&5
+echo "configure:15763: checking for LinuxThreads implementation" >&5
 if eval "test \"\${ol_cv_sys_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15734,7 +15772,7 @@ echo "$ac_t""$ol_cv_sys_linux_threads" 1>&6
        
        
        echo $ac_n "checking for LinuxThreads consistency""... $ac_c" 1>&6
-echo "configure:15738: checking for LinuxThreads consistency" >&5
+echo "configure:15776: checking for LinuxThreads consistency" >&5
 if eval "test \"\${ol_cv_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15759,7 +15797,7 @@ echo "$ac_t""$ol_cv_linux_threads" 1>&6
                        fi
 
                        echo $ac_n "checking if pthread_create() works""... $ac_c" 1>&6
-echo "configure:15763: checking if pthread_create() works" >&5
+echo "configure:15801: checking if pthread_create() works" >&5
 if eval "test \"\${ol_cv_pthread_create_works+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15768,7 +15806,7 @@ else
                                ol_cv_pthread_create_works=yes
 else
   cat > conftest.$ac_ext <<EOF
-#line 15772 "configure"
+#line 15810 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15854,7 +15892,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_create_works=yes
 else
@@ -15876,7 +15914,7 @@ echo "$ac_t""$ol_cv_pthread_create_works" 1>&6
 
                                                if test $ol_with_yielding_select = auto ; then
                                echo $ac_n "checking if select yields when using pthreads""... $ac_c" 1>&6
-echo "configure:15880: checking if select yields when using pthreads" >&5
+echo "configure:15918: checking if select yields when using pthreads" >&5
 if eval "test \"\${ol_cv_pthread_select_yields+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15885,7 +15923,7 @@ else
   ol_cv_pthread_select_yields=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 15889 "configure"
+#line 15927 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -15961,7 +15999,7 @@ int main(argc, argv)
        exit(2);
 }
 EOF
-if { (eval echo configure:15965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:16003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_pthread_select_yields=no
 else
@@ -16005,17 +16043,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16009: checking for $ac_hdr" >&5
+echo "configure:16047: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16014 "configure"
+#line 16052 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16045,12 +16083,12 @@ done
                ol_with_threads=found
 
                                echo $ac_n "checking for cthread_fork""... $ac_c" 1>&6
-echo "configure:16049: checking for cthread_fork" >&5
+echo "configure:16087: checking for cthread_fork" >&5
 if eval "test \"\${ac_cv_func_cthread_fork+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16054 "configure"
+#line 16092 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char cthread_fork(); below.  */
@@ -16074,7 +16112,7 @@ f = cthread_fork;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_cthread_fork=yes"
 else
@@ -16096,7 +16134,7 @@ fi
 
                if test $ol_link_threads = no ; then
                                                                        echo $ac_n "checking for cthread_fork with -all_load""... $ac_c" 1>&6
-echo "configure:16100: checking for cthread_fork with -all_load" >&5
+echo "configure:16138: checking for cthread_fork with -all_load" >&5
 if eval "test \"\${ol_cv_cthread_all_load+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -16104,7 +16142,7 @@ else
                                                                save_LIBS="$LIBS"
                                LIBS="-all_load $LIBS"
                                cat > conftest.$ac_ext <<EOF
-#line 16108 "configure"
+#line 16146 "configure"
 #include "confdefs.h"
 #include <mach/cthreads.h>
 int main() {
@@ -16113,7 +16151,7 @@ int main() {
                                        
 ; return 0; }
 EOF
-if { (eval echo configure:16117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_cthread_all_load=yes
 else
@@ -16143,12 +16181,12 @@ echo "$ac_t""$ol_cv_cthread_all_load" 1>&6
                                save_LIBS="$LIBS"
                LIBS="$LIBS -lthreads"
                echo $ac_n "checking for cthread_fork""... $ac_c" 1>&6
-echo "configure:16147: checking for cthread_fork" >&5
+echo "configure:16185: checking for cthread_fork" >&5
 if eval "test \"\${ac_cv_func_cthread_fork+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16152 "configure"
+#line 16190 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char cthread_fork(); below.  */
@@ -16172,7 +16210,7 @@ f = cthread_fork;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_cthread_fork=yes"
 else
@@ -16222,17 +16260,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16226: checking for $ac_hdr" >&5
+echo "configure:16264: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16231 "configure"
+#line 16269 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16274: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16261,7 +16299,7 @@ done
 
        if test $ac_cv_header_pth_h = yes ; then
                echo $ac_n "checking for pth_version in -lpth""... $ac_c" 1>&6
-echo "configure:16265: checking for pth_version in -lpth" >&5
+echo "configure:16303: checking for pth_version in -lpth" >&5
 ac_lib_var=`echo pth'_'pth_version | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -16269,7 +16307,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpth  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 16273 "configure"
+#line 16311 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -16280,7 +16318,7 @@ int main() {
 pth_version()
 ; return 0; }
 EOF
-if { (eval echo configure:16284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -16325,17 +16363,17 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16329: checking for $ac_hdr" >&5
+echo "configure:16367: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16334 "configure"
+#line 16372 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16377: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16363,7 +16401,7 @@ done
 
        if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
                echo $ac_n "checking for thr_create in -lthread""... $ac_c" 1>&6
-echo "configure:16367: checking for thr_create in -lthread" >&5
+echo "configure:16405: checking for thr_create in -lthread" >&5
 ac_lib_var=`echo thread'_'thr_create | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -16371,7 +16409,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 16375 "configure"
+#line 16413 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -16382,7 +16420,7 @@ int main() {
 thr_create()
 ; return 0; }
 EOF
-if { (eval echo configure:16386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -16422,12 +16460,12 @@ EOF
                        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16426: checking for $ac_func" >&5
+echo "configure:16464: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16431 "configure"
+#line 16469 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -16451,7 +16489,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -16482,17 +16520,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16486: checking for $ac_hdr" >&5
+echo "configure:16524: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16491 "configure"
+#line 16529 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16520,7 +16558,7 @@ done
 
        if test $ac_cv_header_lwp_lwp_h = yes ; then
                echo $ac_n "checking for lwp_create in -llwp""... $ac_c" 1>&6
-echo "configure:16524: checking for lwp_create in -llwp" >&5
+echo "configure:16562: checking for lwp_create in -llwp" >&5
 ac_lib_var=`echo lwp'_'lwp_create | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -16528,7 +16566,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-llwp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 16532 "configure"
+#line 16570 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -16539,7 +16577,7 @@ int main() {
 lwp_create()
 ; return 0; }
 EOF
-if { (eval echo configure:16543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -16592,17 +16630,17 @@ if test $ol_with_threads = manual ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16596: checking for $ac_hdr" >&5
+echo "configure:16634: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16601 "configure"
+#line 16639 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16644: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16631,12 +16669,12 @@ done
        for ac_func in sched_yield pthread_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16635: checking for $ac_func" >&5
+echo "configure:16673: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16640 "configure"
+#line 16678 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -16660,7 +16698,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -16686,12 +16724,12 @@ done
 
        
        echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6
-echo "configure:16690: checking for LinuxThreads pthread.h" >&5
+echo "configure:16728: checking for LinuxThreads pthread.h" >&5
 if eval "test \"\${ol_cv_header_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16695 "configure"
+#line 16733 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -16721,17 +16759,17 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16725: checking for $ac_hdr" >&5
+echo "configure:16763: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16730 "configure"
+#line 16768 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16773: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16761,17 +16799,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16765: checking for $ac_hdr" >&5
+echo "configure:16803: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16770 "configure"
+#line 16808 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16813: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16801,17 +16839,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16805: checking for $ac_hdr" >&5
+echo "configure:16843: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16810 "configure"
+#line 16848 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16815: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16853: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -16870,20 +16908,20 @@ EOF
 
 
                        echo $ac_n "checking for thread specific errno""... $ac_c" 1>&6
-echo "configure:16874: checking for thread specific errno" >&5
+echo "configure:16912: checking for thread specific errno" >&5
 if eval "test \"\${ol_cv_errno_thread_specific+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 16880 "configure"
+#line 16918 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 errno = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:16887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_errno_thread_specific=yes
 else
 echo "$ac_t""$ol_cv_errno_thread_specific" 1>&6
 
                        echo $ac_n "checking for thread specific h_errno""... $ac_c" 1>&6
-echo "configure:16903: checking for thread specific h_errno" >&5
+echo "configure:16941: checking for thread specific h_errno" >&5
 if eval "test \"\${ol_cv_h_errno_thread_specific+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 16909 "configure"
+#line 16947 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 h_errno = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:16916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_h_errno_thread_specific=yes
 else
@@ -16970,17 +17008,17 @@ if test $ol_with_ldbm_api = auto \
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16974: checking for $ac_hdr" >&5
+echo "configure:17012: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 16979 "configure"
+#line 17017 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17022: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -17008,13 +17046,13 @@ done
 
 if test $ac_cv_header_db_185_h = yes -o $ac_cv_header_db_h = yes; then
        echo $ac_n "checking if Berkeley DB header compatibility""... $ac_c" 1>&6
-echo "configure:17012: checking if Berkeley DB header compatibility" >&5
+echo "configure:17050: checking if Berkeley DB header compatibility" >&5
 if eval "test \"\${ol_cv_header_db1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 17018 "configure"
+#line 17056 "configure"
 #include "confdefs.h"
 
 #if HAVE_DB_185_H
@@ -17051,7 +17089,7 @@ echo "$ac_t""$ol_cv_header_db1" 1>&6
                ol_cv_lib_db=no
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (default)""... $ac_c" 1>&6
-echo "configure:17055: checking for Berkeley DB link (default)" >&5
+echo "configure:17093: checking for Berkeley DB link (default)" >&5
 if eval "test \"\${ol_cv_db_none+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17061,7 +17099,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17065 "configure"
+#line 17103 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17108,7 +17146,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_none=yes
 else
@@ -17132,7 +17170,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6
-echo "configure:17136: checking for Berkeley DB link (-ldb4)" >&5
+echo "configure:17174: checking for Berkeley DB link (-ldb4)" >&5
 if eval "test \"\${ol_cv_db_db4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17142,7 +17180,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17146 "configure"
+#line 17184 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17189,7 +17227,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db4=yes
 else
@@ -17213,7 +17251,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4)""... $ac_c" 1>&6
-echo "configure:17217: checking for Berkeley DB link (-ldb-4)" >&5
+echo "configure:17255: checking for Berkeley DB link (-ldb-4)" >&5
 if eval "test \"\${ol_cv_db_db_4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17223,7 +17261,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17227 "configure"
+#line 17265 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17270,7 +17308,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4=yes
 else
@@ -17294,7 +17332,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6
-echo "configure:17298: checking for Berkeley DB link (-ldb)" >&5
+echo "configure:17336: checking for Berkeley DB link (-ldb)" >&5
 if eval "test \"\${ol_cv_db_db+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17304,7 +17342,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17308 "configure"
+#line 17346 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17351,7 +17389,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db=yes
 else
@@ -17375,7 +17413,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6
-echo "configure:17379: checking for Berkeley DB link (-ldb3)" >&5
+echo "configure:17417: checking for Berkeley DB link (-ldb3)" >&5
 if eval "test \"\${ol_cv_db_db3+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17385,7 +17423,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17389 "configure"
+#line 17427 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17432,7 +17470,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db3=yes
 else
@@ -17456,7 +17494,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-3)""... $ac_c" 1>&6
-echo "configure:17460: checking for Berkeley DB link (-ldb-3)" >&5
+echo "configure:17498: checking for Berkeley DB link (-ldb-3)" >&5
 if eval "test \"\${ol_cv_db_db_3+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17466,7 +17504,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17470 "configure"
+#line 17508 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17513,7 +17551,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_3=yes
 else
@@ -17537,7 +17575,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6
-echo "configure:17541: checking for Berkeley DB link (-ldb2)" >&5
+echo "configure:17579: checking for Berkeley DB link (-ldb2)" >&5
 if eval "test \"\${ol_cv_db_db2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17547,7 +17585,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17551 "configure"
+#line 17589 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17594,7 +17632,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db2=yes
 else
@@ -17618,7 +17656,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-2)""... $ac_c" 1>&6
-echo "configure:17622: checking for Berkeley DB link (-ldb-2)" >&5
+echo "configure:17660: checking for Berkeley DB link (-ldb-2)" >&5
 if eval "test \"\${ol_cv_db_db_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17628,7 +17666,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17632 "configure"
+#line 17670 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17675,7 +17713,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_2=yes
 else
@@ -17699,7 +17737,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6
-echo "configure:17703: checking for Berkeley DB link (-ldb1)" >&5
+echo "configure:17741: checking for Berkeley DB link (-ldb1)" >&5
 if eval "test \"\${ol_cv_db_db1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17709,7 +17747,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17713 "configure"
+#line 17751 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17756,7 +17794,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db1=yes
 else
@@ -17780,7 +17818,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-1)""... $ac_c" 1>&6
-echo "configure:17784: checking for Berkeley DB link (-ldb-1)" >&5
+echo "configure:17822: checking for Berkeley DB link (-ldb-1)" >&5
 if eval "test \"\${ol_cv_db_db_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17790,7 +17828,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17794 "configure"
+#line 17832 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17837,7 +17875,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_1=yes
 else
@@ -17872,17 +17910,17 @@ for ac_hdr in db.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:17876: checking for $ac_hdr" >&5
+echo "configure:17914: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 17881 "configure"
+#line 17919 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:17886: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:17924: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -17912,7 +17950,7 @@ if test $ac_cv_header_db_h = yes; then
        ol_cv_lib_db=no
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (default)""... $ac_c" 1>&6
-echo "configure:17916: checking for Berkeley DB link (default)" >&5
+echo "configure:17954: checking for Berkeley DB link (default)" >&5
 if eval "test \"\${ol_cv_db_none+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17922,7 +17960,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17926 "configure"
+#line 17964 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17969,7 +18007,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_none=yes
 else
@@ -17993,7 +18031,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6
-echo "configure:17997: checking for Berkeley DB link (-ldb4)" >&5
+echo "configure:18035: checking for Berkeley DB link (-ldb4)" >&5
 if eval "test \"\${ol_cv_db_db4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18003,7 +18041,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18007 "configure"
+#line 18045 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18050,7 +18088,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db4=yes
 else
@@ -18074,7 +18112,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4)""... $ac_c" 1>&6
-echo "configure:18078: checking for Berkeley DB link (-ldb-4)" >&5
+echo "configure:18116: checking for Berkeley DB link (-ldb-4)" >&5
 if eval "test \"\${ol_cv_db_db_4+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18084,7 +18122,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18088 "configure"
+#line 18126 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18131,7 +18169,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4=yes
 else
@@ -18155,7 +18193,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6
-echo "configure:18159: checking for Berkeley DB link (-ldb)" >&5
+echo "configure:18197: checking for Berkeley DB link (-ldb)" >&5
 if eval "test \"\${ol_cv_db_db+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18165,7 +18203,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18169 "configure"
+#line 18207 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18212,7 +18250,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18216: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db=yes
 else
@@ -18236,7 +18274,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6
-echo "configure:18240: checking for Berkeley DB link (-ldb3)" >&5
+echo "configure:18278: checking for Berkeley DB link (-ldb3)" >&5
 if eval "test \"\${ol_cv_db_db3+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18246,7 +18284,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18250 "configure"
+#line 18288 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18293,7 +18331,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db3=yes
 else
@@ -18317,7 +18355,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-3)""... $ac_c" 1>&6
-echo "configure:18321: checking for Berkeley DB link (-ldb-3)" >&5
+echo "configure:18359: checking for Berkeley DB link (-ldb-3)" >&5
 if eval "test \"\${ol_cv_db_db_3+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18327,7 +18365,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18331 "configure"
+#line 18369 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18374,7 +18412,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18378: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_3=yes
 else
@@ -18398,7 +18436,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6
-echo "configure:18402: checking for Berkeley DB link (-ldb2)" >&5
+echo "configure:18440: checking for Berkeley DB link (-ldb2)" >&5
 if eval "test \"\${ol_cv_db_db2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18408,7 +18446,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18412 "configure"
+#line 18450 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18455,7 +18493,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db2=yes
 else
@@ -18479,7 +18517,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-2)""... $ac_c" 1>&6
-echo "configure:18483: checking for Berkeley DB link (-ldb-2)" >&5
+echo "configure:18521: checking for Berkeley DB link (-ldb-2)" >&5
 if eval "test \"\${ol_cv_db_db_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18489,7 +18527,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18493 "configure"
+#line 18531 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18536,7 +18574,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_2=yes
 else
@@ -18560,7 +18598,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6
-echo "configure:18564: checking for Berkeley DB link (-ldb1)" >&5
+echo "configure:18602: checking for Berkeley DB link (-ldb1)" >&5
 if eval "test \"\${ol_cv_db_db1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18570,7 +18608,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18574 "configure"
+#line 18612 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18617,7 +18655,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db1=yes
 else
@@ -18641,7 +18679,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-1)""... $ac_c" 1>&6
-echo "configure:18645: checking for Berkeley DB link (-ldb-1)" >&5
+echo "configure:18683: checking for Berkeley DB link (-ldb-1)" >&5
 if eval "test \"\${ol_cv_db_db_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18651,7 +18689,7 @@ else
        LIBS="$ol_DB_LIB $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18655 "configure"
+#line 18693 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18698,7 +18736,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_1=yes
 else
@@ -18724,7 +18762,7 @@ fi
        if test "$ol_cv_lib_db" != no ; then
                ol_cv_berkeley_db=yes
                echo $ac_n "checking for Berkeley DB thread support""... $ac_c" 1>&6
-echo "configure:18728: checking for Berkeley DB thread support" >&5
+echo "configure:18766: checking for Berkeley DB thread support" >&5
 if eval "test \"\${ol_cv_berkeley_db_thread+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18738,7 +18776,7 @@ else
   ol_cv_berkeley_db_thread=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 18742 "configure"
+#line 18780 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18805,7 +18843,7 @@ main()
        return rc;
 }
 EOF
-if { (eval echo configure:18809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:18847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_berkeley_db_thread=yes
 else
@@ -18866,13 +18904,13 @@ if test $ol_enable_bdb = yes -a $ol_link_ldbm != berkeley ; then
        { echo "configure: error: BDB: BerkeleyDB not available" 1>&2; exit 1; }
 elif test $ol_enable_bdb != no -a $ol_link_ldbm = berkeley ; then
        echo $ac_n "checking Berkeley DB version for BDB backend""... $ac_c" 1>&6
-echo "configure:18870: checking Berkeley DB version for BDB backend" >&5
+echo "configure:18908: checking Berkeley DB version for BDB backend" >&5
 if eval "test \"\${ol_cv_bdb_compat+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 18876 "configure"
+#line 18914 "configure"
 #include "confdefs.h"
 
 #include <db.h>
 
 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
        echo $ac_n "checking for MDBM library""... $ac_c" 1>&6
-echo "configure:18923: checking for MDBM library" >&5
+echo "configure:18961: checking for MDBM library" >&5
 if eval "test \"\${ol_cv_lib_mdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
        ol_LIBS="$LIBS"
        echo $ac_n "checking for mdbm_set_chain""... $ac_c" 1>&6
-echo "configure:18929: checking for mdbm_set_chain" >&5
+echo "configure:18967: checking for mdbm_set_chain" >&5
 if eval "test \"\${ac_cv_func_mdbm_set_chain+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 18934 "configure"
+#line 18972 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char mdbm_set_chain(); below.  */
@@ -18954,7 +18992,7 @@ f = mdbm_set_chain;
 
 ; return 0; }
 EOF
-if { (eval echo configure:18958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_mdbm_set_chain=yes"
 else
@@ -18973,7 +19011,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for mdbm_set_chain in -lmdbm""... $ac_c" 1>&6
-echo "configure:18977: checking for mdbm_set_chain in -lmdbm" >&5
+echo "configure:19015: checking for mdbm_set_chain in -lmdbm" >&5
 ac_lib_var=`echo mdbm'_'mdbm_set_chain | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -18981,7 +19019,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmdbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 18985 "configure"
+#line 19023 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -18992,7 +19030,7 @@ int main() {
 mdbm_set_chain()
 ; return 0; }
 EOF
-if { (eval echo configure:18996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19027,17 +19065,17 @@ echo "$ac_t""$ol_cv_lib_mdbm" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19031: checking for $ac_hdr" >&5
+echo "configure:19069: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19036 "configure"
+#line 19074 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19041: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19064,7 +19102,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:19068: checking for db" >&5
+echo "configure:19106: checking for db" >&5
 if eval "test \"\${ol_cv_mdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
 
 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
        echo $ac_n "checking for GDBM library""... $ac_c" 1>&6
-echo "configure:19101: checking for GDBM library" >&5
+echo "configure:19139: checking for GDBM library" >&5
 if eval "test \"\${ol_cv_lib_gdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
        ol_LIBS="$LIBS"
        echo $ac_n "checking for gdbm_open""... $ac_c" 1>&6
-echo "configure:19107: checking for gdbm_open" >&5
+echo "configure:19145: checking for gdbm_open" >&5
 if eval "test \"\${ac_cv_func_gdbm_open+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19112 "configure"
+#line 19150 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gdbm_open(); below.  */
@@ -19132,7 +19170,7 @@ f = gdbm_open;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gdbm_open=yes"
 else
@@ -19151,7 +19189,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for gdbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:19155: checking for gdbm_open in -lgdbm" >&5
+echo "configure:19193: checking for gdbm_open in -lgdbm" >&5
 ac_lib_var=`echo gdbm'_'gdbm_open | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19159,7 +19197,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgdbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19163 "configure"
+#line 19201 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19170,7 +19208,7 @@ int main() {
 gdbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:19174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19205,17 +19243,17 @@ echo "$ac_t""$ol_cv_lib_gdbm" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19209: checking for $ac_hdr" >&5
+echo "configure:19247: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19214 "configure"
+#line 19252 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19242,7 +19280,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:19246: checking for db" >&5
+echo "configure:19284: checking for db" >&5
 if eval "test \"\${ol_cv_gdbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
 
 if test $ol_with_ldbm_api = ndbm ; then
        echo $ac_n "checking for NDBM library""... $ac_c" 1>&6
-echo "configure:19280: checking for NDBM library" >&5
+echo "configure:19318: checking for NDBM library" >&5
 if eval "test \"\${ol_cv_lib_ndbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
        ol_LIBS="$LIBS"
        echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:19286: checking for dbm_open" >&5
+echo "configure:19324: checking for dbm_open" >&5
 if eval "test \"\${ac_cv_func_dbm_open+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19291 "configure"
+#line 19329 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -19311,7 +19349,7 @@ f = dbm_open;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -19330,7 +19368,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for dbm_open in -lndbm""... $ac_c" 1>&6
-echo "configure:19334: checking for dbm_open in -lndbm" >&5
+echo "configure:19372: checking for dbm_open in -lndbm" >&5
 ac_lib_var=`echo ndbm'_'dbm_open | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19338,7 +19376,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lndbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19342 "configure"
+#line 19380 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19349,7 +19387,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:19353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19369,7 +19407,7 @@ else
   echo "$ac_t""no" 1>&6
 
                        echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:19373: checking for dbm_open in -ldbm" >&5
+echo "configure:19411: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19377,7 +19415,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19381 "configure"
+#line 19419 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19388,7 +19426,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:19392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19425,17 +19463,17 @@ echo "$ac_t""$ol_cv_lib_ndbm" 1>&6
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19429: checking for $ac_hdr" >&5
+echo "configure:19467: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19434 "configure"
+#line 19472 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19462,7 +19500,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:19466: checking for db" >&5
+echo "configure:19504: checking for db" >&5
 if eval "test \"\${ol_cv_ndbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -19519,17 +19557,17 @@ if test $ol_enable_wrappers != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19523: checking for $ac_hdr" >&5
+echo "configure:19561: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19528 "configure"
+#line 19566 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19551,11 +19589,11 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
 EOF
  
                echo $ac_n "checking for TCP wrappers library""... $ac_c" 1>&6
-echo "configure:19555: checking for TCP wrappers library" >&5
+echo "configure:19593: checking for TCP wrappers library" >&5
                save_LIBS="$LIBS"
                LIBS="$LIBS -lwrap"
                cat > conftest.$ac_ext <<EOF
-#line 19559 "configure"
+#line 19597 "configure"
 #include "confdefs.h"
 
 #include <tcpd.h>
@@ -19570,7 +19608,7 @@ hosts_access(req)
                
 ; return 0; }
 EOF
-if { (eval echo configure:19574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""-lwrap" 1>&6
                have_wrappers=yes
@@ -19582,7 +19620,7 @@ else
   
                                LIBS="$LIBS -lnsl"
                cat > conftest.$ac_ext <<EOF
-#line 19586 "configure"
+#line 19624 "configure"
 #include "confdefs.h"
 
 #include <tcpd.h>
@@ -19597,7 +19635,7 @@ hosts_access(req)
                
 ; return 0; }
 EOF
-if { (eval echo configure:19601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""-lwrap -lnsl" 1>&6
                have_wrappers=yes
 
 if test $ol_enable_syslog != no ; then
        echo $ac_n "checking for openlog""... $ac_c" 1>&6
-echo "configure:19641: checking for openlog" >&5
+echo "configure:19679: checking for openlog" >&5
 if eval "test \"\${ac_cv_func_openlog+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19646 "configure"
+#line 19684 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openlog(); below.  */
@@ -19666,7 +19704,7 @@ f = openlog;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_openlog=yes"
 else
@@ -19695,7 +19733,7 @@ fi
 ol_link_sql=no
 if test $ol_enable_sql != no ; then
        echo $ac_n "checking for SQLDriverConnect in -liodbc""... $ac_c" 1>&6
-echo "configure:19699: checking for SQLDriverConnect in -liodbc" >&5
+echo "configure:19737: checking for SQLDriverConnect in -liodbc" >&5
 ac_lib_var=`echo iodbc'_'SQLDriverConnect | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19703,7 +19741,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-liodbc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19707 "configure"
+#line 19745 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19714,7 +19752,7 @@ int main() {
 SQLDriverConnect()
 ; return 0; }
 EOF
-if { (eval echo configure:19718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19739,7 +19777,7 @@ fi
                ol_link_sql="-liodbc"
        else
                echo $ac_n "checking for SQLDriverConnect in -lodbc""... $ac_c" 1>&6
-echo "configure:19743: checking for SQLDriverConnect in -lodbc" >&5
+echo "configure:19781: checking for SQLDriverConnect in -lodbc" >&5
 ac_lib_var=`echo odbc'_'SQLDriverConnect | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19747,7 +19785,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lodbc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19751 "configure"
+#line 19789 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19758,7 +19796,7 @@ int main() {
 SQLDriverConnect()
 ; return 0; }
 EOF
-if { (eval echo configure:19762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19797,17 +19835,17 @@ for ac_hdr in termcap.h ncurses.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19801: checking for $ac_hdr" >&5
+echo "configure:19839: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19806 "configure"
+#line 19844 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19836,7 +19874,7 @@ done
 
 if test $ol_link_termcap = no ; then
        echo $ac_n "checking for tputs in -ltermcap""... $ac_c" 1>&6
-echo "configure:19840: checking for tputs in -ltermcap" >&5
+echo "configure:19878: checking for tputs in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tputs | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19844,7 +19882,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ltermcap  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19848 "configure"
+#line 19886 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19855,7 +19893,7 @@ int main() {
 tputs()
 ; return 0; }
 EOF
-if { (eval echo configure:19859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19888,7 +19926,7 @@ fi
 
 if test $ol_link_termcap = no ; then
        echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6
-echo "configure:19892: checking for initscr in -lncurses" >&5
+echo "configure:19930: checking for initscr in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -19896,7 +19934,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19900 "configure"
+#line 19938 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -19907,7 +19945,7 @@ int main() {
 initscr()
 ; return 0; }
 EOF
-if { (eval echo configure:19911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -19953,17 +19991,17 @@ if test $ol_with_cyrus_sasl != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:19957: checking for $ac_hdr" >&5
+echo "configure:19995: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 19962 "configure"
+#line 20000 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19967: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20005: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -19992,7 +20030,7 @@ done
 
        if test $ac_cv_header_sasl_sasl_h = yes -o $ac_cv_header_sasl_h = yes; then
                echo $ac_n "checking for sasl_client_init in -lsasl2""... $ac_c" 1>&6
-echo "configure:19996: checking for sasl_client_init in -lsasl2" >&5
+echo "configure:20034: checking for sasl_client_init in -lsasl2" >&5
 ac_lib_var=`echo sasl2'_'sasl_client_init | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -20000,7 +20038,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl2  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20004 "configure"
+#line 20042 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -20011,7 +20049,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:20015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -20030,7 +20068,7 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for sasl_client_init in -lsasl""... $ac_c" 1>&6
-echo "configure:20034: checking for sasl_client_init in -lsasl" >&5
+echo "configure:20072: checking for sasl_client_init in -lsasl" >&5
 ac_lib_var=`echo sasl'_'sasl_client_init | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -20038,7 +20076,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20042 "configure"
+#line 20080 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -20049,7 +20087,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:20053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
                fi
        else
                echo $ac_n "checking Cyrus SASL library version""... $ac_c" 1>&6
-echo "configure:20089: checking Cyrus SASL library version" >&5
+echo "configure:20127: checking Cyrus SASL library version" >&5
 if eval "test \"\${ol_cv_sasl_compat+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 20095 "configure"
+#line 20133 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SASL_SASL_H
@@ -20138,6 +20176,62 @@ EOF
                if test $ol_enable_spasswd != no ; then
                        ol_link_spasswd=yes
                fi
+
+               ac_save_LIBS="$LIBS"
+               LIBS="$LIBS $ol_link_sasl"
+               echo $ac_n "checking for sasl_version""... $ac_c" 1>&6
+echo "configure:20184: checking for sasl_version" >&5
+if eval "test \"\${ac_cv_func_sasl_version+set}\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 20189 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char sasl_version(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char sasl_version();
+char (*f)();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_sasl_version) || defined (__stub___sasl_version)
+choke me
+#else
+f = sasl_version;
+#endif
+
+; return 0; }
+EOF
+if { (eval echo configure:20213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_sasl_version=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_sasl_version=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'sasl_version`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_SASL_VERSION 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+               LIBS="$ac_save_LIBS"
        fi
 
 else
@@ -20174,13 +20268,13 @@ if test $ol_with_fetch != no ; then
        ol_LIBS=$LIBS
 LIBS="-lfetch -lcom_err $LIBS"
 echo $ac_n "checking fetch(3) library""... $ac_c" 1>&6
-echo "configure:20178: checking fetch(3) library" >&5
+echo "configure:20272: checking fetch(3) library" >&5
 if eval "test \"\${ol_cv_lib_fetch+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 20184 "configure"
+#line 20278 "configure"
 #include "confdefs.h"
 
 #include <sys/param.h>
@@ -20190,7 +20284,7 @@ int main() {
 struct url *u = fetchParseURL("file:///"); 
 ; return 0; }
 EOF
-if { (eval echo configure:20194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_lib_fetch=yes
 else
@@ -20228,17 +20322,17 @@ if test $ol_with_readline != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:20232: checking for $ac_hdr" >&5
+echo "configure:20326: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20237 "configure"
+#line 20331 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -20269,7 +20363,7 @@ done
                save_LIBS="$LIBS"
                LIBS="$TERMCAP_LIBS $LIBS"
                echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6
-echo "configure:20273: checking for readline in -lreadline" >&5
+echo "configure:20367: checking for readline in -lreadline" >&5
 ac_lib_var=`echo readline'_'readline | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -20277,7 +20371,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lreadline  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20281 "configure"
+#line 20375 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -20288,7 +20382,7 @@ int main() {
 readline()
 ; return 0; }
 EOF
-if { (eval echo configure:20292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test $ol_enable_crypt != no ; then
        echo $ac_n "checking for crypt""... $ac_c" 1>&6
-echo "configure:20334: checking for crypt" >&5
+echo "configure:20428: checking for crypt" >&5
 if eval "test \"\${ac_cv_func_crypt+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20339 "configure"
+#line 20433 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char crypt(); below.  */
@@ -20359,7 +20453,7 @@ f = crypt;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_crypt=yes"
 else
@@ -20378,7 +20472,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:20382: checking for crypt in -lcrypt" >&5
+echo "configure:20476: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -20386,7 +20480,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20390 "configure"
+#line 20484 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -20397,7 +20491,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:20401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test $ol_enable_proctitle != no ; then
        echo $ac_n "checking for setproctitle""... $ac_c" 1>&6
-echo "configure:20444: checking for setproctitle" >&5
+echo "configure:20538: checking for setproctitle" >&5
 if eval "test \"\${ac_cv_func_setproctitle+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20449 "configure"
+#line 20543 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char setproctitle(); below.  */
@@ -20469,7 +20563,7 @@ f = setproctitle;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_setproctitle=yes"
 else
@@ -20488,7 +20582,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for setproctitle in -lutil""... $ac_c" 1>&6
-echo "configure:20492: checking for setproctitle in -lutil" >&5
+echo "configure:20586: checking for setproctitle in -lutil" >&5
 ac_lib_var=`echo util'_'setproctitle | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -20496,7 +20590,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lutil  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20500 "configure"
+#line 20594 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -20507,7 +20601,7 @@ int main() {
 setproctitle()
 ; return 0; }
 EOF
-if { (eval echo configure:20511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -20547,17 +20641,17 @@ if test $ol_enable_slp != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:20551: checking for $ac_hdr" >&5
+echo "configure:20645: checking for $ac_hdr" >&5
 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20556 "configure"
+#line 20650 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20561: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -20586,7 +20680,7 @@ done
 
        if test $ac_cv_header_slp_h = yes ; then
                echo $ac_n "checking for SLPOpen in -lslp""... $ac_c" 1>&6
-echo "configure:20590: checking for SLPOpen in -lslp" >&5
+echo "configure:20684: checking for SLPOpen in -lslp" >&5
 ac_lib_var=`echo slp'_'SLPOpen | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -20594,7 +20688,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lslp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20598 "configure"
+#line 20692 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -20605,7 +20699,7 @@ int main() {
 SLPOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:20609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -20640,12 +20734,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:20644: checking for ANSI C header files" >&5
+echo "configure:20738: checking for ANSI C header files" >&5
 if eval "test \"\${ac_cv_header_stdc+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20649 "configure"
+#line 20743 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -20653,7 +20747,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20657: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -20670,7 +20764,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 20674 "configure"
+#line 20768 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -20688,7 +20782,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 20692 "configure"
+#line 20786 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -20709,7 +20803,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 20713 "configure"
+#line 20807 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #if ((' ' & 0x0FF) == 0x020)
@@ -20727,7 +20821,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:20731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:20825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -20751,12 +20845,12 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:20755: checking for mode_t" >&5
+echo "configure:20849: checking for mode_t" >&5
 if eval "test \"\${ac_cv_type_mode_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20760 "configure"
+#line 20854 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20787,12 +20881,12 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:20791: checking for off_t" >&5
+echo "configure:20885: checking for off_t" >&5
 if eval "test \"\${ac_cv_type_off_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20796 "configure"
+#line 20890 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20823,12 +20917,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:20827: checking for pid_t" >&5
+echo "configure:20921: checking for pid_t" >&5
 if eval "test \"\${ac_cv_type_pid_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20832 "configure"
+#line 20926 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -20859,19 +20953,19 @@ EOF
 fi
 
 echo $ac_n "checking for ptrdiff_t""... $ac_c" 1>&6
-echo "configure:20863: checking for ptrdiff_t" >&5
+echo "configure:20957: checking for ptrdiff_t" >&5
 if eval "test \"\${am_cv_type_ptrdiff_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20868 "configure"
+#line 20962 "configure"
 #include "confdefs.h"
 #include <stddef.h>
 int main() {
 ptrdiff_t p
 ; return 0; }
 EOF
-if { (eval echo configure:20875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:20969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_type_ptrdiff_t=yes
 else
@@ -20892,12 +20986,12 @@ EOF
    fi
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:20896: checking return type of signal handlers" >&5
+echo "configure:20990: checking return type of signal handlers" >&5
 if eval "test \"\${ac_cv_type_signal+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20901 "configure"
+#line 20995 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -20914,7 +21008,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:20918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -20933,12 +21027,12 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:20937: checking for size_t" >&5
+echo "configure:21031: checking for size_t" >&5
 if eval "test \"\${ac_cv_type_size_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20942 "configure"
+#line 21036 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:20974: checking for ssize_t" >&5
+echo "configure:21068: checking for ssize_t" >&5
 if eval "test \"\${ac_cv_type_ssize_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 20979 "configure"
+#line 21073 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -21006,12 +21100,12 @@ EOF
 fi
 
 echo $ac_n "checking for caddr_t""... $ac_c" 1>&6
-echo "configure:21010: checking for caddr_t" >&5
+echo "configure:21104: checking for caddr_t" >&5
 if eval "test \"\${ac_cv_type_caddr_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21015 "configure"
+#line 21109 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:21047: checking for socklen_t" >&5
+echo "configure:21141: checking for socklen_t" >&5
 if eval "test \"\${ol_cv_type_socklen_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21052 "configure"
+#line 21146 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -21062,7 +21156,7 @@ int main() {
 socklen_t len;
 ; return 0; }
 EOF
-if { (eval echo configure:21066: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_socklen_t=yes
 else
@@ -21083,12 +21177,12 @@ EOF
   fi
  
 echo $ac_n "checking for member st_blksize in aggregate type struct stat""... $ac_c" 1>&6
-echo "configure:21087: checking for member st_blksize in aggregate type struct stat" >&5
+echo "configure:21181: checking for member st_blksize in aggregate type struct stat" >&5
 if eval "test \"\${ac_cv_c_struct_member_st_blksize+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21092 "configure"
+#line 21186 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -21096,7 +21190,7 @@ int main() {
 struct stat foo; foo.st_blksize;
 ; return 0; }
 EOF
-if { (eval echo configure:21100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21194: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_struct_member_st_blksize=yes
 else
@@ -21118,12 +21212,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:21122: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:21216: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"\${ac_cv_header_time+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21127 "configure"
+#line 21221 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -21132,7 +21226,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:21136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -21153,12 +21247,12 @@ EOF
 fi
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:21157: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:21251: checking whether struct tm is in sys/time.h or time.h" >&5
 if eval "test \"\${ac_cv_struct_tm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21162 "configure"
+#line 21256 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -21166,7 +21260,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:21170: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -21187,12 +21281,12 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:21191: checking for uid_t in sys/types.h" >&5
+echo "configure:21285: checking for uid_t in sys/types.h" >&5
 if eval "test \"\${ac_cv_type_uid_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21196 "configure"
+#line 21290 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -21221,19 +21315,19 @@ EOF
 fi
 
 echo $ac_n "checking for sig_atomic_t""... $ac_c" 1>&6
-echo "configure:21225: checking for sig_atomic_t" >&5
+echo "configure:21319: checking for sig_atomic_t" >&5
 if eval "test \"\${ol_cv_type_sig_atomic_t+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21230 "configure"
+#line 21324 "configure"
 #include "confdefs.h"
 #include <signal.h>
 int main() {
 sig_atomic_t atomic;
 ; return 0; }
 EOF
-if { (eval echo configure:21237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_sig_atomic_t=yes
 else
@@ -21257,13 +21351,13 @@ EOF
 
 # test for pw_gecos in struct passwd
 echo $ac_n "checking struct passwd for pw_gecos""... $ac_c" 1>&6
-echo "configure:21261: checking struct passwd for pw_gecos" >&5
+echo "configure:21355: checking struct passwd for pw_gecos" >&5
 if eval "test \"\${ol_cv_struct_passwd_pw_gecos+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 21267 "configure"
+#line 21361 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
@@ -21273,7 +21367,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:21277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_struct_passwd_pw_gecos=yes
 else
 
 # test for pw_passwd in struct passwd
 echo $ac_n "checking struct passwd for pw_passwd""... $ac_c" 1>&6
-echo "configure:21299: checking struct passwd for pw_passwd" >&5
+echo "configure:21393: checking struct passwd for pw_passwd" >&5
 if eval "test \"\${ol_cv_struct_passwd_pw_passwd+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 21305 "configure"
+#line 21399 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
@@ -21311,7 +21405,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:21315: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_struct_passwd_pw_passwd=yes
 else
@@ -21333,7 +21427,7 @@ fi
 
 
 echo $ac_n "checking if toupper() requires islower()""... $ac_c" 1>&6
-echo "configure:21337: checking if toupper() requires islower()" >&5
+echo "configure:21431: checking if toupper() requires islower()" >&5
 if eval "test \"\${ol_cv_c_upper_lower+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -21342,7 +21436,7 @@ else
   ol_cv_c_upper_lower=safe
 else
   cat > conftest.$ac_ext <<EOF
-#line 21346 "configure"
+#line 21440 "configure"
 #include "confdefs.h"
 
 #include <ctype.h>
@@ -21354,7 +21448,7 @@ main()
                exit(1);
 }
 EOF
-if { (eval echo configure:21358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ol_cv_c_upper_lower=no
 else
@@ -21377,12 +21471,12 @@ EOF
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:21381: checking for working const" >&5
+echo "configure:21475: checking for working const" >&5
 if eval "test \"\${ac_cv_c_const+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21386 "configure"
+#line 21480 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -21431,7 +21525,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -21452,12 +21546,12 @@ EOF
 fi
 
 echo $ac_n "checking if compiler understands volatile""... $ac_c" 1>&6
-echo "configure:21456: checking if compiler understands volatile" >&5
+echo "configure:21550: checking if compiler understands volatile" >&5
 if eval "test \"\${ol_cv_c_volatile+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21461 "configure"
+#line 21555 "configure"
 #include "confdefs.h"
 int x, y, z;
 int main() {
@@ -21466,7 +21560,7 @@ volatile int a; int * volatile b = x ? &y : &z;
       *b = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:21470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21564: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_c_volatile=yes
 else
@@ -21496,14 +21590,14 @@ EOF
 
 else
        echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:21500: checking whether byte ordering is bigendian" >&5
+echo "configure:21594: checking whether byte ordering is bigendian" >&5
 if eval "test \"\${ac_cv_c_bigendian+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 21507 "configure"
+#line 21601 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -21514,11 +21608,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:21518: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 21522 "configure"
+#line 21616 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -21529,7 +21623,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:21533: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21627: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -21549,7 +21643,7 @@ if test "$cross_compiling" = yes; then
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 21553 "configure"
+#line 21647 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -21562,7 +21656,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:21566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_bigendian=no
 else
 fi
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:21592: checking size of short" >&5 
+echo "configure:21686: checking size of short" >&5 
 if eval "test \"\${ac_cv_sizeof_short+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence. 
   cat > conftest.$ac_ext <<EOF
-#line 21598 "configure"
+#line 21692 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -21604,7 +21698,7 @@ int main() {
 switch (0) case 0: case (sizeof (short) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:21608: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_short=$ac_size
 else
@@ -21627,13 +21721,13 @@ EOF
  
  
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:21631: checking size of int" >&5 
+echo "configure:21725: checking size of int" >&5 
 if eval "test \"\${ac_cv_sizeof_int+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence. 
   cat > conftest.$ac_ext <<EOF
-#line 21637 "configure"
+#line 21731 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -21643,7 +21737,7 @@ int main() {
 switch (0) case 0: case (sizeof (int) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:21647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_int=$ac_size
 else
@@ -21666,13 +21760,13 @@ EOF
  
  
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:21670: checking size of long" >&5 
+echo "configure:21764: checking size of long" >&5 
 if eval "test \"\${ac_cv_sizeof_long+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   for ac_size in 4 8 1 2 16  ; do # List sizes in rough order of prevalence. 
   cat > conftest.$ac_ext <<EOF
-#line 21676 "configure"
+#line 21770 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -21682,7 +21776,7 @@ int main() {
 switch (0) case 0: case (sizeof (long) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:21686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_long=$ac_size
 else
@@ -21733,7 +21827,7 @@ EOF
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:21737: checking for 8-bit clean memcmp" >&5
+echo "configure:21831: checking for 8-bit clean memcmp" >&5
 if eval "test \"\${ac_cv_func_memcmp_clean+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -21741,7 +21835,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 21745 "configure"
+#line 21839 "configure"
 #include "confdefs.h"
 
 main()
@@ -21751,7 +21845,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:21755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -21769,12 +21863,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking for strftime""... $ac_c" 1>&6
-echo "configure:21773: checking for strftime" >&5
+echo "configure:21867: checking for strftime" >&5
 if eval "test \"\${ac_cv_func_strftime+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21778 "configure"
+#line 21872 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char strftime(); below.  */
@@ -21798,7 +21892,7 @@ f = strftime;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_strftime=yes"
 else
@@ -21820,7 +21914,7 @@ else
   echo "$ac_t""no" 1>&6
 # strftime is in -lintl on SCO UNIX.
 echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
-echo "configure:21824: checking for strftime in -lintl" >&5
+echo "configure:21918: checking for strftime in -lintl" >&5
 ac_lib_var=`echo intl'_'strftime | sed 'y%./+-:%__p__%'`
 if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -21828,7 +21922,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 21832 "configure"
+#line 21926 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -21839,7 +21933,7 @@ int main() {
 strftime()
 ; return 0; }
 EOF
-if { (eval echo configure:21843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 
 echo $ac_n "checking for inet_aton()""... $ac_c" 1>&6
-echo "configure:21871: checking for inet_aton()" >&5
+echo "configure:21965: checking for inet_aton()" >&5
 if eval "test \"\${ol_cv_func_inet_aton+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21876 "configure"
+#line 21970 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -21894,7 +21988,7 @@ struct in_addr in;
 int rc = inet_aton( "255.255.255.255", &in );
 ; return 0; }
 EOF
-if { (eval echo configure:21898: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_func_inet_aton=yes
 else
@@ -21916,12 +22010,12 @@ EOF
  
 
 echo $ac_n "checking for _spawnlp""... $ac_c" 1>&6
-echo "configure:21920: checking for _spawnlp" >&5
+echo "configure:22014: checking for _spawnlp" >&5
 if eval "test \"\${ac_cv_func__spawnlp+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21925 "configure"
+#line 22019 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _spawnlp(); below.  */
@@ -21945,7 +22039,7 @@ f = _spawnlp;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21949: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__spawnlp=yes"
 else
 
 
 echo $ac_n "checking for _snprintf""... $ac_c" 1>&6
-echo "configure:21973: checking for _snprintf" >&5
+echo "configure:22067: checking for _snprintf" >&5
 if eval "test \"\${ac_cv_func__snprintf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 21978 "configure"
+#line 22072 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _snprintf(); below.  */
@@ -21998,7 +22092,7 @@ f = _snprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__snprintf=yes"
 else
 
 
 echo $ac_n "checking for _vsnprintf""... $ac_c" 1>&6
-echo "configure:22028: checking for _vsnprintf" >&5
+echo "configure:22122: checking for _vsnprintf" >&5
 if eval "test \"\${ac_cv_func__vsnprintf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 22033 "configure"
+#line 22127 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _vsnprintf(); below.  */
@@ -22053,7 +22147,7 @@ f = _vsnprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__vsnprintf=yes"
 else
 
 
 echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:22083: checking for vprintf" >&5
+echo "configure:22177: checking for vprintf" >&5
 if eval "test \"\${ac_cv_func_vprintf+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 22088 "configure"
+#line 22182 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -22108,7 +22202,7 @@ f = vprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_vprintf=yes"
 else
 
 if test "$ac_cv_func_vprintf" != yes; then
 echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:22136: checking for _doprnt" >&5
+echo "configure:22230: checking for _doprnt" >&5
 if eval "test \"\${ac_cv_func__doprnt+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 22141 "configure"
+#line 22235 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -22161,7 +22255,7 @@ f = _doprnt;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func__doprnt=yes"
 else
@@ -22190,12 +22284,12 @@ if test $ac_cv_func_vprintf = yes ; then
                for ac_func in vsnprintf vsprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22194: checking for $ac_func" >&5
+echo "configure:22288: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 22199 "configure"
+#line 22293 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -22219,7 +22313,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -22253,6 +22347,7 @@ for ac_func in \
        endpwent                \
        fcntl                   \
        flock                   \
+       fstat                   \
        getdtablesize   \
        getgrgid                \
        gethostname             \
@@ -22301,12 +22396,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22305: checking for $ac_func" >&5
+echo "configure:22400: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 22310 "configure"
+#line 22405 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -22330,7 +22425,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -22358,12 +22453,12 @@ done
 for ac_func in getopt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22362: checking for $ac_func" >&5
+echo "configure:22457: checking for $ac_func" >&5
 if eval "test \"\${ac_cv_func_$ac_func+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 22367 "configure"
+#line 22462 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -22387,7 +22482,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 
 # Check Configuration
 echo $ac_n "checking declaration of sys_errlist""... $ac_c" 1>&6
-echo "configure:22424: checking declaration of sys_errlist" >&5
+echo "configure:22519: checking declaration of sys_errlist" >&5
 if eval "test \"\${ol_cv_dcl_sys_errlist+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 22430 "configure"
+#line 22525 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -22439,7 +22534,7 @@ int main() {
 char *c = (char *) *sys_errlist
 ; return 0; }
 EOF
-if { (eval echo configure:22443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_dcl_sys_errlist=yes
        ol_cv_have_sys_errlist=yes
@@ -22462,20 +22557,20 @@ EOF
 
 
        echo $ac_n "checking existence of sys_errlist""... $ac_c" 1>&6
-echo "configure:22466: checking existence of sys_errlist" >&5
+echo "configure:22561: checking existence of sys_errlist" >&5
 if eval "test \"\${ol_cv_have_sys_errlist+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
                cat > conftest.$ac_ext <<EOF
-#line 22472 "configure"
+#line 22567 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 char *c = (char *) *sys_errlist
 ; return 0; }
 EOF
-if { (eval echo configure:22479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_have_sys_errlist=yes
 else
@@ -22671,7 +22766,6 @@ EOF
 
        BUILD_SLAPD=yes
        BUILD_LDBM=yes
-       LDBM_LIB="-lldbm"
        if test "$ol_with_ldbm_module" != static ; then
                cat >> confdefs.h <<\EOF
 #define SLAPD_LDBM_DYNAMIC 1
@@ -22915,8 +23009,6 @@ fi
 
 
 
-
-
 
 
 
@@ -23135,7 +23227,6 @@ s%@BUILD_PERL_DYNAMIC@%$BUILD_PERL_DYNAMIC%g
 s%@BUILD_SHELL_DYNAMIC@%$BUILD_SHELL_DYNAMIC%g
 s%@BUILD_SQL_DYNAMIC@%$BUILD_SQL_DYNAMIC%g
 s%@BUILD_SLURPD@%$BUILD_SLURPD%g
-s%@LDBM_LIB@%$LDBM_LIB%g
 s%@LDAP_LIBS@%$LDAP_LIBS%g
 s%@LDIF_LIBS@%$LDIF_LIBS%g
 s%@SLAPD_LIBS@%$SLAPD_LIBS%g
index e2f773de72690e08526b22350b71d4cfafb53ec6..e58d85c3d3b96908947d993681a7499a53a7b35a 100644 (file)
@@ -491,7 +491,6 @@ dnl ----------------------------------------------------------------
 dnl Initialize vars
 LDAP_LIBS=
 LDIF_LIBS=
-LDBM_LIB=
 LDBM_LIBS=
 LTHREAD_LIBS=
 LUTIL_LIBS=
@@ -1004,10 +1003,25 @@ elif test $ol_enable_ipv6 != no ; then
 #                      endif
                ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
 
-       if test $ol_cv_inet6_addrstrlen = yes ; then
+
+       AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
+               AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+],[
+                       struct sockaddr_storage ss;
+],                     [ol_cv_struct_sockaddr_storage=yes],
+                       [ol_cv_struct_sockaddr_storage=no])])
+
+       if test $ol_cv_inet6_addrstrlen = yes \
+               -a $ol_cv_struct_sockaddr_storage = yes ; then
                ol_link_ipv6=yes
-       elif test $ol_enable_ipv6 = yes ; then
+       elif test $ol_enable_ipv6 = yes \
+                       -a $ol_cv_inet6_addrstrlen = no ; then
                AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
+       elif test $ol_enable_ipv6 = yes \
+                       -a $ol_cv_struct_sockaddr_storage = no ; then
+               AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
        fi
 fi
 
@@ -2149,6 +2163,12 @@ if test $ol_with_cyrus_sasl != no ; then
                if test $ol_enable_spasswd != no ; then
                        ol_link_spasswd=yes
                fi
+
+               ac_save_LIBS="$LIBS"
+               LIBS="$LIBS $ol_link_sasl"
+               AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
+                       [define if your SASL library has sasl_version()])])
+               LIBS="$ac_save_LIBS"
        fi
 
 else
@@ -2365,6 +2385,7 @@ AC_CHECK_FUNCS(           \
        endpwent                \
        fcntl                   \
        flock                   \
+       fstat                   \
        getdtablesize   \
        getgrgid                \
        gethostname             \
@@ -2534,7 +2555,6 @@ if test "$ol_link_ldbm" != no -a $ol_enable_ldbm != no; then
        AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
        BUILD_SLAPD=yes
        BUILD_LDBM=yes
-       LDBM_LIB="-lldbm"
        if test "$ol_with_ldbm_module" != static ; then
                AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
                        [define to support dynamic LDBM backend])
@@ -2712,8 +2732,6 @@ AC_SUBST(BUILD_SLAPD)
   AC_SUBST(BUILD_SQL_DYNAMIC)
 AC_SUBST(BUILD_SLURPD)
 
-AC_SUBST(LDBM_LIB)
-
 AC_SUBST(LDAP_LIBS)
 AC_SUBST(LDIF_LIBS)
 AC_SUBST(SLAPD_LIBS)
diff --git a/include/ldap_pvt_thread.h b/include/ldap_pvt_thread.h
new file mode 100644 (file)
index 0000000..4989cb4
--- /dev/null
@@ -0,0 +1,190 @@
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.  A copy of this license is available at
+ * http://www.OpenLDAP.org/license.html or in file LICENSE in the
+ * top-level directory of the distribution.
+ */
+/* ldap_pvt_thread.h - ldap threads header file NG */
+
+#ifndef _LDAP_PVT_THREAD_H
+#define _LDAP_PVT_THREAD_H
+
+#include "ldap_cdefs.h"
+#include "ldap_int_thread.h"
+
+LDAP_BEGIN_DECL
+
+typedef ldap_int_thread_t ldap_pvt_thread_t;
+typedef ldap_int_thread_mutex_t ldap_pvt_thread_mutex_t;
+typedef ldap_int_thread_cond_t ldap_pvt_thread_cond_t;
+
+LDAP_F( int )
+ldap_pvt_thread_initialize LDAP_P(( void ));
+
+LDAP_F( int )
+ldap_pvt_thread_destroy LDAP_P(( void ));
+
+LDAP_F( unsigned int )
+ldap_pvt_thread_sleep LDAP_P(( unsigned int s ));
+
+LDAP_F( int )
+ldap_pvt_thread_get_concurrency LDAP_P(( void ));
+
+LDAP_F( int )
+ldap_pvt_thread_set_concurrency LDAP_P(( int ));
+
+#define LDAP_PVT_THREAD_CREATE_JOINABLE 0
+#define LDAP_PVT_THREAD_CREATE_DETACHED 1
+
+#ifndef LDAP_PVT_THREAD_STACK_SIZE
+       /* LARGE stack */
+#define LDAP_PVT_THREAD_STACK_SIZE     (16*1024*1024)
+#endif
+
+LDAP_F( int )
+ldap_pvt_thread_create LDAP_P((
+       ldap_pvt_thread_t * thread,
+       int     detach,
+       void *(*start_routine)( void * ),
+       void *arg));
+
+LDAP_F( void )
+ldap_pvt_thread_exit LDAP_P(( void *retval ));
+
+LDAP_F( int )
+ldap_pvt_thread_join LDAP_P(( ldap_pvt_thread_t thread, void **status ));
+
+LDAP_F( int )
+ldap_pvt_thread_kill LDAP_P(( ldap_pvt_thread_t thread, int signo ));
+
+LDAP_F( int )
+ldap_pvt_thread_yield LDAP_P(( void ));
+
+LDAP_F( int )
+ldap_pvt_thread_cond_init LDAP_P(( ldap_pvt_thread_cond_t *cond ));
+
+LDAP_F( int )
+ldap_pvt_thread_cond_destroy LDAP_P(( ldap_pvt_thread_cond_t *cond ));
+
+LDAP_F( int )
+ldap_pvt_thread_cond_signal LDAP_P(( ldap_pvt_thread_cond_t *cond ));
+
+LDAP_F( int )
+ldap_pvt_thread_cond_broadcast LDAP_P(( ldap_pvt_thread_cond_t *cond ));
+
+LDAP_F( int )
+ldap_pvt_thread_cond_wait LDAP_P((
+       ldap_pvt_thread_cond_t *cond,
+       ldap_pvt_thread_mutex_t *mutex ));
+
+LDAP_F( int )
+ldap_pvt_thread_mutex_init LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
+
+LDAP_F( int )
+ldap_pvt_thread_mutex_destroy LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
+
+LDAP_F( int )
+ldap_pvt_thread_mutex_lock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
+
+LDAP_F( int )
+ldap_pvt_thread_mutex_trylock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
+
+LDAP_F( int )
+ldap_pvt_thread_mutex_unlock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
+
+#ifndef LDAP_THREAD_HAVE_RDWR
+typedef struct ldap_int_thread_rdwr_s * ldap_pvt_thread_rdwr_t;
+#endif
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_init LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_destroy LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_rlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_rtrylock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_runlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_wlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_wtrylock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_wunlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+#ifdef LDAP_DEBUG
+LDAP_F( int )
+ldap_pvt_thread_rdwr_readers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_writers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+
+LDAP_F( int )
+ldap_pvt_thread_rdwr_active LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+#endif /* LDAP_DEBUG */
+
+#define LDAP_PVT_THREAD_EINVAL EINVAL
+#define LDAP_PVT_THREAD_EBUSY EINVAL
+
+typedef ldap_int_thread_pool_t ldap_pvt_thread_pool_t;
+
+typedef void * (ldap_pvt_thread_start_t) LDAP_P((void *ctx, void *arg));
+typedef void (ldap_pvt_thread_pool_keyfree_t) LDAP_P((void *key, void *data));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_init LDAP_P((
+       ldap_pvt_thread_pool_t *pool_out,
+       int max_threads,
+       int max_pending ));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_submit LDAP_P((
+       ldap_pvt_thread_pool_t *pool,
+       ldap_pvt_thread_start_t *start,
+       void *arg ));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_maxthreads LDAP_P((
+       ldap_pvt_thread_pool_t *pool,
+       int max_threads ));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_backload LDAP_P((
+       ldap_pvt_thread_pool_t *pool ));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_destroy LDAP_P((
+       ldap_pvt_thread_pool_t *pool,
+       int run_pending ));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_getkey LDAP_P((
+       void *ctx,
+       void *key,
+       void **data,
+       ldap_pvt_thread_pool_keyfree_t **kfree ));
+
+LDAP_F( int )
+ldap_pvt_thread_pool_setkey LDAP_P((
+       void *ctx,
+       void *key,
+       void *data,
+       ldap_pvt_thread_pool_keyfree_t *kfree ));
+
+
+LDAP_END_DECL
+
+#endif /* _LDAP_THREAD_H */
index f3a5f4164ab128a6300020dd7f90e2397875125e..d60da2b6b512e0354f260be8fb25cfb0fc9aa3b2 100644 (file)
 /* Define if you have the flock function.  */
 #undef HAVE_FLOCK
 
+/* Define if you have the fstat function.  */
+#undef HAVE_FSTAT
+
 /* Define if you have the gai_strerror function.  */
 #undef HAVE_GAI_STRERROR
 
 /* define if you have Cyrus SASL */
 #undef HAVE_CYRUS_SASL
 
+/* define if your SASL library has sasl_version() */
+#undef HAVE_SASL_VERSION
+
 /* set to urandom device */
 #undef URANDOM_DEVICE
 
index 8715d81a97f66f2b8be15467c35b90b0f8b6c8af..ae2c2ae107f14ba422ccba71dbc406ec14223c47 100644 (file)
 /* Define if you have the flock function.  */
 /* #undef HAVE_FLOCK */
 
+/* Define if you have the fstat function.  */
+/* #undef HAVE_FSTAT */
+
 /* Define if you have the gai_strerror function.  */
 /* #undef HAVE_GAI_STRERROR */
 
diff --git a/libraries/libldap_r/thr_stub.c b/libraries/libldap_r/thr_stub.c
new file mode 100644 (file)
index 0000000..f884558
--- /dev/null
@@ -0,0 +1,194 @@
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License.  A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+ */
+
+/* thr_stub.c - stubs for the threads */
+
+#include "portable.h"
+
+#if defined( NO_THREADS )
+
+#include "ldap_pvt_thread.h"
+
+/***********************************************************************
+ *                                                                     *
+ * no threads package defined for this system - fake ok returns from   *
+ * all threads routines (making it single-threaded).                   *
+ *                                                                     *
+ ***********************************************************************/
+
+int
+ldap_int_thread_initialize( void )
+{
+       return 0;
+}
+
+int
+ldap_int_thread_destroy( void )
+{
+       return 0;
+}
+
+static void* ldap_int_status = NULL;
+
+int 
+ldap_pvt_thread_create( ldap_pvt_thread_t * thread, 
+       int detach,
+       void *(*start_routine)(void *),
+       void *arg)
+{
+       if( ! detach ) ldap_int_status = NULL;
+       start_routine( arg );
+       return 0;
+}
+
+void 
+ldap_pvt_thread_exit( void *retval )
+{
+       if( retval != NULL ) {
+               ldap_int_status = retval;
+       }
+       return;
+}
+
+int 
+ldap_pvt_thread_join( ldap_pvt_thread_t thread, void **status )
+{
+       if(status != NULL) *status = ldap_int_status;
+       return 0;
+}
+
+int 
+ldap_pvt_thread_kill( ldap_pvt_thread_t thread, int signo )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_yield( void )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_cond_init( ldap_pvt_thread_cond_t *cond )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_cond_destroy( ldap_pvt_thread_cond_t *cond )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_cond_signal( ldap_pvt_thread_cond_t *cond )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_cond_broadcast( ldap_pvt_thread_cond_t *cond )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_cond_wait( ldap_pvt_thread_cond_t *cond,
+                         ldap_pvt_thread_mutex_t *mutex )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_mutex_init( ldap_pvt_thread_mutex_t *mutex )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_mutex_destroy( ldap_pvt_thread_mutex_t *mutex )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_mutex_lock( ldap_pvt_thread_mutex_t *mutex )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_mutex_trylock( ldap_pvt_thread_mutex_t *mutex )
+{
+       return 0;
+}
+
+int 
+ldap_pvt_thread_mutex_unlock( ldap_pvt_thread_mutex_t *mutex )
+{
+       return 0;
+}
+
+/*
+ * NO_THREADS requires a separate tpool implementation since
+ * generic ldap_pvt_thread_pool_wrapper loops forever.
+ */
+int
+ldap_pvt_thread_pool_init (
+       ldap_pvt_thread_pool_t *pool_out,
+       int max_concurrency, int max_pending )
+{
+       *pool_out = (ldap_pvt_thread_pool_t) 0;
+       return(0);
+}
+
+int
+ldap_pvt_thread_pool_submit (
+       ldap_pvt_thread_pool_t *pool,
+       ldap_pvt_thread_start_t *start_routine, void *arg )
+{
+       (start_routine)(NULL, arg);
+       return(0);
+}
+
+int
+ldap_pvt_thread_pool_maxthreads ( ldap_pvt_thread_pool_t *tpool, int max_threads )
+{
+       return(0);
+}
+
+int
+ldap_pvt_thread_pool_backload (
+       ldap_pvt_thread_pool_t *pool )
+{
+       return(0);
+}
+
+int
+ldap_pvt_thread_pool_destroy (
+       ldap_pvt_thread_pool_t *pool, int run_pending )
+{
+       return(0);
+}
+
+int ldap_pvt_thread_pool_getkey (
+       void *ctx, void *key, void **data, ldap_pvt_thread_pool_keyfree_t **kfree )
+{
+       return(0);
+}
+
+int ldap_pvt_thread_pool_setkey (
+       void *ctx, void *key, void *data, ldap_pvt_thread_pool_keyfree_t *kfree )
+{
+       return(0);
+}
+#endif /* NO_THREADS */
index d48a8e9370da48f0a852abc627dc43eb71fc7f96..4665f35a51a7cfa6b9be82ef94c9b4c06032f5a8 100644 (file)
@@ -17,6 +17,7 @@
 #include <ac/stdlib.h>
 #include <ac/string.h>
 #include <ac/time.h>
+#include <ac/errno.h>
 
 #include "ldap-int.h"
 #include "ldap_pvt_thread.h"
@@ -30,13 +31,25 @@ enum ldap_int_thread_pool_state {
        LDAP_INT_THREAD_POOL_STOPPING
 };
 
+typedef struct ldap_int_thread_key_s {
+       void *ltk_key;
+       void *ltk_data;
+       ldap_pvt_thread_pool_keyfree_t *ltk_free;
+} ldap_int_thread_key_t;
+
+/* Max number of thread-specific keys we store per thread.
+ * We don't expect to use many...
+ */
+#define        MAXKEYS 32
+
 typedef struct ldap_int_thread_ctx_s {
        union {
        LDAP_STAILQ_ENTRY(ldap_int_thread_ctx_s) q;
        LDAP_SLIST_ENTRY(ldap_int_thread_ctx_s) l;
        } ltc_next;
-       void *(*ltc_start_routine)( void *);
+       ldap_pvt_thread_start_t *ltc_start_routine;
        void *ltc_arg;
+       ldap_int_thread_key_t ltc_key[MAXKEYS];
 } ldap_int_thread_ctx_t;
 
 struct ldap_int_thread_pool_s {
@@ -151,7 +164,7 @@ ldap_pvt_thread_pool_init (
 int
 ldap_pvt_thread_pool_submit (
        ldap_pvt_thread_pool_t *tpool,
-       void *(*start_routine)( void * ), void *arg )
+       ldap_pvt_thread_start_t *start_routine, void *arg )
 {
        struct ldap_int_thread_pool_s *pool;
        ldap_int_thread_ctx_t *ctx;
@@ -178,12 +191,16 @@ ldap_pvt_thread_pool_submit (
        if (ctx) {
                LDAP_SLIST_REMOVE_HEAD(&pool->ltp_free_list, ltc_next.l);
        } else {
+               int i;
                ctx = (ldap_int_thread_ctx_t *) LDAP_MALLOC(
                        sizeof(ldap_int_thread_ctx_t));
                if (ctx == NULL) {
                        ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
                        return(-1);
                }
+               for ( i=0; i<MAXKEYS; i++ ) {
+                       ctx->ltc_key[i].ltk_key = NULL;
+               }
        }
 
        ctx->ltc_start_routine = start_routine;
@@ -286,6 +303,17 @@ ldap_pvt_thread_pool_backload ( ldap_pvt_thread_pool_t *tpool )
        return(count);
 }
 
+static void ldap_int_thread_pool_keyfree( ldap_int_thread_ctx_t *ctx )
+{
+       int i;
+       for ( i=0; i<MAXKEYS && ctx->ltc_key[i].ltk_key; i++ ) {
+               if (ctx->ltc_key[i].ltk_free)
+                       ctx->ltc_key[i].ltk_free(
+                               ctx->ltc_key[i].ltk_key,
+                               ctx->ltc_key[i].ltk_data );
+       }
+}
+
 int
 ldap_pvt_thread_pool_destroy ( ldap_pvt_thread_pool_t *tpool, int run_pending )
 {
@@ -334,12 +362,14 @@ ldap_pvt_thread_pool_destroy ( ldap_pvt_thread_pool_t *tpool, int run_pending )
        while ((ctx = LDAP_STAILQ_FIRST(&pool->ltp_pending_list)) != NULL)
        {
                LDAP_STAILQ_REMOVE_HEAD(&pool->ltp_pending_list, ltc_next.q);
+               ldap_int_thread_pool_keyfree( ctx );
                LDAP_FREE(ctx);
        }
 
        while ((ctx = LDAP_SLIST_FIRST(&pool->ltp_free_list)) != NULL)
        {
                LDAP_SLIST_REMOVE_HEAD(&pool->ltp_free_list, ltc_next.l);
+               ldap_int_thread_pool_keyfree( ctx );
                LDAP_FREE(ctx);
        }
 
@@ -398,7 +428,7 @@ ldap_int_thread_pool_wrapper (
                pool->ltp_active_count++;
                ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
 
-               (ctx->ltc_start_routine)(ctx->ltc_arg);
+               ctx->ltc_start_routine(ctx, ctx->ltc_arg);
 
                ldap_pvt_thread_mutex_lock(&pool->ltp_mutex);
                LDAP_SLIST_INSERT_HEAD(&pool->ltp_free_list, ctx, ltc_next.l);
@@ -417,7 +447,51 @@ ldap_int_thread_pool_wrapper (
        pool->ltp_open_count--;
        ldap_pvt_thread_mutex_unlock(&pool->ltp_mutex);
 
+
        ldap_pvt_thread_exit(NULL);
        return(NULL);
 }
+
+int ldap_pvt_thread_pool_getkey(
+       void *xctx,
+       void *key,
+       void **data,
+       ldap_pvt_thread_pool_keyfree_t **kfree )
+{
+       ldap_int_thread_ctx_t *ctx = xctx;
+       int i;
+
+       if ( !ctx || !data ) return EINVAL;
+
+       for ( i=0; i<MAXKEYS && ctx->ltc_key[i].ltk_key; i++ ) {
+               if ( ctx->ltc_key[i].ltk_key == key ) {
+                       *data = ctx->ltc_key[i].ltk_data;
+                       if ( kfree ) *kfree = ctx->ltc_key[i].ltk_free;
+                       return 0;
+               }
+       }
+       return ENOENT;
+}
+
+int ldap_pvt_thread_pool_setkey(
+       void *xctx,
+       void *key,
+       void *data,
+       ldap_pvt_thread_pool_keyfree_t *kfree )
+{
+       ldap_int_thread_ctx_t *ctx = xctx;
+       int i;
+
+       if ( !ctx || !key ) return EINVAL;
+
+       for ( i=0; i<MAXKEYS; i++ ) {
+               if ( !ctx->ltc_key[i].ltk_key || ctx->ltc_key[i].ltk_key == key ) {
+                       ctx->ltc_key[i].ltk_key = key;
+                       ctx->ltc_key[i].ltk_data = data;
+                       ctx->ltc_key[i].ltk_free = kfree;
+                       return 0;
+               }
+       }
+       return ENOMEM;
+}
 #endif /* LDAP_HAVE_THREAD_POOL */
index 4171610221fb96c9abcd8652f955708491c3d022..0cea35b4dc5d119ba7a5f8cd12776eb820186820 100644 (file)
@@ -9,7 +9,7 @@ XSRCS=version.c
 NT_SRCS = nt_svc.c
 NT_OBJS = nt_svc.o ../../libraries/liblutil/slapdmsg.res
 
-SRCS   = main.c daemon.c connection.c search.c filter.c add.c charray.c \
+SRCS   = main.c daemon.c connection.c search.c filter.c add.c \
                attr.c entry.c config.c backend.c result.c operation.c \
                dn.c compare.c modify.c delete.c modrdn.c ch_malloc.c \
                value.c ava.c bind.c unbind.c abandon.c filterentry.c \
@@ -22,7 +22,7 @@ SRCS  = main.c daemon.c connection.c search.c filter.c add.c charray.c \
                limits.c backglue.c operational.c matchedValues.c \
                $(@PLAT@_SRCS)
 
-OBJS   = main.o daemon.o connection.o search.o filter.o add.o charray.o \
+OBJS   = main.o daemon.o connection.o search.o filter.o add.o \
                attr.o entry.o config.o backend.o result.o operation.o \
                dn.o compare.o modify.o delete.o modrdn.o ch_malloc.o \
                value.o ava.o bind.o unbind.o abandon.o filterentry.o \
index 3b1900fd27e947769188a58524748b8fda8e1c87..fdb4cd1b6375ef892079f9eda457a4c10066b701 100644 (file)
@@ -1389,7 +1389,7 @@ aci_set_gather (void *cookie, struct berval *name, struct berval *attr)
                const char *text;
                AttributeDescription *desc = NULL;
                if (slap_bv2ad(attr, &desc, &text) == LDAP_SUCCESS) {
-                       backend_attribute(cp->be, NULL, NULL,
+                       backend_attribute(cp->be, NULL, cp->op,
                                cp->e, &ndn, desc, &bvals);
                }
                free(ndn.bv_val);
@@ -1438,7 +1438,7 @@ aci_match_set (
                        if ( dnNormalize2(NULL, &subjdn, &ndn) == LDAP_SUCCESS
                                && slap_bv2ad(&setat, &desc, &text) == LDAP_SUCCESS )
                        {
-                               backend_attribute(be, NULL, NULL, e,
+                               backend_attribute(be, NULL, op, e,
                                        &ndn, desc, &bvals);
                                if ( bvals != NULL ) {
                                        if ( bvals[0].bv_val != NULL ) {
index 39c2594189c7ab44906db93556891c6942e66392..ab9c56511ed0052bc06f44e07aa350d29230f32a 100644 (file)
@@ -133,6 +133,31 @@ attr_merge(
        return( value_add( &(*a)->a_vals, vals ) );
 }
 
+int
+attr_merge_one(
+       Entry           *e,
+       AttributeDescription *desc,
+       struct berval   *val )
+{
+       Attribute       **a;
+
+       for ( a = &e->e_attrs; *a != NULL; a = &(*a)->a_next ) {
+               if ( ad_cmp( (*a)->a_desc, desc ) == 0 ) {
+                       break;
+               }
+       }
+
+       if ( *a == NULL ) {
+               *a = (Attribute *) ch_malloc( sizeof(Attribute) );
+               (*a)->a_desc = desc;
+               (*a)->a_vals = NULL;
+               (*a)->a_next = NULL;
+               (*a)->a_flags = 0;
+       }
+
+       return( value_add_one( &(*a)->a_vals, val ) );
+}
+
 /*
  * attrs_find - find attribute(s) by AttributeDescription
  * returns next attribute which is subtype of provided description.
index b60f82c8dedb33932c0a708859016aa4bdb86804..07bfc92cabec4f606fb32f8d4c53b8e3466a4c4e 100644 (file)
@@ -67,7 +67,7 @@ bdb_attr_index_config(
        char **attrs;
        char **indexes = NULL;
 
-       attrs = str2charray( argv[0], "," );
+       attrs = ldap_str2charray( argv[0], "," );
 
        if( attrs == NULL ) {
                fprintf( stderr, "%s: line %d: "
@@ -77,7 +77,7 @@ bdb_attr_index_config(
        }
 
        if ( argc > 1 ) {
-               indexes = str2charray( argv[1], "," );
+               indexes = ldap_str2charray( argv[1], "," );
 
                if( indexes == NULL ) {
                        fprintf( stderr, "%s: line %d: "
@@ -205,8 +205,8 @@ bdb_attr_index_config(
                }
        }
 
-       charray_free( attrs );
-       if ( indexes != NULL ) charray_free( indexes );
+       ldap_charray_free( attrs );
+       if ( indexes != NULL ) ldap_charray_free( indexes );
 
        return LDAP_SUCCESS;
 }
index 784bbc89aaa40eeffa247c368991d747d9db1dc7..18d2ab941999e43e04352a8956cc099844d17316 100644 (file)
@@ -143,6 +143,9 @@ struct bdb_op_info {
        int                     boi_err;
 };
 
+#define        DB_OPEN(db, file, name, type, flags, mode) \
+       (db)->open(db, file, name, type, flags, mode)
+
 #if DB_VERSION_MAJOR < 4
 #define LOCK_DETECT(env,f,t,a)         lock_detect(env, f, t, a)
 #define LOCK_GET(env,i,f,o,m,l)                lock_get(env, i, f, o, m, l)
@@ -153,8 +156,8 @@ struct bdb_op_info {
 #define TXN_COMMIT(txn,f)                      txn_commit((txn), (f))
 #define        TXN_ABORT(txn)                          txn_abort((txn))
 #define TXN_ID(txn)                                    txn_id(txn)
-#define LOCK_ID(env, locker)           lock_id(env, locker)
-#define LOCK_ID_FREE(env, locker)      lock_id_free(env, locker)
+#define XLOCK_ID(env, locker)          lock_id(env, locker)
+#define XLOCK_ID_FREE(env, locker)     lock_id_free(env, locker)
 #else
 #define LOCK_DETECT(env,f,t,a)         (env)->lock_detect(env, f, t, a)
 #define LOCK_GET(env,i,f,o,m,l)                (env)->lock_get(env, i, f, o, m, l)
@@ -165,8 +168,26 @@ struct bdb_op_info {
 #define TXN_COMMIT(txn,f)                      (txn)->commit((txn), (f))
 #define TXN_ABORT(txn)                         (txn)->abort((txn))
 #define TXN_ID(txn)                                    (txn)->id(txn)
-#define LOCK_ID(env, locker)           (env)->lock_id(env, locker)
-#define LOCK_ID_FREE(env, locker)      (env)->lock_id_free(env, locker)
+#define XLOCK_ID(env, locker)          (env)->lock_id(env, locker)
+#define XLOCK_ID_FREE(env, locker)     (env)->lock_id_free(env, locker)
+
+/* BDB 4.1.17 adds txn arg to db->open */
+#if DB_VERSION_MINOR > 1 || DB_VERSION_PATCH >= 17
+#undef DB_OPEN
+#define        DB_OPEN(db, file, name, type, flags, mode) \
+       (db)->open(db, NULL, file, name, type, (flags)|DB_AUTO_COMMIT, mode)
+#endif
+
+#define BDB_REUSE_LOCKERS
+
+#ifdef BDB_REUSE_LOCKERS
+#define        LOCK_ID_FREE(env, locker)
+#define        LOCK_ID(env, locker)    bdb_locker_id(op, env, locker)
+#else
+#define        LOCK_ID_FREE(env, locker)       XLOCK_ID_FREE(env, locker)
+#define        LOCK_ID(env, locker)            XLOCK_ID(env, locker)
+#endif
+
 #endif
 
 LDAP_END_DECL
index 8f20bcee6ff0f1b9559a3a91b98d3d7f815cc12d..961c047e2bf5bac87f9a6ca3987c265196f22dc0 100644 (file)
@@ -149,6 +149,17 @@ bdb_cache_entry_db_lock
        lockobj.size = e->e_nname.bv_len;
        rc = LOCK_GET(env, locker, flags | DB_LOCK_NOWAIT,
                                        &lockobj, db_rw, lock);
+       if (rc) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_entry_db_lock: entry %s, rw %d, rc %d\n",
+                       e->e_nname.bv_val, rw, rc );
+#else
+               Debug( LDAP_DEBUG_TRACE,
+                       "bdb_cache_entry_db_lock: entry %s, rw %d, rc %d\n",
+                       e->e_nname.bv_val, rw, rc );
+#endif
+       }
        return rc;
 }
 
@@ -1100,3 +1111,57 @@ bdb_lru_print( Cache *cache )
        }
 }
 #endif
+
+#ifdef BDB_REUSE_LOCKERS
+void
+bdb_locker_id_free( void *key, void *data )
+{
+       DB_ENV *env = key;
+       int lockid = (int) data;
+
+       XLOCK_ID_FREE( env, lockid );
+}
+
+int
+bdb_locker_id( Operation *op, DB_ENV *env, int *locker )
+{
+       int i, rc, lockid;
+       void *data;
+
+       if ( !env || !op || !locker ) return -1;
+
+       /* Shouldn't happen unless we're single-threaded */
+       if ( !op->o_threadctx ) {
+               *locker = 0;
+               return 0;
+       }
+
+       if ( ldap_pvt_thread_pool_getkey( op->o_threadctx, env, &data, NULL ) ) {
+               for ( i=0, rc=1; rc != 0 && i<4; i++ ) {
+                       rc = XLOCK_ID( env, &lockid );
+                       if (rc) ldap_pvt_thread_yield();
+               }
+               if ( rc != 0) {
+                       return rc;
+               }
+               data = (void *)lockid;
+               if ( ( rc = ldap_pvt_thread_pool_setkey( op->o_threadctx, env,
+                       data, bdb_locker_id_free ) ) ) {
+                       XLOCK_ID_FREE( env, lockid );
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_BDB, ERR, "bdb_locker_id: err %s(%d)\n",
+                               db_strerror(rc), rc, 0 );
+#else
+                       Debug( LDAP_DEBUG_ANY, "bdb_locker_id: err %s(%d)\n",
+                               db_strerror(rc), rc, 0 );
+#endif
+
+                       return rc;
+               }
+       } else {
+               lockid = (int)data;
+       }
+       *locker = lockid;
+       return 0;
+}
+#endif
index 68efe9aad4b977a75807bbf050943257f318960e..2110554fac0f59461ca97dcd28927e4276d0e68c 100644 (file)
@@ -109,7 +109,10 @@ bdb_db_cache(
        file = ch_malloc( strlen( name ) + sizeof(BDB_SUFFIX) );
        sprintf( file, "%s" BDB_SUFFIX, name );
 
-       rc = db->bdi_db->open( db->bdi_db,
+#ifdef HAVE_EBCDIC
+       __atoe( file );
+#endif
+       rc = DB_OPEN( db->bdi_db,
                file, name,
                DB_HASH, bdb->bi_db_opflags | DB_CREATE | DB_THREAD,
                bdb->bi_dbenv_mode );
index 4e8d02cd60aab4b6439f1344fdb8379d78de9ad8..96eedca61bcc981b05b78e045bd66816af24e305 100644 (file)
@@ -744,7 +744,7 @@ int bdb_build_tree(
        rdns = ldap_explode_dn(be->be_nsuffix[0].bv_val, 0);
        for (i=0; rdns[i]; i++);
        bdb->bi_nrdns = i;
-       charray_free(rdns);
+       ldap_charray_free(rdns);
 
        DBTzero( &key );
        DBTzero( &data );
@@ -938,7 +938,7 @@ bdb_dn2id_matched(
        for (i=0; rdns[i]; i++);
        i -= bdb->bi_nrdns;
        if (i < 0) {
-               charray_free(rdns);
+               ldap_charray_free(rdns);
                return -1;
        }
        n = p;
@@ -951,7 +951,7 @@ bdb_dn2id_matched(
                p = n;
        }
        ldap_pvt_thread_rdwr_runlock(&bdb->bi_tree_rdwr);
-       charray_free(rdns);
+       ldap_charray_free(rdns);
 
        if (n) {
                *id = n->i_id;
index c34b277df1316bdf3b19da4d4c4d09016fbfda2c..79d528a0e0272b53aaab46b5902defd5a097718a 100644 (file)
 
 void bdb_errcall( const char *pfx, char * msg )
 {
+#ifdef HAVE_EBCDIC
+       if ( msg[0] > 0x7f )
+               __etoa( msg );
+#endif
 #ifdef NEW_LOGGING
        LDAP_LOG ( OPERATION, INFO, "bdb(%s): %s\n", pfx, msg, 0 );
 #else
        Debug( LDAP_DEBUG_ANY, "bdb(%s): %s\n", pfx, msg, 0 );
 #endif
 }
+
+#ifdef HAVE_EBCDIC
+
+#undef db_strerror
+
+/* Not re-entrant! */
+char *ebcdic_dberror( int rc )
+{
+       static char msg[1024];
+
+       strcpy( msg, db_strerror( rc ) );
+       __etoa( msg );
+       return msg;
+}
+#endif
index 28c9a725e6e499beb5333a4e55d5bc5005358275..df4ec8f5f06296a869af92815bf7325d4b0e55cc 100644 (file)
@@ -248,7 +248,13 @@ bdb_idl_fetch_key(
 #ifdef BDB_IDL_MULTI
        {
                DBC *cursor;
-               ID buf[BDB_PAGESIZE*4];
+               /* buf must be large enough to grab the entire IDL in one
+                * get(), otherwise BDB 4 will leak resources on subsequent
+                * get's. We can safely call get() twice - once for the data,
+                * and once to get the DB_NOTFOUND result meaning there's
+                * no more data. See ITS#2040 for details.
+                */
+               ID buf[BDB_IDL_DB_SIZE*5];
                ID *i;
                void *ptr;
                size_t len;
@@ -444,7 +450,7 @@ bdb_idl_insert_key(
                                        err = "c_count";
                                        goto fail;
                                }
-                               if ( count >= BDB_IDL_DB_SIZE ) {
+                               if ( count >= BDB_IDL_DB_MAX ) {
                                /* No room, convert to a range */
                                        DBT key2 = *key;
 
@@ -1053,7 +1059,7 @@ over:             ida = IDL_MIN( BDB_IDL_FIRST(a), BDB_IDL_FIRST(b) );
                        idb = NOID;
                else
                        idb = b[cursorc];
-               if (b[cursorb] < idb)
+               if (cursorb <= b[0] && b[cursorb] < idb)
                        a[cursora++] = b[cursorb++];
                else {
                        a[cursora++] = idb;
diff --git a/servers/slapd/back-bdb/idl.h b/servers/slapd/back-bdb/idl.h
new file mode 100644 (file)
index 0000000..c06d3bb
--- /dev/null
@@ -0,0 +1,64 @@
+/* back-bdb.h - ldap ldbm back-end header file */
+/* $OpenLDAP$ */
+/*
+ * Copyright 2000-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#ifndef _BDB_IDL_H_
+#define _BDB_IDL_H_
+
+/* IDL sizes - likely should be even bigger
+ *   limiting factors: sizeof(ID), thread stack size
+ */
+#define BDB_IDL_DB_SIZE                (1<<16) /* 64K IDL on disk */
+#define BDB_IDL_UM_SIZE                (1<<17) /* 128K IDL in memory */
+#define BDB_IDL_UM_SIZEOF      (BDB_IDL_UM_SIZE * sizeof(ID))
+
+#define BDB_IDL_DB_MAX         (BDB_IDL_DB_SIZE-1)
+
+#define BDB_IDL_UM_MAX         (BDB_IDL_UM_SIZE-1)
+
+#define BDB_IDL_IS_RANGE(ids)  ((ids)[0] == NOID)
+#define BDB_IDL_RANGE_SIZE             (3)
+#define BDB_IDL_RANGE_SIZEOF   (BDB_IDL_RANGE_SIZE * sizeof(ID))
+#define BDB_IDL_SIZEOF(ids)            ((BDB_IDL_IS_RANGE(ids) \
+       ? BDB_IDL_RANGE_SIZE : ((ids)[0]+1)) * sizeof(ID))
+
+#define BDB_IDL_RANGE_FIRST(ids)       ((ids)[1])
+#define BDB_IDL_RANGE_LAST(ids)                ((ids)[2])
+
+#define BDB_IDL_RANGE( ids, f, l ) \
+       do { \
+               (ids)[0] = NOID; \
+               (ids)[1] = (f);  \
+               (ids)[2] = (l);  \
+       } while(0)
+
+#define BDB_IDL_ZERO(ids) \
+       do { \
+               (ids)[0] = 0; \
+               (ids)[1] = 0; \
+               (ids)[2] = 0; \
+       } while(0)
+
+#define BDB_IDL_IS_ZERO(ids) ( (ids)[0] == 0 )
+#define BDB_IDL_IS_ALL( range, ids ) ( (ids)[0] == NOID \
+       && (ids)[1] <= (range)[1] && (range)[2] <= (ids)[2] )
+
+#define BDB_IDL_CPY( dst, src ) (AC_MEMCPY( dst, src, BDB_IDL_SIZEOF( src ) ))
+
+#define BDB_IDL_ID( bdb, ids, id ) BDB_IDL_RANGE( ids, id, ((bdb)->bi_lastid) )
+#define BDB_IDL_ALL( bdb, ids ) BDB_IDL_RANGE( ids, 1, ((bdb)->bi_lastid) )
+
+#define BDB_IDL_FIRST( ids )   ( ids[1] )
+#define BDB_IDL_LAST( ids )            ( BDB_IDL_IS_RANGE(ids) \
+       ? ids[2] : ids[ids[0]] )
+
+#define BDB_IDL_N( ids )               ( BDB_IDL_IS_RANGE(ids) \
+       ? (ids[2]-ids[1])+1 : ids[0] )
+
+LDAP_BEGIN_DECL
+LDAP_END_DECL
+
+#endif
index 8fa83ec16b5d99678e60a39a5e92bfdc561db552..978835bd91b895905a271ffc3d9385c663246d25 100644 (file)
@@ -173,6 +173,9 @@ bdb_db_open( BackendDB *be )
        int rc, i;
        struct bdb_info *bdb = (struct bdb_info *) be->be_private;
        u_int32_t flags;
+#ifdef HAVE_EBCDIC
+       char path[MAXPATHLEN];
+#endif
 
 #ifdef NEW_LOGGING
        LDAP_LOG( BACK_BDB, ARGS, 
@@ -284,10 +287,19 @@ bdb_db_open( BackendDB *be )
                bdb->bi_dbenv_home, 0, 0);
 #endif
 
+#ifdef HAVE_EBCDIC
+       strcpy( path, bdb->bi_dbenv_home );
+       __atoe( path );
+       rc = bdb->bi_dbenv->open( bdb->bi_dbenv,
+               path,
+               flags,
+               bdb->bi_dbenv_mode );
+#else
        rc = bdb->bi_dbenv->open( bdb->bi_dbenv,
                bdb->bi_dbenv_home,
                flags,
                bdb->bi_dbenv_mode );
+#endif
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( BACK_BDB, ERR, 
@@ -362,12 +374,23 @@ bdb_db_open( BackendDB *be )
                                BDB_PAGESIZE );
                }
 
-               rc = db->bdi_db->open( db->bdi_db,
+#ifdef HAVE_EBCDIC
+               strcpy( path, bdbi_databases[i].file );
+               __atoe( path );
+               rc = DB_OPEN( db->bdi_db, 
+                       path,
+               /*      bdbi_databases[i].name, */ NULL,
+                       bdbi_databases[i].type,
+                       bdbi_databases[i].flags | flags,
+                       bdb->bi_dbenv_mode );
+#else
+               rc = DB_OPEN( db->bdi_db, 
                        bdbi_databases[i].file,
                /*      bdbi_databases[i].name, */ NULL,
                        bdbi_databases[i].type,
                        bdbi_databases[i].flags | flags,
                        bdb->bi_dbenv_mode );
+#endif
 
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
@@ -543,6 +566,17 @@ bdb_initialize(
        {       /* version check */
                int major, minor, patch;
                char *version = db_version( &major, &minor, &patch );
+#ifdef HAVE_EBCDIC
+               char v2[1024];
+
+               /* All our stdio does an ASCII to EBCDIC conversion on
+                * the output. Strings from the BDB library are already
+                * in EBCDIC; we have to go back and forth...
+                */
+               strcpy( v2, version );
+               __etoa( v2 );
+               version = v2;
+#endif
 
                if( major != DB_VERSION_MAJOR ||
                        minor != DB_VERSION_MINOR ||
index 7adf2f0d4747d67e9a6a2768f36cd97a4d389ada..8fa8b55181e2792923d3319321d00550808ce8e9 100644 (file)
@@ -58,9 +58,12 @@ bdb_db_cache(
  * dn2entry.c
  */
 int bdb_dn2entry_rw LDAP_P(( BackendDB *be, DB_TXN *tid,
-       struct berval *dn, Entry **e, Entry **matched, int flags, int rw , u_int32_t locker, DB_LOCK *lock));
-#define bdb_dn2entry_r(be, tid, dn, e, m, f, locker, lock) bdb_dn2entry_rw((be), (tid), (dn), (e), (m), (f), 0, locker, lock)
-#define bdb_dn2entry_w(be, tid, dn, e, m, f, locker, lock) bdb_dn2entry_rw((be), (tid), (dn), (e), (m), (f), 1, locker, lock)
+       struct berval *dn, Entry **e, Entry **matched, int flags, int rw,
+       u_int32_t locker, DB_LOCK *lock));
+#define bdb_dn2entry_r(be, tid, dn, e, m, f, locker, lock) \
+       bdb_dn2entry_rw((be), (tid), (dn), (e), (m), (f), 0, locker, lock)
+#define bdb_dn2entry_w(be, tid, dn, e, m, f, locker, lock) \
+       bdb_dn2entry_rw((be), (tid), (dn), (e), (m), (f), 1, locker, lock)
 
 /*
  * dn2id.c
@@ -158,8 +161,10 @@ int bdb_id2entry_rw(
        int rw,
        u_int32_t locker,
        DB_LOCK *lock );
-#define bdb_id2entry_r(be, tid, id, e, locker, lock)      bdb_id2entry_rw((be), (tid), (id), (e), 0, locker, lock)
-#define bdb_id2entry_w(be, tid, id, e, locker, lock)      bdb_id2entry_rw((be), (tid), (id), (e), 1, locker, lock)
+#define bdb_id2entry_r(be, tid, id, e, locker, lock) \
+       bdb_id2entry_rw((be), (tid), (id), (e), 0, locker, lock)
+#define bdb_id2entry_w(be, tid, id, e, locker, lock) \
+       bdb_id2entry_rw((be), (tid), (id), (e), 1, locker, lock)
 
 void bdb_entry_free ( Entry *e );
 
@@ -306,12 +311,17 @@ BI_op_extended bdb_exop_passwd;
  */
 
 void bdb_cache_entry_commit( Entry *e );
-void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e, int rw, DB_LOCK *lock );
-#define bdb_cache_return_entry_r(env, c, e, l) bdb_cache_return_entry_rw((env), (c), (e), 0, (l))
-#define bdb_cache_return_entry_w(env, c, e, l) bdb_cache_return_entry_rw((env), (c), (e), 1, (l))
+void bdb_cache_return_entry_rw( DB_ENV *env, Cache *cache, Entry *e,
+       int rw, DB_LOCK *lock );
+#define bdb_cache_return_entry_r(env, c, e, l) \
+       bdb_cache_return_entry_rw((env), (c), (e), 0, (l))
+#define bdb_cache_return_entry_w(env, c, e, l) \
+       bdb_cache_return_entry_rw((env), (c), (e), 1, (l))
 void bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw );
-#define bdb_unlocked_cache_return_entry_r( c, e ) bdb_unlocked_cache_return_entry_rw((c), (e), 0)
-#define bdb_unlocked_cache_return_entry_w( c, e ) bdb_unlocked_cache_return_entry_rw((c), (e), 1)
+#define bdb_unlocked_cache_return_entry_r( c, e ) \
+       bdb_unlocked_cache_return_entry_rw((c), (e), 0)
+#define bdb_unlocked_cache_return_entry_w( c, e ) \
+       bdb_unlocked_cache_return_entry_rw((c), (e), 1)
 int bdb_cache_add_entry_rw(
        DB_ENV  *env,
        Cache   *cache,
@@ -343,6 +353,18 @@ int bdb_cache_delete_entry(
 );
 void bdb_cache_release_all( Cache *cache );
 
+#ifdef BDB_REUSE_LOCKERS
+
+int bdb_locker_id( Operation *op, DB_ENV *env, int *locker );
+
+#endif
+
+#ifdef HAVE_EBCDIC
+char *ebcdic_dberror( int rc );
+
+#define db_strerror(x) ebcdic_dberror(x)
+#endif
+
 LDAP_END_DECL
 
 #endif /* _PROTO_BDB_H */
index a7b07367195079ad7ae16eb03848c32dbb2b6052..462d8ec02745e742373cc6dd7649488df4667a07 100644 (file)
@@ -614,9 +614,8 @@ static int base_candidate(
        return 0;
 }
 
-/* Is "objectClass=xx" mentioned anywhere in this filter? Presence
- * doesn't count, we're looking for explicit values. Also count depth
- * of filter tree while we're at it.
+/* Look for "objectClass Present" in this filter.
+ * Also count depth of filter tree while we're at it.
  */
 static int oc_filter(
        Filter *f,
@@ -629,14 +628,8 @@ static int oc_filter(
        if( cur > *max ) *max = cur;
 
        switch(f->f_choice) {
-       case LDAP_FILTER_EQUALITY:
-       case LDAP_FILTER_APPROX:
-               if (f->f_av_desc == slap_schema.si_ad_objectClass)
-                       rc = 1;
-               break;
-
-       case LDAP_FILTER_SUBSTRINGS:
-               if (f->f_sub_desc == slap_schema.si_ad_objectClass)
+       case LDAP_FILTER_PRESENT:
+               if (f->f_desc == slap_schema.si_ad_objectClass)
                        rc = 1;
                break;
 
@@ -644,8 +637,7 @@ static int oc_filter(
        case LDAP_FILTER_OR:
                cur++;
                for (f=f->f_and; f; f=f->f_next)
-                       if ((rc = oc_filter(f, cur, max)))
-                               break;
+                       rc |= oc_filter(f, cur, max);
                break;
        default:
                break;
@@ -696,10 +688,10 @@ static int search_candidates(
        xf.f_choice = LDAP_FILTER_OR;
        xf.f_next = NULL;
 
-       /* If the user's filter doesn't mention objectClass, or if
-        * it just uses objectClass=*, these clauses are redundant.
+       /* If the user's filter uses objectClass=*,
+        * these clauses are redundant.
         */
-       if (oc_filter(filter, 1, &depth) && !get_subentries_visibility(op) ) {
+       if (!oc_filter(filter, 1, &depth) && !get_subentries_visibility(op) ) {
                if( !get_manageDSAit(op) ) { /* match referrals */
                        struct berval bv_ref = { sizeof("REFERRAL")-1, "REFERRAL" };
                        rf.f_choice = LDAP_FILTER_EQUALITY;
index 6d7e240dcecf9ecdfa712763c80a051c420866b5..4bd8fbe037827c2e57655f2fa87d86d335c9e1f6 100644 (file)
@@ -65,7 +65,7 @@ dnssrv_back_referrals(
                goto done;
        }
 
-       hosts = str2charray( hostlist, " " );
+       hosts = ldap_str2charray( hostlist, " " );
 
        if( hosts == NULL ) {
                Debug( LDAP_DEBUG_TRACE, "DNSSRV: str2charrary error\n", 0, 0, 0 );
@@ -103,7 +103,7 @@ dnssrv_back_referrals(
 done:
        if( domain != NULL ) ch_free( domain );
        if( hostlist != NULL ) ch_free( hostlist );
-       if( hosts != NULL ) charray_free( hosts );
+       if( hosts != NULL ) ldap_charray_free( hosts );
        ber_bvarray_free( urls );
        return rc;
 }
index a619e3c23d391c7b137acf10de218f58d8fb9bcb..1af13a27e4f4c73fd22427c432a779bd1d282dcd 100644 (file)
@@ -63,7 +63,7 @@ dnssrv_back_search(
                goto done;
        }
 
-       hosts = str2charray( hostlist, " " );
+       hosts = ldap_str2charray( hostlist, " " );
 
        if( hosts == NULL ) {
                Debug( LDAP_DEBUG_TRACE, "DNSSRV: str2charrary error\n", 0, 0, 0 );
@@ -225,7 +225,7 @@ dnssrv_back_search(
 done:
        if( domain != NULL ) ch_free( domain );
        if( hostlist != NULL ) ch_free( hostlist );
-       if( hosts != NULL ) charray_free( hosts );
+       if( hosts != NULL ) ldap_charray_free( hosts );
        if( urls != NULL ) ber_bvarray_free( urls );
        return 0;
 }
index 6bfa9824b4a12a096fe6e6b15697924b852d99be..47022cfe40bcfb7e6409807a9ce781234b7cbcc7 100644 (file)
@@ -67,7 +67,7 @@ attr_index_config(
        char **attrs;
        char **indexes = NULL;
 
-       attrs = str2charray( argv[0], "," );
+       attrs = ldap_str2charray( argv[0], "," );
 
        if( attrs == NULL ) {
                fprintf( stderr, "%s: line %d: "
@@ -77,7 +77,7 @@ attr_index_config(
        }
 
        if ( argc > 1 ) {
-               indexes = str2charray( argv[1], "," );
+               indexes = ldap_str2charray( argv[1], "," );
 
                if( indexes == NULL ) {
                        fprintf( stderr, "%s: line %d: "
@@ -206,8 +206,8 @@ attr_index_config(
                }
        }
 
-       charray_free( attrs );
-       if ( indexes != NULL ) charray_free( indexes );
+       ldap_charray_free( attrs );
+       if ( indexes != NULL ) ldap_charray_free( indexes );
 
        return LDAP_SUCCESS;
 }
index 25b7aaf28db2ece77d2fc5446ba5fde579ca07f8..907de602ca59f0d051b6308b5493e79a2dd8c538 100644 (file)
@@ -32,7 +32,7 @@ extern void make_surrogate_parent LDAP_P(( void ));
 #else /* !SHELL_SURROGATE_PARENT */
 
 typedef char **Cmd_info;
-#define MAKE_CMD_INFO(args)  charray_dup( args )
+#define MAKE_CMD_INFO(args)  ldap_charray_dup( args )
 #define IS_NULLCMD(cmd)      ((cmd) == NULL)
 
 #endif /* SHELL_SURROGATE_PARENT */
index a6237ec5db8148b55ff0604e84cc0418337afdff..461fc7a9f5af79c7a20cf4936215356fc948680f 100644 (file)
@@ -748,7 +748,7 @@ backend_check_controls(
 
        for( ; *ctrls != NULL ; ctrls++ ) {
                if( (*ctrls)->ldctl_iscritical &&
-                       !charray_inlist( be->be_controls, (*ctrls)->ldctl_oid ) )
+                       !ldap_charray_inlist( be->be_controls, (*ctrls)->ldctl_oid ) )
                {
                        *text = "control unavailable in context";
                        return LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
index 63338b7e671798b14794d8867063b66be373c726..e4e8dd5e1891fd45e6b990c20c47d3530915b2a5 100644 (file)
@@ -45,7 +45,7 @@ do_bind(
        int     rc = LDAP_SUCCESS;
        const char *text;
        struct berval cred = { 0, NULL };
-       Backend *be;
+       Backend *be = NULL;
 
 #ifdef NEW_LOGGING
        LDAP_LOG( OPERATION, ENTRY, "do_bind: conn %d\n", conn->c_connid, 0, 0 );
@@ -231,6 +231,9 @@ do_bind(
                goto cleanup;
        }
 
+       /* Set the bindop for the benefit of in-directory SASL lookups */
+       conn->c_sasl_bindop = op;
+
        if ( method == LDAP_AUTH_SASL ) {
                slap_ssf_t ssf = 0;
 
@@ -570,6 +573,8 @@ do_bind(
        }
 
 cleanup:
+       conn->c_sasl_bindop = NULL;
+
        if( pdn.bv_val != NULL ) {
                free( pdn.bv_val );
        }
diff --git a/servers/slapd/charray.c b/servers/slapd/charray.c
deleted file mode 100644 (file)
index 46bff07..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/* charray.c - routines for dealing with char * arrays */
-/* $OpenLDAP$ */
-/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
- */
-
-#include "portable.h"
-
-#include <stdio.h>
-
-#include <ac/string.h>
-#include <ac/socket.h>
-
-#include "slap.h"
-
-void
-charray_add(
-    char       ***a,
-    const char *s
-)
-{
-       int     n;
-
-       if ( *a == NULL ) {
-               *a = (char **) ch_malloc( 2 * sizeof(char *) );
-               n = 0;
-       } else {
-               for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
-                       ;       /* NULL */
-               }
-
-               *a = (char **) ch_realloc( (char *) *a,
-                   (n + 2) * sizeof(char *) );
-       }
-
-       (*a)[n++] = ch_strdup(s);
-       (*a)[n] = NULL;
-}
-
-void
-charray_add_n(
-    char       ***a,
-    const char *s,
-    int         l
-)
-{
-       int     n;
-
-       if ( *a == NULL ) {
-               *a = (char **) ch_malloc( 2 * sizeof(char *) );
-               n = 0;
-       } else {
-               for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
-                       ;       /* NULL */
-               }
-
-               *a = (char **) ch_realloc( (char *) *a,
-                   (n + 2) * sizeof(char *) );
-       }
-
-       (*a)[n] = (char *) ch_malloc( ( l + 1 ) * sizeof( char ) );
-       strncpy( (*a)[n], s, l );
-       (*a)[n][l] = '\0';
-       (*a)[++n] = NULL;
-}
-
-void
-charray_merge(
-    char       ***a,
-    char       **s
-)
-{
-       int     i, n, nn;
-
-       for ( n = 0; *a != NULL && (*a)[n] != NULL; n++ ) {
-               ;       /* NULL */
-       }
-       for ( nn = 0; s[nn] != NULL; nn++ ) {
-               ;       /* NULL */
-       }
-
-       *a = (char **) ch_realloc( (char *) *a, (n + nn + 1) * sizeof(char *) );
-
-       for ( i = 0; i < nn; i++ ) {
-               (*a)[n + i] = ch_strdup(s[i]);
-       }
-       (*a)[n + nn] = NULL;
-}
-
-void
-charray_free( char **array )
-{
-       char    **a;
-
-       if ( array == NULL ) {
-               return;
-       }
-
-       for ( a = array; *a != NULL; a++ ) {
-               if ( *a != NULL ) {
-                       free( *a );
-               }
-       }
-       free( (char *) array );
-}
-
-int
-charray_inlist(
-    char       **a,
-    const char *s
-)
-{
-       int     i;
-
-       if( a == NULL ) return 0;
-
-       for ( i = 0; a[i] != NULL; i++ ) {
-               if ( strcasecmp( s, a[i] ) == 0 ) {
-                       return( 1 );
-               }
-       }
-
-       return( 0 );
-}
-
-char **
-charray_dup( char **a )
-{
-       int     i;
-       char    **new;
-
-       for ( i = 0; a[i] != NULL; i++ )
-               ;       /* NULL */
-
-       new = (char **) ch_malloc( (i + 1) * sizeof(char *) );
-
-       for ( i = 0; a[i] != NULL; i++ ) {
-               new[i] = ch_strdup( a[i] );
-       }
-       new[i] = NULL;
-
-       return( new );
-}
-
-
-char **
-str2charray( const char *str_in, const char *brkstr )
-{
-       char    *str;
-       char    **res;
-       char    *s;
-       char    *lasts;
-       int     i;
-
-       /* protect the input string from strtok */
-       str = ch_strdup( str_in );
-
-       i = 1;
-       for ( s = str; *s; s++ ) {
-               if ( strchr( brkstr, *s ) != NULL ) {
-                       i++;
-               }
-       }
-
-       res = (char **) ch_malloc( (i + 1) * sizeof(char *) );
-       i = 0;
-
-       for ( s = ldap_pvt_strtok( str, brkstr, &lasts );
-               s != NULL;
-               s = ldap_pvt_strtok( NULL, brkstr, &lasts ) )
-       {
-               res[i++] = ch_strdup( s );
-       }
-
-       res[i] = NULL;
-
-       free( str );
-       return( res );
-}
-
-int
-charray_strcmp( const char **a1, const char **a2 )
-{
-       for ( ; a1[0] && a2[0]; a1++, a2++ ) {
-               if ( strcmp( a1[0], a2[0] ) ) {
-                       return( !0 );
-               }
-       }
-
-       if ( a1[0] || a2[0] ) {
-               return( !0 );
-       }
-
-       return 0;
-}
-
-
-int
-charray_strcasecmp( const char **a1, const char **a2 )
-{
-       for ( ; a1[0] && a2[0]; a1++, a2++ ) {
-               if ( strcasecmp( a1[0], a2[0] ) ) {
-                       return( !0 );
-               }
-       }
-
-       if ( a1[0] || a2[0] ) {
-               return( !0 );
-       }
-
-       return 0;
-}
index 8570a4a16322c33c1abb63edf8825240c7c97072..e59d4f047b695f617fb1d0198fcaaeb2b4116ba6 100644 (file)
@@ -60,6 +60,8 @@ static int connection_resched( Connection *conn );
 static void connection_abandon( Connection *conn );
 static void connection_destroy( Connection *c );
 
+static ldap_pvt_thread_start_t connection_operation;
+
 struct co_arg {
        Connection      *co_conn;
        Operation       *co_op;
@@ -434,6 +436,7 @@ long connection_init(
                c->c_sasl_bind_mech.bv_len = 0;
                c->c_sasl_context = NULL;
                c->c_sasl_extra = NULL;
+               c->c_sasl_bindop = NULL;
 
                c->c_sb = ber_sockbuf_alloc( );
 
@@ -468,6 +471,7 @@ long connection_init(
        assert( c->c_sasl_bind_mech.bv_val == NULL );
        assert( c->c_sasl_context == NULL );
        assert( c->c_sasl_extra == NULL );
+       assert( c->c_sasl_bindop == NULL );
        assert( c->c_currentber == NULL );
 
        ber_str2bv( url, 0, 1, &c->c_listener_url );
@@ -904,7 +908,7 @@ void connection_done( Connection *c )
 #endif /* !SLAPD_MONITOR */
 
 static void *
-connection_operation( void *arg_v )
+connection_operation( void *ctx, void *arg_v )
 {
        int rc;
        struct co_arg   *arg = arg_v;
@@ -918,6 +922,8 @@ connection_operation( void *arg_v )
        num_ops_initiated++;
        ldap_pvt_thread_mutex_unlock( &num_ops_mutex );
 
+       arg->co_op->o_threadctx = ctx;
+
        if( conn->c_sasl_bind_in_progress && tag != LDAP_REQ_BIND ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( CONNECTION, ERR, 
@@ -1416,10 +1422,9 @@ connection_input(
 
        op = slap_op_alloc( ber, msgid, tag, conn->c_n_ops_received++ );
 
+       op->o_conn = conn;
        op->vrFilter = NULL;
-
        op->o_pagedresults_state = conn->c_pagedresults_state;
-
 #ifdef LDAP_CONNECTIONLESS
        op->o_peeraddr = peeraddr;
        if (cdn) {
@@ -1427,6 +1432,7 @@ connection_input(
            op->o_protocol = LDAP_VERSION2;
        }
 #endif
+
        if ( conn->c_conn_state == SLAP_C_BINDING
                || conn->c_conn_state == SLAP_C_CLOSING )
        {
index c732e1afa68c268f3d15aece89b7307a449d21db..f4022fc27c4be7f938cb624a53c4b80159e3138e 100644 (file)
@@ -95,7 +95,7 @@ static SLPHandle slapd_hslp = 0;
 void slapd_slp_init( const char* urls ) {
        int i;
 
-       slapd_srvurls = str2charray( urls, " " );
+       slapd_srvurls = ldap_str2charray( urls, " " );
 
        if( slapd_srvurls == NULL ) return;
 
@@ -134,7 +134,7 @@ void slapd_slp_init( const char* urls ) {
 void slapd_slp_deinit() {
        if( slapd_srvurls == NULL ) return;
 
-       charray_free( slapd_srvurls );
+       ldap_charray_free( slapd_srvurls );
        slapd_srvurls = NULL;
 
        /* close the SLP handle */
@@ -927,7 +927,7 @@ int slapd_daemon_init( const char *urls )
                urls = "ldap:///";
        }
 
-       u = str2charray( urls, " " );
+       u = ldap_str2charray( urls, " " );
 
        if( u == NULL || u[0] == NULL ) {
 #ifdef NEW_LOGGING
@@ -958,7 +958,7 @@ int slapd_daemon_init( const char *urls )
                Debug( LDAP_DEBUG_ANY, "daemon_init: no listeners to open (%s)\n",
                        urls, 0, 0 );
 #endif
-               charray_free( u );
+               ldap_charray_free( u );
                return -1;
        }
 
@@ -973,7 +973,7 @@ int slapd_daemon_init( const char *urls )
 
        for(n = 0, j = 0; u[n]; n++ ) {
                if ( slap_open_listener( u[n], &i, &j ) ) {
-                       charray_free( u );
+                       ldap_charray_free( u );
                        return -1;
                }
        }
@@ -992,7 +992,7 @@ int slapd_daemon_init( const char *urls )
        slapd_slp_reg();
 #endif
 
-       charray_free( u );
+       ldap_charray_free( u );
        ldap_pvt_thread_mutex_init( &slap_daemon.sd_mutex );
        return !i;
 }
index b860b3f673bdce6e7935f3aadc39a00100d44873..d091c4fe07a25feb96b0761398b31bfa23549a98 100644 (file)
@@ -14,6 +14,7 @@
 #include <ac/time.h>
 
 #include "slap.h"
+#include "lber_pvt.h"
 
 /*
  * read-only global variables or variables only written by the listener
@@ -33,6 +34,10 @@ int          ldap_syslog_level = LOG_DEBUG;
 
 BerVarray default_referral = NULL;
 
+struct berval AllUser = BER_BVC( LDAP_ALL_USER_ATTRIBUTES );
+struct berval AllOper = BER_BVC( LDAP_ALL_OPERATIONAL_ATTRIBUTES );
+struct berval NoAttrs = BER_BVC( LDAP_NO_ATTRS );
+
 /*
  * global variables that need mutex protection
  */
index a441af9c62a2aaa0bc0a5513780b4fe862d639c7..41614b649119c930c80c6244fef22116756e1592 100644 (file)
@@ -176,10 +176,6 @@ SOURCE=.\ch_malloc.c
 # End Source File
 # Begin Source File
 
-SOURCE=.\charray.c
-# End Source File
-# Begin Source File
-
 SOURCE=.\compare.c
 # End Source File
 # Begin Source File
index c34e84882164cf464ffff65fed2ba270e8f16627..e9e436f68d43a001a408dbc3fb0f9c00dce96d01 100644 (file)
@@ -436,6 +436,7 @@ parse_limit(
                        }
                        
                } else if ( arg[0] == '=' ) {
+                       arg++;
                        limit->lms_t_soft = atoi( arg );
                        limit->lms_t_hard = 0;
                        
@@ -487,6 +488,7 @@ parse_limit(
                        }
                        
                } else if ( arg[0] == '=' ) {
+                       arg++;
                        limit->lms_s_soft = atoi( arg );
                        limit->lms_s_hard = 0;
                        
index f9d618174774f47d797d3acd4b44ffe481d38e37..d0b81b15c7d37299f1dd783ee0e05ab0b384e33f 100644 (file)
@@ -589,18 +589,17 @@ int slap_mods_opattrs(
                        if( rc != LDAP_SUCCESS ) {
                                return rc;
                        }
-                       if ( tmpval.bv_len ) {
-                               mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
-                               mod->sml_op = mop;
-                               mod->sml_type.bv_val = NULL;
-                               mod->sml_desc = slap_schema.si_ad_structuralObjectClass;
-                               mod->sml_bvalues = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
-                               ber_dupbv( &mod->sml_bvalues[0], &tmpval );
-                               mod->sml_bvalues[1].bv_val = NULL;
-                               assert( mod->sml_bvalues[0].bv_val );
-                               *modtail = mod;
-                               modtail = &mod->sml_next;
-                       }
+
+                       mod = (Modifications *) ch_malloc( sizeof( Modifications ) );
+                       mod->sml_op = mop;
+                       mod->sml_type.bv_val = NULL;
+                       mod->sml_desc = slap_schema.si_ad_structuralObjectClass;
+                       mod->sml_bvalues = (BerVarray) ch_malloc( 2 * sizeof( struct berval ) );
+                       ber_dupbv( &mod->sml_bvalues[0], &tmpval );
+                       mod->sml_bvalues[1].bv_val = NULL;
+                       assert( mod->sml_bvalues[0].bv_val );
+                       *modtail = mod;
+                       modtail = &mod->sml_next;
                }
 
                if( SLAP_LASTMOD(be) ) {
index 8bf032189e818de2f8467d55cfefbe7cf8589c8f..7c8b4390bfeb8436ac01a9230dfd42e8343cc4aa 100644 (file)
@@ -401,6 +401,9 @@ slap_modrdn2mods(
        Modifications   *mod = NULL;
        int             a_cnt, d_cnt;
 
+       assert( new_rdn != NULL );
+       assert( !deleteoldrdn || old_rdn != NULL );
+
        /* Add new attribute values to the entry */
        for ( a_cnt = 0; new_rdn[ 0 ][ a_cnt ]; a_cnt++ ) {
                AttributeDescription    *desc = NULL;
index 2d7c6ce097274af7dd4b5327a207e25eab7ddd23..1920762bc9c5c89420be899cc07bc5e496dafcce 100644 (file)
@@ -434,6 +434,13 @@ oc_add(
        soc = (ObjectClass *) ch_calloc( 1, sizeof(ObjectClass) );
        AC_MEMCPY( &soc->soc_oclass, oc, sizeof(LDAPObjectClass) );
 
+       if( oc->oc_names != NULL ) {
+               soc->soc_cname.bv_val = soc->soc_names[0];
+       } else {
+               soc->soc_cname.bv_val = soc->soc_oid;
+       }
+       soc->soc_cname.bv_len = strlen( soc->soc_cname.bv_val );
+
        if( soc->soc_sup_oids == NULL &&
                soc->soc_kind == LDAP_SCHEMA_STRUCTURAL )
        {
diff --git a/servers/slapd/oidm.c b/servers/slapd/oidm.c
new file mode 100644 (file)
index 0000000..a244d18
--- /dev/null
@@ -0,0 +1,122 @@
+/* schemaparse.c - routines to parse config file objectclass definitions */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/ctype.h>
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+
+static OidMacro *om_list = NULL;
+
+/* Replace an OID Macro invocation with its full numeric OID.
+ * If the macro is used with "macroname:suffix" append ".suffix"
+ * to the expansion.
+ */
+char *
+oidm_find(char *oid)
+{
+       OidMacro *om;
+
+       /* OID macros must start alpha */
+       if ( OID_LEADCHAR( *oid ) )     {
+               return oid;
+       }
+
+    for (om = om_list; om; om=om->som_next) {
+               char **names = om->som_names;
+
+               if( names == NULL ) {
+                       continue;
+               }
+
+               for( ; *names != NULL ; names++ ) {
+                       int pos = dscompare(*names, oid, ':');
+
+                       if( pos ) {
+                               int suflen = strlen(oid + pos);
+                               char *tmp = ch_malloc( om->som_oid.bv_len
+                                       + suflen + 1);
+                               strcpy(tmp, om->som_oid.bv_val);
+                               if( suflen ) {
+                                       suflen = om->som_oid.bv_len;
+                                       tmp[suflen++] = '.';
+                                       strcpy(tmp+suflen, oid+pos+1);
+                               }
+                               return tmp;
+                       }
+               }
+       }
+       return NULL;
+}
+
+void
+oidm_destroy()
+{
+       OidMacro *om, *n;
+
+       for (om = om_list; om; om = n) {
+               n = om->som_next;
+               ldap_charray_free(om->som_names);
+               free(om->som_oid.bv_val);
+               free(om);
+       }
+}
+
+int
+parse_oidm(
+    const char *fname,
+    int                lineno,
+    int                argc,
+    char       **argv
+)
+{
+       char *oid;
+       OidMacro *om;
+
+       if (argc != 3) {
+               fprintf( stderr, "%s: line %d: too many arguments\n",
+                       fname, lineno );
+usage: fprintf( stderr, "\tObjectIdentifier <name> <oid>\n");
+               return 1;
+       }
+
+       oid = oidm_find( argv[1] );
+       if( oid != NULL ) {
+               fprintf( stderr,
+                       "%s: line %d: "
+                       "ObjectIdentifier \"%s\" previously defined \"%s\"",
+                       fname, lineno, argv[1], oid );
+               return 1;
+       }
+
+       om = (OidMacro *) ch_malloc( sizeof(OidMacro) );
+
+       om->som_names = NULL;
+       ldap_charray_add( &om->som_names, argv[1] );
+       om->som_oid.bv_val = oidm_find( argv[2] );
+
+       if (!om->som_oid.bv_val) {
+               fprintf( stderr, "%s: line %d: OID %s not recognized\n",
+                       fname, lineno, argv[2] );
+               goto usage;
+       }
+
+       if (om->som_oid.bv_val == argv[2]) {
+               om->som_oid.bv_val = ch_strdup( argv[2] );
+       }
+
+       om->som_oid.bv_len = strlen( om->som_oid.bv_val );
+       om->som_next = om_list;
+       om_list = om;
+
+       return 0;
+}
index 6282ee2848c693444b12ae59f5e72aa5c2eb55b4..95720738d06d439a1ecb2cad4fa6906c52148f96 100644 (file)
@@ -7,6 +7,7 @@
 #define PROTO_SLAP_H
 
 #include <ldap_cdefs.h>
+#include "ldap_pvt.h"
 
 LDAP_BEGIN_DECL
 
@@ -123,6 +124,9 @@ LDAP_SLAPD_F (Attribute *) attr_dup LDAP_P(( Attribute *a ));
 LDAP_SLAPD_F (int) attr_merge LDAP_P(( Entry *e,
        AttributeDescription *desc,
        BerVarray vals ));
+LDAP_SLAPD_F (int) attr_merge_one LDAP_P(( Entry *e,
+       AttributeDescription *desc,
+       struct berval *val ));
 LDAP_SLAPD_F (Attribute *) attrs_find LDAP_P((
        Attribute *a, AttributeDescription *desc ));
 LDAP_SLAPD_F (Attribute *) attr_find LDAP_P((
@@ -254,19 +258,6 @@ LDAP_SLAPD_F (void) ch_free LDAP_P(( void * ));
 #endif
 #endif
 
-/*
- * charray.c
- */
-LDAP_SLAPD_F (void) charray_add LDAP_P(( char ***a, const char *s ));
-LDAP_SLAPD_F (void) charray_add_n LDAP_P(( char ***a, const char *s, int l ));
-LDAP_SLAPD_F (void) charray_merge LDAP_P(( char ***a, char **s ));
-LDAP_SLAPD_F (void) charray_free LDAP_P(( char **array ));
-LDAP_SLAPD_F (int) charray_inlist LDAP_P(( char **a, const char *s ));
-LDAP_SLAPD_F (char **) charray_dup LDAP_P(( char **a ));
-LDAP_SLAPD_F (char **) str2charray LDAP_P(( const char *str, const char *brkstr ));
-LDAP_SLAPD_F (int) charray_strcmp LDAP_P(( const char **a1, const char **a2 ));
-LDAP_SLAPD_F (int) charray_strcasecmp LDAP_P(( const char **a1, const char **a2 ));
-
 /*
  * controls.c
  */
@@ -902,6 +893,24 @@ LDAP_SLAPD_V( int ) schema_init_done;
 LDAP_SLAPD_F (int) slap_schema_init LDAP_P((void));
 LDAP_SLAPD_F (void) schema_destroy LDAP_P(( void ));
 
+LDAP_SLAPD_F( int ) octetStringIndexer(
+       slap_mask_t use,
+       slap_mask_t flags,
+       Syntax *syntax,
+       MatchingRule *mr,
+       struct berval *prefix,
+       BerVarray values,
+       BerVarray *keysp );
+
+LDAP_SLAPD_F( int ) octetStringFilter(
+       slap_mask_t use,
+       slap_mask_t flags,
+       Syntax *syntax,
+       MatchingRule *mr,
+       struct berval *prefix,
+       void * assertValue,
+       BerVarray *keysp );
+
 /*
  * schema_prep.c
  */
@@ -998,6 +1007,9 @@ LDAP_SLAPD_F (int) value_find_ex LDAP_P((
 LDAP_SLAPD_F (int) value_add LDAP_P((
        BerVarray *vals,
        BerVarray addvals ));
+LDAP_SLAPD_F (int) value_add_one LDAP_P((
+       BerVarray *vals,
+       struct berval *addval ));
 
 /*
  * Other...
@@ -1073,6 +1085,10 @@ LDAP_SLAPD_V (ber_socket_t)      dtblsize;
 
 LDAP_SLAPD_V (int)             use_reverse_lookup;
 
+LDAP_SLAPD_V (struct berval)   AllUser;
+LDAP_SLAPD_V (struct berval)   AllOper;
+LDAP_SLAPD_V (struct berval)   NoAttrs;
+
 /*
  * operations
  */
index 3551b745ed0852273115446fb68b045cbfd4da24..ccc1de308336c816201a3ada61da4c65b11bc830 100644 (file)
@@ -645,11 +645,6 @@ send_search_result(
        }
 }
 
-static struct berval AllUser = { sizeof(LDAP_ALL_USER_ATTRIBUTES)-1,
-       LDAP_ALL_USER_ATTRIBUTES };
-static struct berval AllOper = { sizeof(LDAP_ALL_OPERATIONAL_ATTRIBUTES)-1,
-       LDAP_ALL_OPERATIONAL_ATTRIBUTES };
-
 int
 send_search_entry(
     Backend    *be,
@@ -726,7 +721,7 @@ send_search_entry(
                Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
                ber_free_buf( ber );
-               return;
+               return( 1 );
            }
        }
        if (conn->c_is_udp && op->o_protocol == LDAP_VERSION2) {
index 62c2fc7cf05c673f080062a4b4f25f9ddcb6bb14..854bb0e2ec9e7652288cae77f13244da46c4c083 100644 (file)
@@ -143,7 +143,7 @@ root_dse_info(
                        vals[0].bv_len = strlen( vals[0].bv_val );
                        attr_merge( e, ad_supportedSASLMechanisms, vals );
                }
-               charray_free( supportedSASLMechanisms );
+               ldap_charray_free( supportedSASLMechanisms );
        }
 
        if ( default_referral != NULL ) {
index 756ae1187beef67aa04c8f65909902af918525db..6db5f1dc3c2736d652c58fdaa1def43054af13c6 100644 (file)
@@ -32,7 +32,8 @@
 #define        SASL_CONST
 #endif
 
-#include <ldap_pvt.h>
+#include "ldap_pvt.h"
+#include "lber_pvt.h"
 
 /* Flags for telling slap_sasl_getdn() what type of identity is being passed */
 #define FLAG_GETDN_AUTHCID 2
@@ -298,7 +299,7 @@ slap_sasl_log(
 #define        SET_DN  1
 #define        SET_U   2
 
-static struct berval ext_bv = { sizeof("EXTERNAL")-1, "EXTERNAL" };
+static struct berval ext_bv = BER_BVC( "EXTERNAL" );
 
 int slap_sasl_getdn( Connection *conn, char *id, int len,
        char *user_realm, struct berval *dn, int flags )
@@ -341,8 +342,10 @@ int slap_sasl_getdn( Connection *conn, char *id, int len,
         */
        if( flags & FLAG_GETDN_AUTHCID ) {
 #ifdef HAVE_TLS
-               if( conn->c_is_tls && conn->c_sasl_bind_mech.bv_len == ext_bv.bv_len
-                       && ( strcasecmp( ext_bv.bv_val, conn->c_sasl_bind_mech.bv_val ) == 0 ) ) {
+               if( conn->c_is_tls &&
+                       conn->c_sasl_bind_mech.bv_len == ext_bv.bv_len &&
+                       strcasecmp( ext_bv.bv_val, conn->c_sasl_bind_mech.bv_val ) == 0 )
+               {
                        /* X.509 DN is already normalized */
                        do_norm = 0;
                        is_dn = SET_DN;
@@ -607,6 +610,7 @@ slap_auxprop_lookup(
                        op.o_callback = &cb;
                        op.o_time = slap_get_time();
                        op.o_do_not_cache = 1;
+                       op.o_threadctx = conn->c_sasl_bindop->o_threadctx;
 
                        (*be->be_search)( be, conn, &op, NULL, &dn,
                                LDAP_SCOPE_BASE, LDAP_DEREF_NEVER, 1, 0,
@@ -731,6 +735,7 @@ slap_sasl_checkpass(
                op.o_callback = &cb;
                op.o_time = slap_get_time();
                op.o_do_not_cache = 1;
+               op.o_threadctx = conn->c_sasl_bindop->o_threadctx;
 
                (*be->be_search)( be, conn, &op, NULL, &dn,
                        LDAP_SCOPE_BASE, LDAP_DEREF_NEVER, 1, 0,
@@ -1089,6 +1094,27 @@ int slap_sasl_init( void )
                { SASL_CB_LIST_END, NULL, NULL }
        };
 
+#ifdef HAVE_SASL_VERSION
+#define SASL_BUILD_VERSION ((SASL_VERSION_MAJOR << 24) |\
+       (SASL_VERSION_MINOR << 16) | SASL_VERSION_STEP)
+
+       sasl_version( NULL, &rc );
+       if ( ((rc >> 16) != ((SASL_VERSION_MAJOR << 8)|SASL_VERSION_MINOR)) ||
+               (rc & 0xffff) < SASL_VERSION_STEP) {
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( TRANSPORT, INFO,
+               "slap_sasl_init: SASL version mismatch, got %x, wanted %x.\n",
+                       rc, SASL_BUILD_VERSION, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY,
+               "slap_sasl_init: SASL version mismatch, got %x, wanted %x.\n",
+                       rc, SASL_BUILD_VERSION, 0 );
+#endif
+               return -1;
+       }
+#endif
+       
        sasl_set_alloc(
                ber_memalloc,
                ber_memcalloc,
@@ -1115,6 +1141,10 @@ int slap_sasl_init( void )
                Debug( LDAP_DEBUG_ANY, "sasl_server_init failed\n",
                        0, 0, 0 );
 #endif
+#if SASL_VERSION_MAJOR < 2
+               /* A no-op used to make sure we linked with Cyrus 1.5 */
+               sasl_client_auth( NULL, NULL, NULL, 0, NULL, NULL );
+#endif
 
                return -1;
        }
@@ -1371,7 +1401,7 @@ char ** slap_sasl_mechs( Connection *conn )
                        return NULL;
                }
 
-               mechs = str2charray( mechstr, "," );
+               mechs = ldap_str2charray( mechstr, "," );
 
 #if SASL_VERSION_MAJOR < 2
                ch_free( mechstr );
index f9f53d85ec9147e8579e9ebbb1df61852b2c75a8..7a1dd7836e47c4b1eeb6f8adbb20e2229c6135c4 100644 (file)
@@ -449,6 +449,7 @@ void slap_sasl2dn( Connection *conn,
        op.o_callback = &cb;
        op.o_time = slap_get_time();
        op.o_do_not_cache = 1;
+       op.o_threadctx = conn->c_sasl_bindop->o_threadctx;
 
        (*be->be_search)( be, conn, &op, NULL, &dn,
                scope, LDAP_DEREF_NEVER, 1, 0,
@@ -569,6 +570,7 @@ int slap_sasl_match(Connection *conn, struct berval *rule, struct berval *assert
        op.o_callback = &cb;
        op.o_time = slap_get_time();
        op.o_do_not_cache = 1;
+       op.o_threadctx = conn->c_sasl_bindop->o_threadctx;
 
        (*be->be_search)( be, conn, &op, /*base=*/NULL, &searchbase,
           scope, /*deref=*/1, /*sizelimit=*/0, /*time=*/0, filter, /*fstr=*/NULL,
@@ -622,7 +624,7 @@ slap_sasl_check_authz( Connection *conn,
           assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val);
 #endif
 
-       rc = backend_attribute( NULL, NULL, NULL, NULL, searchDN, ad, &vals );
+       rc = backend_attribute( NULL, NULL, conn->c_sasl_bindop, NULL, searchDN, ad, &vals );
        if( rc != LDAP_SUCCESS )
                goto COMPLETE;
 
index 4e1a17f920c9c8de32cd7cc62597160748f429d2..f9b4e082b81b690043eede1969429e70382a8b6f 100644 (file)
@@ -101,7 +101,7 @@ entry_schema_check(
        /* it's a REALLY bad idea to disable schema checks */
        if( !global_schemacheck ) return LDAP_SUCCESS;
 
-       /* find the object class attribute - could error out here */
+       /* find the structural object class attribute */
        asc = attr_find( e->e_attrs, ad_structuralObjectClass );
        if ( asc == NULL ) {
 #ifdef NEW_LOGGING
@@ -115,7 +115,7 @@ entry_schema_check(
 #endif
 
                *text = "no structuralObjectClass operational attribute";
-               return LDAP_OBJECT_CLASS_VIOLATION;
+               return LDAP_OTHER;
        }
 
        assert( asc->a_vals != NULL );
@@ -154,7 +154,7 @@ entry_schema_check(
                        e->e_dn, textbuf, 0 );
 #endif
 
-               return LDAP_OBJECT_CLASS_VIOLATION;
+               return LDAP_OTHER;
        }
 
        /* find the object class attribute */
@@ -179,8 +179,6 @@ entry_schema_check(
        rc = structural_class( aoc->a_vals, &nsc, &oc, text, textbuf, textlen );
        if( rc != LDAP_SUCCESS ) {
                return rc;
-       } else if ( nsc.bv_len == 0 ) {
-               return LDAP_OBJECT_CLASS_VIOLATION;
        }
 
        *text = textbuf;
@@ -193,7 +191,7 @@ entry_schema_check(
 
        } else if ( sc != oc ) {
                snprintf( textbuf, textlen, 
-                       "structuralObjectClass modification from '%s' to '%s' not allowed",
+                       "structural object class modification from '%s' to '%s' not allowed",
                        asc->a_vals[0].bv_val, nsc.bv_val );
                return LDAP_NO_OBJECT_CLASS_MODS;
        }
@@ -543,15 +541,27 @@ int structural_class(
                }
        }
 
-       if( scp )
+       if( scp ) {
                *scp = sc;
+       }
 
        if( sc == NULL ) {
                *text = "no structural object classes provided";
                return LDAP_OBJECT_CLASS_VIOLATION;
        }
 
+       if( scn < 0 ) {
+               *text = "invalid structural object class";
+               return LDAP_OBJECT_CLASS_VIOLATION;
+       }
+
        *scbv = ocs[scn];
+
+       if( scbv->bv_len == 0 ) {
+               *text = "invalid structural object class";
+               return LDAP_OBJECT_CLASS_VIOLATION;
+       }
+
        return LDAP_SUCCESS;
 }
 
index eef80beb30279966ba231ff6d1af3911b2c07fa6..93427a0b2ca351524f1e54ae6e845655ac6e047d 100644 (file)
@@ -37,7 +37,7 @@
 /* recycled matching routines */
 #define bitStringMatch                                 octetStringMatch
 #define numericStringMatch                             caseIgnoreIA5Match
-#define objectIdentifierMatch                  caseIgnoreIA5Match
+#define objectIdentifierMatch                  octetStringMatch
 #define telephoneNumberMatch                   caseIgnoreIA5Match
 #define telephoneNumberSubstringsMatch caseIgnoreIA5SubstringsMatch
 #define generalizedTimeMatch                   caseIgnoreIA5Match
@@ -138,7 +138,7 @@ octetStringMatch(
 }
 
 /* Index generation function */
-static int octetStringIndexer(
+int octetStringIndexer(
        slap_mask_t use,
        slap_mask_t flags,
        Syntax *syntax,
@@ -186,6 +186,7 @@ static int octetStringIndexer(
        }
 
        keys[i].bv_val = NULL;
+       keys[i].bv_len = 0;
 
        *keysp = keys;
 
@@ -193,20 +194,20 @@ static int octetStringIndexer(
 }
 
 /* Index generation function */
-static int octetStringFilter(
+int octetStringFilter(
        slap_mask_t use,
        slap_mask_t flags,
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        size_t slen, mlen;
        BerVarray keys;
        HASH_CONTEXT   HASHcontext;
        unsigned char   HASHdigest[HASH_BYTES];
-       struct berval *value = (struct berval *) assertValue;
+       struct berval *value = (struct berval *) assertedValue;
        struct berval digest;
        digest.bv_val = HASHdigest;
        digest.bv_len = sizeof(HASHdigest);
@@ -231,6 +232,7 @@ static int octetStringFilter(
 
        ber_dupbv( keys, &digest );
        keys[1].bv_val = NULL;
+       keys[1].bv_len = 0;
 
        *keysp = keys;
 
@@ -929,7 +931,7 @@ approxFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        char *c;
@@ -938,7 +940,7 @@ approxFilter(
        BerVarray keys;
 
        /* Yes, this is necessary */
-       val = UTF8bvnormalize( ((struct berval *)assertValue),
+       val = UTF8bvnormalize( ((struct berval *)assertedValue),
                NULL, LDAP_UTF8_APPROX );
        if( val == NULL || val->bv_val == NULL ) {
                keys = (struct berval *)ch_malloc( sizeof(struct berval) );
@@ -1068,7 +1070,7 @@ approxFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        BerVarray keys;
@@ -1077,7 +1079,7 @@ approxFilter(
        keys = (struct berval *)ch_malloc( sizeof( struct berval * ) * 2 );
 
        /* Yes, this is necessary */
-       s = UTF8normalize( ((struct berval *)assertValue),
+       s = UTF8normalize( ((struct berval *)assertedValue),
                             UTF8_NOCASEFOLD );
        if( s == NULL ) {
                keys[0] = NULL;
@@ -1333,7 +1335,7 @@ static int caseExactIgnoreFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        unsigned casefold;
@@ -1353,7 +1355,7 @@ static int caseExactIgnoreFilter(
        casefold = ( mr != caseExactMatchingRule )
                ? LDAP_UTF8_CASEFOLD : LDAP_UTF8_NOCASEFOLD;
 
-       UTF8bvnormalize( (struct berval *) assertValue, &value, casefold );
+       UTF8bvnormalize( (struct berval *) assertedValue, &value, casefold );
        /* This usually happens if filter contains bad UTF8 */
        if( value.bv_val == NULL ) {
                keys = ch_malloc( sizeof( struct berval ) );
@@ -1572,7 +1574,7 @@ static int caseExactIgnoreSubstringsFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        SubstringsAssertion *sa;
@@ -1589,7 +1591,7 @@ static int caseExactIgnoreSubstringsFilter(
        casefold = ( mr != caseExactSubstringsMatchingRule )
                ? LDAP_UTF8_CASEFOLD : LDAP_UTF8_NOCASEFOLD;
 
-       sa = UTF8SubstringsassertionNormalize( assertValue, casefold );
+       sa = UTF8SubstringsassertionNormalize( assertedValue, casefold );
        if( sa == NULL ) {
                *keysp = NULL;
                return LDAP_SUCCESS;
@@ -2021,7 +2023,7 @@ static int integerFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        size_t slen, mlen;
@@ -2036,7 +2038,7 @@ static int integerFilter(
        slen = syntax->ssyn_oidlen;
        mlen = mr->smr_oidlen;
 
-       integerNormalize( syntax, assertValue, &norm );
+       integerNormalize( syntax, assertedValue, &norm );
 
        keys = ch_malloc( sizeof( struct berval ) * 2 );
 
@@ -2415,7 +2417,7 @@ static int caseExactIA5Filter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        size_t slen, mlen;
@@ -2430,7 +2432,7 @@ static int caseExactIA5Filter(
        slen = syntax->ssyn_oidlen;
        mlen = mr->smr_oidlen;
 
-       value = (struct berval *) assertValue;
+       value = (struct berval *) assertedValue;
 
        keys = ch_malloc( sizeof( struct berval ) * 2 );
 
@@ -2621,10 +2623,10 @@ static int caseExactIA5SubstringsFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
-       SubstringsAssertion *sa = assertValue;
+       SubstringsAssertion *sa = assertedValue;
        char pre;
        ber_len_t nkeys = 0;
        size_t slen, mlen, klen;
@@ -3002,7 +3004,7 @@ static int caseIgnoreIA5Filter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        size_t slen, mlen;
@@ -3017,7 +3019,7 @@ static int caseIgnoreIA5Filter(
        slen = syntax->ssyn_oidlen;
        mlen = mr->smr_oidlen;
 
-       ber_dupbv( &value, (struct berval *) assertValue );
+       ber_dupbv( &value, (struct berval *) assertedValue );
        ldap_pvt_str2lower( value.bv_val );
 
        keys = ch_malloc( sizeof( struct berval ) * 2 );
@@ -3216,10 +3218,10 @@ static int caseIgnoreIA5SubstringsFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
-       SubstringsAssertion *sa = assertValue;
+       SubstringsAssertion *sa = assertedValue;
        char pre;
        ber_len_t nkeys = 0;
        size_t slen, mlen, klen;
@@ -3915,13 +3917,13 @@ static int certificateExactFilter(
        Syntax *syntax,
        MatchingRule *mr,
        struct berval *prefix,
-       void * assertValue,
+       void * assertedValue,
        BerVarray *keysp )
 {
        BerVarray keys;
        struct berval asserted_serial;
 
-       serial_and_issuer_parse(assertValue,
+       serial_and_issuer_parse(assertedValue,
                                &asserted_serial,
                                NULL);
 
index 15bf1e3c8f5d894b9623ec51e454d28ce129f2f8..a6833eefd986e726ff7ce79e80b0350b7436baaf 100644 (file)
 #include "ldap_pvt.h"
 #include "ldap_pvt_uc.h"
 
+#define OCDEBUG 0
+
 int schema_init_done = 0;
 
 struct slap_internal_schema slap_schema;
 
+static int objectClassNormalize(
+       slap_mask_t use,
+       struct slap_syntax *syntax, /* NULL if in is asserted value */
+       struct slap_matching_rule *mr,
+       struct berval * in,
+       struct berval * out )
+{
+       ObjectClass *oc = oc_bvfind( in );
+
+       if( oc != NULL ) {
+               ber_dupbv( out, &oc->soc_cname );
+       } else {
+               ber_dupbv( out, in );
+       }
+
+#if OCDEBUG
+#ifdef NEW_LOGGING
+       LDAP_LOG( CONFIG, ENTRY, 
+               "< objectClassNormalize(%s, %s)\n", in->bv_val, out->bv_val, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "< objectClassNormalize(%s,%s)\n",
+               in->bv_val, out->bv_val, 0 );
+#endif
+#endif
+
+       return LDAP_SUCCESS;
+}
+
 static int
-objectClassMatch(
+objectSubClassMatch(
        int *matchp,
        slap_mask_t flags,
        Syntax *syntax,
@@ -34,12 +64,12 @@ objectClassMatch(
        ObjectClass *oc = oc_bvfind( value );
        ObjectClass *asserted = oc_bvfind( a );
 
-#if 1
+#if OCDEBUG
 #ifdef NEW_LOGGING
        LDAP_LOG( CONFIG, ENTRY, 
-               "> objectClassMatch(%s, %s)\n", value->bv_val, a->bv_val, 0 );
+               "> objectSubClassMatch(%s, %s)\n", value->bv_val, a->bv_val, 0 );
 #else
-       Debug( LDAP_DEBUG_TRACE, "> objectClassMatch(%s,%s)\n",
+       Debug( LDAP_DEBUG_TRACE, "> objectSubClassMatch(%s,%s)\n",
                value->bv_val, a->bv_val, 0 );
 #endif
 #endif
@@ -66,13 +96,13 @@ objectClassMatch(
                *matchp = !is_object_subclass( asserted, oc );
        }
 
-#if 1
+#if OCDEBUG
 #ifdef NEW_LOGGING
        LDAP_LOG( CONFIG, ENTRY, 
-               "< objectClassMatch(%s, %s) = %d\n",
+               "< objectSubClassMatch(%s, %s) = %d\n",
                value->bv_val, a->bv_val, *matchp );
 #else
-       Debug( LDAP_DEBUG_TRACE, "< objectClassMatch(%s,%s) = %d\n",
+       Debug( LDAP_DEBUG_TRACE, "< objectSubClassMatch(%s,%s) = %d\n",
                value->bv_val, a->bv_val, *matchp );
 #endif
 #endif
@@ -80,65 +110,154 @@ objectClassMatch(
        return LDAP_SUCCESS;
 }
 
-#if 1
-#define structuralObjectClassMatch objectClassMatch
-#else
-static int
-structuralObjectClassMatch(
-       int *matchp,
-       slap_mask_t flags,
-       Syntax *syntax,
-       MatchingRule *mr,
-       struct berval *value,
-       void *assertedValue )
+static int objectSubClassIndexer( 
+       slap_mask_t use,
+       slap_mask_t mask,
+       struct slap_syntax *syntax,
+       struct slap_matching_rule *mr,
+       struct berval *prefix,
+       BerVarray values,
+       BerVarray *keysp )
 {
-       struct berval *a = (struct berval *) assertedValue;
-       ObjectClass *oc = oc_bvfind( value );
-       ObjectClass *asserted = oc_bvfind( a );
+       int rc, noc, i;
+       BerVarray ocvalues;
+       
+       for( noc=0; values[noc].bv_val != NULL; noc++ ) {
+               /* just count em */;
+       }
+
+       /* over allocate */
+       ocvalues = ch_malloc( sizeof( struct berval ) * (noc+16) );
 
-#if 1
+       /* copy listed values (and termination) */
+       for( i=0; i<noc; i++ ) {
+               ObjectClass *oc = oc_bvfind( &values[i] );
+               if( oc ) {
+                       ocvalues[i] = oc->soc_cname;
+               } else {
+                       ocvalues[i] = values[i];
+               }
+#if OCDEBUG
 #ifdef NEW_LOGGING
-       LDAP_LOG( CONFIG, ENTRY, 
-               "> structuralObjectClassMatch(%s, %s)\n", value->bv_val, a->bv_val, 0 );
+               LDAP_LOG( CONFIG, ENTRY, 
+                       "> objectSubClassIndexer(%d, %s)\n",
+                       i, ocvalues[i].bv_val, 0 );
 #else
-       Debug( LDAP_DEBUG_TRACE, "> structuralObjectClassMatch(%s,%s)\n",
-               value->bv_val, a->bv_val, 0 );
+               Debug( LDAP_DEBUG_TRACE,
+                       "> objectSubClassIndexer(%d, %s)\n",
+                       i, ocvalues[i].bv_val, 0 );
 #endif
 #endif
+       }
 
-       if( asserted == NULL ) {
-               if( OID_LEADCHAR( *a->bv_val ) ) {
-                       /* OID form, return FALSE */
-                       *matchp = 1;
-                       return LDAP_SUCCESS;
-               }
+       /* expand values */
+       for( i=0; i<noc; i++ ) {
+               int j;
+               ObjectClass *oc = oc_bvfind( &values[i] );
+               if( oc == NULL || oc->soc_sups == NULL ) continue;
+               
+               for( j=0; oc->soc_sups[j] != NULL; j++ ) {
+                       int found = 0;
+                       ObjectClass *sup = oc->soc_sups[j];
+                       int k;
 
-               /* desc form, return undefined */
-               return SLAPD_COMPARE_UNDEFINED;
-       }
+                       for( k=0; k<noc; k++ ) {
 
-       if ( oc == NULL ) {
-               /* unrecognized stored value */
-               return SLAPD_COMPARE_UNDEFINED;
-       }
+#if 0
+#ifdef NEW_LOGGING
+                               LDAP_LOG( CONFIG, ENTRY, 
+                                       "= objectSubClassIndexer(%d, %s, %s)\n",
+                                       k, ocvalues[k].bv_val, sup->soc_cname.bv_val );
+#else
+                               Debug( LDAP_DEBUG_TRACE,
+                                       "= objectSubClassIndexer(%d, %s, %s)\n",
+                                       k, ocvalues[k].bv_val, sup->soc_cname.bv_val );
+#endif
+#endif
+                               if( ber_bvcmp( &ocvalues[k], &sup->soc_cname ) == 0 ) {
+                                       found++;
+                                       break;
+                               }
+                       }
+
+                       if( !found ) {
+                               ocvalues = ch_realloc( ocvalues,
+                                       sizeof( struct berval ) * (noc+2) );
+
+                               assert( k == noc );
 
-       *matchp = ( asserted != oc );
+                               ocvalues[noc] = sup->soc_cname;
 
-#if 1
+                               assert( ocvalues[noc].bv_val );
+                               assert( ocvalues[noc].bv_len );
+
+                               noc++;
+
+                               ocvalues[noc].bv_len = 0;
+                               ocvalues[noc].bv_val = NULL;
+
+#if OCDEBUG
+#ifdef NEW_LOGGING
+                               LDAP_LOG( CONFIG, ENTRY, 
+                                       "< objectSubClassIndexer(%d, %d, %s)\n",
+                                       i, k, sup->soc_cname.bv_val );
+#else
+                               Debug( LDAP_DEBUG_TRACE,
+                                       "< objectSubClassIndexer(%d, %d, %s)\n",
+                                       i, k, sup->soc_cname.bv_val );
+#endif
+#endif
+                       }
+               }
+       }
+
+#if 0
 #ifdef NEW_LOGGING
        LDAP_LOG( CONFIG, ENTRY, 
-               "< structuralObjectClassMatch( %s, %s ) = %d\n",
-               value->bv_val, a->bv_val, *matchp );
+               "< objectSubClassIndexer(%d)\n", noc, 0, 0 );
 #else
-       Debug( LDAP_DEBUG_TRACE, "< structuralObjectClassMatch(%s,%s) = %d\n",
-               value->bv_val, a->bv_val, *matchp );
+       Debug( LDAP_DEBUG_TRACE, "< objectSubClassIndexer(%d)\n",
+               noc, 0, 0 );
 #endif
 #endif
 
-       return LDAP_SUCCESS;
+       rc = octetStringIndexer( use, mask, syntax, mr,
+               prefix, ocvalues, keysp );
+
+       ch_free( ocvalues );
+       return rc;
 }
+
+/* Index generation function */
+static int objectSubClassFilter(
+       slap_mask_t use,
+       slap_mask_t flags,
+       Syntax *syntax,
+       MatchingRule *mr,
+       struct berval *prefix,
+       void * assertedValue,
+       BerVarray *keysp )
+{
+#if OCDEBUG
+       struct berval *bv = (struct berval *) assertedValue;
+       ObjectClass *oc = oc_bvfind( bv );
+       if( oc ) {
+               bv = &oc->soc_cname;
+       }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( CONFIG, ENTRY, 
+               "< objectSubClassFilter(%s)\n", bv->bv_val, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "< objectSubClassFilter(%s)\n",
+               bv->bv_val, 0, 0 );
+#endif
 #endif
 
+       return octetStringFilter( use, flags, syntax, mr,
+               prefix, assertedValue, keysp );
+}
+
 static ObjectClassSchemaCheckFN rootDseObjectClass;
 static ObjectClassSchemaCheckFN aliasObjectClass;
 static ObjectClassSchemaCheckFN referralObjectClass;
@@ -213,6 +332,8 @@ static struct slap_schema_ad_map {
        char *ssam_defn;
        AttributeTypeSchemaCheckFN *ssam_check;
        slap_mask_t ssam_flags;
+       slap_mr_convert_func *ssam_convert;
+       slap_mr_normalize_func *ssam_normalize;
        slap_mr_match_func *ssam_match;
        slap_mr_indexer_func *ssam_indexer;
        slap_mr_filter_func *ssam_filter;
@@ -222,7 +343,9 @@ static struct slap_schema_ad_map {
                        "DESC 'RFC2256: object classes of the entity' "
                        "EQUALITY objectIdentifierMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )",
-               NULL, SLAP_AT_FINAL, objectClassMatch, NULL, NULL,
+               NULL, SLAP_AT_FINAL,
+               NULL, objectClassNormalize, objectSubClassMatch,
+                       objectSubClassIndexer, objectSubClassFilter,
                offsetof(struct slap_internal_schema, si_ad_objectClass) },
 
        /* user entry operational attributes */
@@ -231,7 +354,9 @@ static struct slap_schema_ad_map {
                        "EQUALITY objectIdentifierMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, structuralObjectClassMatch, NULL, NULL,
+               NULL, 0,
+               NULL, objectClassNormalize, objectSubClassMatch,
+                       objectSubClassIndexer, objectSubClassFilter,
                offsetof(struct slap_internal_schema, si_ad_structuralObjectClass) },
        { "createTimestamp", "( 2.5.18.1 NAME 'createTimestamp' "
                        "DESC 'RFC2252: time which object was created' "
@@ -239,7 +364,8 @@ static struct slap_schema_ad_map {
                        "ORDERING generalizedTimeOrderingMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_createTimestamp) },
        { "modifyTimestamp", "( 2.5.18.2 NAME 'modifyTimestamp' "
                        "DESC 'RFC2252: time which object was last modified' "
@@ -247,35 +373,40 @@ static struct slap_schema_ad_map {
                        "ORDERING generalizedTimeOrderingMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_modifyTimestamp) },
        { "creatorsName", "( 2.5.18.3 NAME 'creatorsName' "
                        "DESC 'RFC2252: name of creator' "
                        "EQUALITY distinguishedNameMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_creatorsName) },
        { "modifiersName", "( 2.5.18.4 NAME 'modifiersName' "
                        "DESC 'RFC2252: name of last modifier' "
                        "EQUALITY distinguishedNameMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_modifiersName) },
        { "hasSubordinates", "( 2.5.18.9 NAME 'hasSubordinates' "
                        "DESC 'X.501: entry has children' "
                        "EQUALITY booleanMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_hasSubordinates) },
        { "subschemaSubentry", "( 2.5.18.10 NAME 'subschemaSubentry' "
                        "DESC 'RFC2252: name of controlling subschema entry' "
                        "EQUALITY distinguishedNameMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE "
                        "NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_subschemaSubentry) },
 
        { "entryUUID", "( 1.3.6.1.4.1.4203.666.1.6 NAME 'entryUUID' "   
@@ -283,51 +414,59 @@ static struct slap_schema_ad_map {
                        "EQUALITY octetStringMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               NULL, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_entryUUID) },
        { "entryCSN", "( 1.3.6.1.4.1.4203.666.1.7 NAME 'entryCSN' "
                        "DESC 'LCUP/LDUP: change sequence number' "
                        "EQUALITY octetStringMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{64} "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )",
-               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               NULL, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_entryCSN) },
 
        /* root DSE attributes */
        { "altServer", "( 1.3.6.1.4.1.1466.101.120.6 NAME 'altServer' "
                        "DESC 'RFC2252: alternative servers' "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_altServer) },
        { "namingContexts", "( 1.3.6.1.4.1.1466.101.120.5 "
                        "NAME 'namingContexts' "
                        "DESC 'RFC2252: naming contexts' "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_namingContexts) },
        { "supportedControl", "( 1.3.6.1.4.1.1466.101.120.13 "
                        "NAME 'supportedControl' "
                        "DESC 'RFC2252: supported controls' "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_supportedControl) },
        { "supportedExtension", "( 1.3.6.1.4.1.1466.101.120.7 "
                        "NAME 'supportedExtension' "
                        "DESC 'RFC2252: supported extended operations' "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_supportedExtension) },
        { "supportedLDAPVersion", "( 1.3.6.1.4.1.1466.101.120.15 "
                        "NAME 'supportedLDAPVersion' "
                        "DESC 'RFC2252: supported LDAP versions' "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_supportedLDAPVersion) },
        { "supportedSASLMechanisms", "( 1.3.6.1.4.1.1466.101.120.14 "
                        "NAME 'supportedSASLMechanisms' "
                        "DESC 'RFC2252: supported SASL mechanisms'"
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_supportedSASLMechanisms) },
        { "supportedFeatures", "( 1.3.6.1.4.1.4203.1.3.5 "
                        "NAME 'supportedFeatures' "
@@ -335,7 +474,8 @@ static struct slap_schema_ad_map {
                        "EQUALITY objectIdentifierMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
                        "USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_supportedFeatures) },
        { "monitorContext", "( 1.3.6.1.4.1.4203.666.1.10 "
                        "NAME 'monitorContext' "
@@ -344,7 +484,8 @@ static struct slap_schema_ad_map {
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 "
                        "SINGLE-VALUE NO-USER-MODIFICATION "
                        "USAGE dSAOperation )",
-               rootDseAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               rootDseAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_monitorContext) },
        { "vendorName", "( 1.3.6.1.1.4 NAME 'vendorName' "
                        "DESC 'RFC3045: name of implementation vendor' "
@@ -352,7 +493,8 @@ static struct slap_schema_ad_map {
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
                        "SINGLE-VALUE NO-USER-MODIFICATION "
                        "USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_vendorName) },
        { "vendorVersion", "( 1.3.6.1.1.5 NAME 'vendorVersion' "
                        "DESC 'RFC3045: version of implementation' "
@@ -360,7 +502,8 @@ static struct slap_schema_ad_map {
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
                        "SINGLE-VALUE NO-USER-MODIFICATION "
                        "USAGE dSAOperation )",
-               rootDseAttribute, 0, NULL, NULL, NULL,
+               rootDseAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_vendorVersion) },
 
        /* subentry attributes */
@@ -368,13 +511,15 @@ static struct slap_schema_ad_map {
                        "EQUALITY objectIdentifierMatch "
                        "USAGE directoryOperation "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )",
-               administrativeRoleAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               administrativeRoleAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_administrativeRole) },
        { "subtreeSpecification", "( 2.5.18.6 NAME 'subtreeSpecification' "
                        "SINGLE-VALUE "
                        "USAGE directoryOperation "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.45 )",
-               subentryAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               subentryAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_subtreeSpecification) },
 
        /* subschema subentry attributes */
@@ -383,50 +528,58 @@ static struct slap_schema_ad_map {
                        "EQUALITY integerFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.17 "
                        "USAGE directoryOperation ) ",
-               subentryAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               subentryAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_ditStructureRules) },
        { "ditContentRules", "( 2.5.21.2 NAME 'dITContentRules' "
                        "DESC 'RFC2252: DIT content rules' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.16 USAGE directoryOperation )",
-               subentryAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               subentryAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_ditContentRules) },
        { "matchingRules", "( 2.5.21.4 NAME 'matchingRules' "
                        "DESC 'RFC2252: matching rules' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.30 USAGE directoryOperation )",
-               subentryAttribute, 0, NULL, NULL, NULL,
+               subentryAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_matchingRules) },
        { "attributeTypes", "( 2.5.21.5 NAME 'attributeTypes' "
                        "DESC 'RFC2252: attribute types' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.3 USAGE directoryOperation )",
-               subentryAttribute, 0, NULL, NULL, NULL,
+               subentryAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_attributeTypes) },
        { "objectClasses", "( 2.5.21.6 NAME 'objectClasses' "
                        "DESC 'RFC2252: object classes' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.37 USAGE directoryOperation )",
-               subentryAttribute, 0, NULL, NULL, NULL,
+               subentryAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_objectClasses) },
        { "nameForms", "( 2.5.21.7 NAME 'nameForms' "
                        "DESC 'RFC2252: name forms ' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.35 USAGE directoryOperation )",
-               subentryAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               subentryAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_nameForms) },
        { "matchingRuleUse", "( 2.5.21.8 NAME 'matchingRuleUse' "
                        "DESC 'RFC2252: matching rule uses' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.31 USAGE directoryOperation )",
-               subentryAttribute, SLAP_AT_HIDE, NULL, NULL, NULL,
+               subentryAttribute, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_matchingRuleUse) },
 
        { "ldapSyntaxes", "( 1.3.6.1.4.1.1466.101.120.16 NAME 'ldapSyntaxes' "
                        "DESC 'RFC2252: LDAP syntaxes' "
                        "EQUALITY objectIdentifierFirstComponentMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.54 USAGE directoryOperation )",
-               subentryAttribute, 0, NULL, NULL, NULL,
+               subentryAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_ldapSyntaxes) },
 
        /* knowledge information */
@@ -435,14 +588,16 @@ static struct slap_schema_ad_map {
                        "DESC 'RFC2256: name of aliased object' "
                        "EQUALITY distinguishedNameMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )",
-               aliasAttribute, SLAP_AT_FINAL, NULL, NULL, NULL,
+               aliasAttribute, SLAP_AT_FINAL,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_aliasedObjectName) },
        { "ref", "( 2.16.840.1.113730.3.1.34 NAME 'ref' "
                        "DESC 'namedref: subordinate referral URL' "
                        "EQUALITY caseExactMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
                        "USAGE distributedOperation )",
-               referralAttribute, 0, NULL, NULL, NULL,
+               referralAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_ref) },
 
        /* access control internals */
@@ -451,14 +606,16 @@ static struct slap_schema_ad_map {
                        "DESC 'OpenLDAP ACL entry pseudo-attribute' "
                        "SYNTAX 1.3.6.1.4.1.4203.1.1.1 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )",
-               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               NULL, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_entry) },
        { "children", "( 1.3.6.1.4.1.4203.1.3.2 "
                        "NAME 'children' "
                        "DESC 'OpenLDAP ACL children pseudo-attribute' "
                        "SYNTAX 1.3.6.1.4.1.4203.1.1.1 "
                        "SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )",
-               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               NULL, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_children) },
        { "saslAuthzTo", "( 1.3.6.1.4.1.4203.666.1.8 "
                        "NAME 'saslAuthzTo' "
@@ -466,7 +623,8 @@ static struct slap_schema_ad_map {
                        "EQUALITY caseExactMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
                        "USAGE distributedOperation )",
-               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               NULL, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_saslAuthzTo) },
        { "saslAuthzFrom", "( 1.3.6.1.4.1.4203.666.1.9 "
                        "NAME 'saslAuthzFrom' "
@@ -474,7 +632,8 @@ static struct slap_schema_ad_map {
                        "EQUALITY caseExactMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 "
                        "USAGE distributedOperation )",
-               NULL, SLAP_AT_HIDE, NULL, NULL, NULL,
+               NULL, SLAP_AT_HIDE,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_saslAuthzFrom) },
 #ifdef SLAPD_ACI_ENABLED
        { "OpenLDAPaci", "( 1.3.6.1.4.1.4203.666.1.5 "
@@ -483,7 +642,8 @@ static struct slap_schema_ad_map {
                        "EQUALITY OpenLDAPaciMatch "
                        "SYNTAX 1.3.6.1.4.1.4203.666.2.1 "
                        "USAGE directoryOperation )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_aci) },
 #endif
 
@@ -492,25 +652,29 @@ static struct slap_schema_ad_map {
                        "DESC 'RFC2256: common supertype of DN attributes' "
                        "EQUALITY distinguishedNameMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )",
-               NULL, SLAP_AT_ABSTRACT, NULL, NULL, NULL,
+               NULL, SLAP_AT_ABSTRACT,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_distinguishedName) },
        { "name", "( 2.5.4.41 NAME 'name' "
                        "DESC 'RFC2256: common supertype of name attributes' "
                        "EQUALITY caseIgnoreMatch "
                        "SUBSTR caseIgnoreSubstringsMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )",
-               NULL, SLAP_AT_ABSTRACT, NULL, NULL, NULL,
+               NULL, SLAP_AT_ABSTRACT,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_name) },
        { "cn", "( 2.5.4.3 NAME ( 'cn' 'commonName' ) "
                        "DESC 'RFC2256: common name(s) for which the entity is known by' "
                        "SUP name )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_cn) },
        { "userPassword", "( 2.5.4.35 NAME 'userPassword' "
                        "DESC 'RFC2256/2307: password of user' "
                        "EQUALITY octetStringMatch "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{128} )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_userPassword) },
 
 #ifdef SLAPD_AUTHPASSWD
@@ -520,7 +684,7 @@ static struct slap_schema_ad_map {
                        "EQUALITY 1.3.6.1.4.1.4203.1.2.2 "
                        "SYNTAX 1.3.6.1.4.1.4203.1.1.2 )",
                NULL, 0,
-               NULL, NULL, NULL,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_authPassword) },
        { "supportedAuthPasswordSchemes", "( 1.3.6.1.4.1.4203.1.3.3 "
                        "NAME 'supportedAuthPasswordSchemes' "
@@ -528,7 +692,8 @@ static struct slap_schema_ad_map {
                        "EQUALITY caseExactIA5Match "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} "
                        "USAGE dSAOperation )",
-               subschemaAttribute, 0, NULL, NULL, NULL,
+               subschemaAttribute, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_authPassword) },
 #endif
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
@@ -538,7 +703,8 @@ static struct slap_schema_ad_map {
                        "EQUALITY caseIgnoreIA5Match "
                        "SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 "
                        "SINGLE-VALUE )",
-               NULL, 0, NULL, NULL, NULL,
+               NULL, 0,
+               NULL, NULL, NULL, NULL, NULL,
                offsetof(struct slap_internal_schema, si_ad_krbName) },
 #endif
 
@@ -678,9 +844,32 @@ slap_schema_load( void )
                        /* install flags */
                        (*adp)->ad_type->sat_flags |= ad_map[i].ssam_flags;
 
-                       if( ad_map[i].ssam_match ) {
-                               /* install custom matching routine */
-                               (*adp)->ad_type->sat_equality->smr_match = ad_map[i].ssam_match;
+                       /* install custom rule routine */
+                       if( ad_map[i].ssam_convert ||
+                               ad_map[i].ssam_normalize ||
+                               ad_map[i].ssam_match ||
+                               ad_map[i].ssam_indexer ||
+                               ad_map[i].ssam_filter )
+                       {
+                               MatchingRule *mr = ch_malloc( sizeof( MatchingRule ) );
+                               *mr = *(*adp)->ad_type->sat_equality;
+                               (*adp)->ad_type->sat_equality = mr;
+                               
+                               if( ad_map[i].ssam_convert ) {
+                                       mr->smr_convert = ad_map[i].ssam_convert;
+                               }
+                               if( ad_map[i].ssam_normalize ) {
+                                       mr->smr_normalize = ad_map[i].ssam_normalize;
+                               }
+                               if( ad_map[i].ssam_match ) {
+                                       mr->smr_match = ad_map[i].ssam_match;
+                               }
+                               if( ad_map[i].ssam_indexer ) {
+                                       mr->smr_indexer = ad_map[i].ssam_indexer;
+                               }
+                               if( ad_map[i].ssam_filter ) {
+                                       mr->smr_filter = ad_map[i].ssam_filter;
+                               }
                        }
                }
        }
index e02ef739705b6e535342d578167adb81d1ed7bea..86a324d7361988a733bebbbe78c4fe76b3445c98 100644 (file)
@@ -505,7 +505,8 @@ typedef int (ObjectClassSchemaCheckFN)(
        char *textbuf, size_t textlen );
 
 typedef struct slap_object_class {
-       LDAPObjectClass         soc_oclass;
+       LDAPObjectClass                 soc_oclass;
+       struct berval                   soc_cname;
        struct slap_object_class        **soc_sups;
        AttributeType                           **soc_required;
        AttributeType                           **soc_allowed;
@@ -1500,6 +1501,7 @@ typedef struct slap_paged_state {
 typedef struct slap_op {
        unsigned long o_opid;   /* id of this operation */
        unsigned long o_connid; /* id of conn initiating this op */
+       struct slap_conn *o_conn;       /* connection spawning this op */
 
        ber_int_t       o_msgid;        /* msgid of the request */
        ber_int_t       o_protocol;     /* version of the LDAP protocol used by client */
@@ -1534,6 +1536,7 @@ typedef struct slap_op {
        slap_callback   *o_callback;    /* callback pointers */
        LDAPControl     **o_ctrls;       /* controls */
 
+       void    *o_threadctx;           /* thread pool thread context */
        void    *o_private;     /* anything the backend needs */
 
        LDAP_STAILQ_ENTRY(slap_op)      o_next; /* next operation in list         */
@@ -1609,6 +1612,7 @@ typedef struct slap_conn {
        int             c_sasl_layers;   /* true if we need to install SASL i/o handlers */
        void    *c_sasl_context;        /* SASL session context */
        void    *c_sasl_extra;          /* SASL session extra stuff */
+       struct slap_op  *c_sasl_bindop; /* set to current op if it's a bind */
 
        PagedResultsState c_pagedresults_state; /* paged result state */
 
index 002a105ab36aad5cd4c7ede354cecb4992ec15e8..3aa2adfa5000173347769adde26816223823de85 100644 (file)
@@ -53,6 +53,36 @@ value_add(
        return LDAP_SUCCESS;
 }
 
+int
+value_add_one( 
+    BerVarray *vals,
+    struct berval *addval
+)
+{
+       int     n;
+       BerVarray v2;
+
+       if ( *vals == NULL ) {
+               *vals = (BerVarray) ch_malloc( 2 * sizeof(struct berval) );
+               n = 0;
+       } else {
+               for ( n = 0; (*vals)[n].bv_val != NULL; n++ ) {
+                       ;       /* Empty */
+               }
+               *vals = (BerVarray) ch_realloc( (char *) *vals,
+                   (n + 2) * sizeof(struct berval) );
+       }
+
+       v2 = *vals + n;
+       ber_dupbv(v2, addval);
+
+       v2++;
+       v2->bv_val = NULL;
+       v2->bv_len = 0;
+
+       return LDAP_SUCCESS;
+}
+
 int
 value_validate(
        MatchingRule *mr,
index 4bef01e5210c0b475e3fdab64896ccef451ca7a0..0300c166c48f75c0a11f1cfcc8a5dabc32334820 100644 (file)
-dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
 cn: James A Jones 1
 cn: James Jones
 cn: Jim Jones
 sn: Jones
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jaj
-krbname: jaj@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
 homephone: +1 313 555 4772
-multilinedescription: Outstanding
+description: Outstanding
 title: Mad Cow Researcher, UM Alumni Association
 pager: +1 313 555 3923
 mail: jaj@mail.alumni.umich.edu
-modifytimestamp: 960404171231Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 facsimiletelephonenumber: +1 313 555 4332
 telephonenumber: +1 313 555 0895
+
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Un
- iversity of Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
 cn: All Staff
-joinable: FALSE
-multilinedescription: Everyone in the sample data
-objectclass: rfc822mailgroup
+description: Everyone in the sample data
+objectclass: groupofnames
 
 dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All Alumni Assoc Staff
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
 cn: Alumni Assoc Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
+objectclass: groupofnames
 
-dn: ou=Alumni Association, ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Alumni Association
 
-dn: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Univer
- sity of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
+ y of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Barbara Jensen
 cn: Babs Jensen
 sn: Jensen
+uid: bjensen
 title: Mythical Manager, Research Systems
 postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
  Arbor, MI 48103-4943
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: bjensen
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 mail: bjensen@mailgw.umich.edu
 homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
-krbname: bjensen@umich.edu
-multilinedescription: Mythical manager of the rsdd unix project 
-nobatchupdates: TRUE
-notice: Off sailing this month.
-onvacation: FALSE
-labeledurl: http://www.umich.edu/ U-M Home Page
+description: Mythical manager of the rsdd unix project
 drink: water
-lastmodifiedtime: 960404035839Z
-lastmodifiedby: cn=Barbara Jensen, ou=Information Technology Division, ou=Peop
- le, o=University of Michigan, c=US
 homephone: +1 313 555 2333
 pager: +1 313 555 3233
 facsimiletelephonenumber: +1 313 555 2274
 telephonenumber: +1 313 555 9022
 
-dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Bjorn Jensen
 cn: Biiff Jensen
 sn: Jensen
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: bjorn
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
 drink: Iced Tea
-multilinedescription: Hiker, biker
+description: Hiker, biker
 title: Director, Embedded Systems
 postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
 mail: bjorn@mailgw.umich.edu
@@ -144,126 +106,84 @@ pager: +1 313 555 4474
 facsimiletelephonenumber: +1 313 555 2177
 telephonenumber: +1 313 555 0355
 
-dn: ou=Groups, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Groups,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Groups
-lastmodifiedtime: 950120182331Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 
-dn: ou=Information Technology Division, ou=People, o=University of Michigan, c
- =US
-objectclass: top
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
-ou: Information Technology Divisio
+ou: Information Technology Division
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All ITD Staff
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
 cn: ITD Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-labeledurl: http://www.itd.umich.edu ITD Home Page
- University of Michigan,c=US
-telephonenumber: +1 810 555 1212
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+ou: Groups
 
-dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=Unive
- rsity of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Universi
+ ty of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: James A Jones 2
 cn: James Jones
 cn: Jim Jones
 sn: Doe
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jjones
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 933 Brooks $ Ann Arbor, MI 48104
 homephone: +1 313 555 8838
 title: Senior Manager, Information Technology Division
-multilinedescription: Not around very much
+description: Not around very much
 mail: jjones@mailgw.umich.edu
 postaladdress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
 pager: +1 313 555 2833
 facsimiletelephonenumber: +1 313 555 8688
 telephonenumber: +1 313 555 7334
 
-dn: cn=John Doe, ou=Information Technology Division, ou=People, o=University o
- f Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University of M
+ ichigan,c=US
+objectclass: OpenLDAPperson
 cn: John Doe
 cn: Jonathon Doe
 sn: Doe
-postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: johnd
-krbname: johnd@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 912 East Bllvd $ Ann Arbor, MI 48104
 title: System Administrator, Information Technology Division
-multilinedescription: overworked!
+description: overworked!
 mail: johnd@mailgw.umich.edu
 homephone: +1 313 555 3774
 pager: +1 313 555 6573
 facsimiletelephonenumber: +1 313 555 4544
 telephonenumber: +1 313 555 9394
 
-dn: cn=Manager, o=University of Michigan, c=US
-objectclass: top
+dn: cn=Manager,o=University of Michigan,c=US
 objectclass: person
-objectclass: quipuObject
-objectclass: kerberosSecurityObject
 cn: Manager
 cn: Directory Manager
 cn: Dir Man
 sn: Manager
 description: Manager of the directory
-lastmodifiedtime: 951212214144Z
-lastmodifiedby: cn=Manager, o=University of Michigan, c=US
-krbname: bjensen@umich.edu
 
-dn: ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: People
 
-dn: o=University of Michigan, c=US
-objectclass: top
+dn: o=University of Michigan,c=US
 objectclass: organization
 objectclass: domainRelatedObject
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 l: Ann Arbor, Michigan
 st: Michigan
-streetaddress: 535 West William St.
 o: University of Michigan
 o: UMICH
 o: UM
@@ -271,8 +191,7 @@ o: U-M
 o: U of M
 description: The University of Michigan at Ann Arbor
 postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
- 09 $ USpostalcode: 48109
+ 09 $ US
 telephonenumber: +1 313 764-1817
-lastmodifiedtime: 930106182800Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 associateddomain: umich.edu
+
diff --git a/tests/data/do_add.1 b/tests/data/do_add.1
new file mode 100644 (file)
index 0000000..f54182d
--- /dev/null
@@ -0,0 +1,19 @@
+cn=James A Jones 2,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 2
+cn: James Jones
+cn: Jim Jones
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
diff --git a/tests/data/do_add.2 b/tests/data/do_add.2
new file mode 100644 (file)
index 0000000..728823d
--- /dev/null
@@ -0,0 +1,19 @@
+cn=James A Jones 3,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 3
+cn: James Jones
+cn: Jim Jones
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
diff --git a/tests/data/do_add.3 b/tests/data/do_add.3
new file mode 100644 (file)
index 0000000..f0d4d26
--- /dev/null
@@ -0,0 +1,19 @@
+cn=James A Jones 4,ou=People,o=University of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 4
+cn: James Jones
+cn: Jim Jones
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
diff --git a/tests/data/do_add.4 b/tests/data/do_add.4
new file mode 100644 (file)
index 0000000..9dc9e4a
--- /dev/null
@@ -0,0 +1,19 @@
+cn=James A Jones 5,o=University of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 5
+cn: James Jones
+cn: Jim Jones
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
diff --git a/tests/data/lang-out.ldif b/tests/data/lang-out.ldif
new file mode 100644 (file)
index 0000000..45d1a15
--- /dev/null
@@ -0,0 +1,34 @@
+dn: o=University of Michigan,c=US
+objectClass: organization
+objectClass: extensibleObject
+o: University of Michigan
+o;lang-x;lang-xx;lang-yy;lang-z;lang-y;lang-zz: University of Michigan
+name;lang-en-us: Billy Ray
+name;lang-en-us: Billy Bob
+cn;lang-en-us: Billy Ray
+name: Billy Ray
+sn;lang-en-gb;lang-en-us: Billy Ray
+sn: Ray
+
+dn: o=University of Michigan,c=US
+o: University of Michigan
+o;lang-x;lang-xx;lang-yy;lang-z;lang-y;lang-zz: University of Michigan
+name;lang-en-us: Billy Ray
+name;lang-en-us: Billy Bob
+cn;lang-en-us: Billy Ray
+name: Billy Ray
+sn;lang-en-gb;lang-en-us: Billy Ray
+sn: Ray
+
+dn: o=University of Michigan,c=US
+name;lang-en-us: Billy Ray
+name;lang-en-us: Billy Bob
+cn;lang-en-us: Billy Ray
+sn;lang-en-gb;lang-en-us: Billy Ray
+
+dn: o=University of Michigan,c=US
+name;lang-en-us: Billy Ray
+name;lang-en-us: Billy Bob
+cn;lang-en-us: Billy Ray
+sn;lang-en-gb;lang-en-us: Billy Ray
+
index 71475341009893fbd4ebcf671bb23ace276cad41..7a29e3f54bdb199352b7a5925f2dd3e1d760b68b 100644 (file)
@@ -1,94 +1,64 @@
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
+owner: cn=Manager,o=University of Michigan,c=US
 cn: All Staff
-joinable: FALSE
-multilinedescription: Everyone in the sample data
-objectclass: rfc822mailgroup
-modifiersname: cn=Manager,o=University of Michigan,c=US
+description: Everyone in the sample data
+objectclass: groupofnames
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
 
 dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All Alumni Assoc Staff
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
 cn: Alumni Assoc Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
+objectclass: groupofnames
 
-dn: ou=Alumni Association, ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Alumni Association
 
-dn: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Univer
- sity of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
+ y of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Barbara Jensen
 cn: Babs Jensen
 sn: Jensen
+uid: bjensen
 title: Mythical Manager, Research Systems
 postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
  Arbor, MI 48103-4943
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: bjensen
-userpassword: bjensen
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: YmplbnNlbg==
 mail: bjensen@mailgw.umich.edu
 homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
-krbname: bjensen@umich.edu
-multilinedescription: Mythical manager of the rsdd unix project 
-nobatchupdates: TRUE
-notice: Off sailing this month.
-onvacation: FALSE
-labeledurl: http://www.umich.edu/ U-M Home Page
+description: Mythical manager of the rsdd unix project
 drink: water
-lastmodifiedtime: 960404035839Z
-lastmodifiedby: cn=Barbara Jensen, ou=Information Technology Division, ou=Peop
- le, o=University of Michigan, c=US
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 2333
 pager: +1 313 555 3233
 facsimiletelephonenumber: +1 313 555 2274
 telephonenumber: +1 313 555 9022
 
-dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Bjorn Jensen
 cn: Biiff Jensen
 sn: Jensen
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: bjorn
-userpassword: bjorn
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: Ympvcm4=
 homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
 title: Director, Embedded Systems
 postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
@@ -97,262 +67,177 @@ homephone: +1 313 555 5444
 pager: +1 313 555 4474
 facsimiletelephonenumber: +1 313 555 2177
 telephonenumber: +1 313 555 0355
-modifiersname: cn=Manager,o=University of Michigan,c=US
-multilinedescription: The replaced multiLineDescription $ Blah Woof.
+description: The replaced multiLineDescription $ Blah Woof.
 drink: Iced Tea
 drink: Mad Dog 20/20
 
-dn: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
 cn: Dorothy Stevens
 cn: Dot Stevens
 sn: Stevens
+uid: dots
 title: Secretary, UM Alumni Association
 postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: dots
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 drink: Lemonade
 homepostaladdress: 377 White St. Apt. 3 $ Ann Arbor, MI 48104
-multilinedescription: Very tall
+description: Very tall
 facsimiletelephonenumber: +1 313 555 3223
 telephonenumber: +1 313 555 3664
 mail: dots@mail.alumni.umich.edu
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 0454
 
-dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=Universit
- y of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Gern Jensen,ou=Information Technology Division,ou=People,o=University o
+ f Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Gern Jensen
+sn: Jensen
+uid: gjensen
 title: Chief Investigator, ITD
 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: gjensen
-krbname: gjensen@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 drink: Coffee
 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
-multilinedescription: Very odd
+description: Very odd
 facsimiletelephonenumber: +1 313 555 7557
 telephonenumber: +1 313 555 8343
 mail: gjensen@mailgw.umich.edu
 homephone: +1 313 555 8844
-creatorsname: cn=Manager,o=University of Michigan,c=US
 
-dn: ou=Groups, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Groups,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Groups
-lastmodifiedtime: 950120182331Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 
-dn: ou=Information Technology Division, ou=People, o=University of Michigan, c
- =US
-objectclass: top
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
-ou: Information Technology Divisio
+ou: Information Technology Division
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All ITD Staff
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
 cn: ITD Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-labeledurl: http://www.itd.umich.edu ITD Home Page
-modifiersname: cn=Manager,o=University of Michigan,c=US
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
 
-dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
 cn: James A Jones 1
 cn: James Jones
 cn: Jim Jones
 sn: Jones
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jaj
-krbname: jaj@umich.edu
-userpassword: jaj
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
 homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
 homephone: +1 313 555 4772
-multilinedescription: Outstanding
+description: Outstanding
 title: Mad Cow Researcher, UM Alumni Association
 pager: +1 313 555 3923
 mail: jaj@mail.alumni.umich.edu
 facsimiletelephonenumber: +1 313 555 4332
 telephonenumber: +1 313 555 0895
-modifiersname: cn=Manager,o=University of Michigan,c=US
 drink: Orange Juice
 
-dn: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michigan, c
- =US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Jane Doe
 cn: Jane Alverson
 sn: Doe
+uid: jdoe
 title: Programmer Analyst, UM Alumni Association
 postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: jdoe
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
 drink: diet coke
-multilinedescription: Enthusiastic
+description: Enthusiastic
 mail: jdoe@woof.net
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 5445
 pager: +1 313 555 1220
 facsimiletelephonenumber: +1 313 555 2311
 telephonenumber: +1 313 555 4774
 
-dn: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of Michi
- gan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan
+ ,c=US
+objectclass: OpenLDAPperson
 cn: Jennifer Smith
 cn: Jen Smith
 sn: Smith
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jen
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 drink: Sam Adams
 homepostaladdress: 1000 Maple #44 $ Ann Arbor, MI 48103
 title: Telemarketer, UM Alumni Association
 mail: jen@mail.alumni.umich.edu
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 2333
 pager: +1 313 555 6442
 facsimiletelephonenumber: +1 313 555 2756
 telephonenumber: +1 313 555 8232
 
-dn: cn=John Doe, ou=Information Technology Division, ou=People, o=University o
- f Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University of M
+ ichigan,c=US
+objectclass: OpenLDAPperson
 cn: John Doe
 cn: Jonathon Doe
 sn: Doe
-postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: johnd
-krbname: johnd@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 912 East Bllvd $ Ann Arbor, MI 48104
 title: System Administrator, Information Technology Division
-multilinedescription: overworked!
+description: overworked!
 mail: johnd@mailgw.umich.edu
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 3774
 pager: +1 313 555 6573
 facsimiletelephonenumber: +1 313 555 4544
 telephonenumber: +1 313 555 9394
 
-dn: cn=Manager, o=University of Michigan, c=US
-objectclass: top
+dn: cn=Manager,o=University of Michigan,c=US
 objectclass: person
-objectclass: quipuObject
-objectclass: kerberosSecurityObject
 cn: Manager
 cn: Directory Manager
 cn: Dir Man
 sn: Manager
 description: Manager of the directory
-userpassword: secret
-lastmodifiedtime: 951212214144Z
-lastmodifiedby: cn=Manager, o=University of Michigan, c=US
-krbname: bjensen@umich.edu
+userpassword:: c2VjcmV0
 
-dn: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Michigan
- , c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan,c=
+ US
+objectclass: OpenLDAPperson
 cn: Mark Elliot
 cn: Mark A Elliot
 sn: Elliot
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: melliot
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 199 Outer Drive $ Ypsilanti, MI 48198
 homephone: +1 313 555 0388
 drink: Gasoline
 title: Director, UM Alumni Association
 mail: melliot@mail.alumni.umich.edu
-modifiersname: cn=Manager,o=University of Michigan,c=US
 pager: +1 313 555 7671
 facsimiletelephonenumber: +1 313 555 7762
 telephonenumber: +1 313 555 4177
 
-dn: ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: People
 
-dn: o=University of Michigan, c=US
-objectclass: top
+dn: o=University of Michigan,c=US
 objectclass: organization
 objectclass: domainRelatedObject
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 l: Ann Arbor, Michigan
 st: Michigan
-streetaddress: 535 West William St.
 o: University of Michigan
 o: UMICH
 o: UM
@@ -360,32 +245,23 @@ o: U-M
 o: U of M
 description: The University of Michigan at Ann Arbor
 postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
- 09 $ USpostalcode: 48109
+ 09 $ US
 telephonenumber: +1 313 764-1817
-lastmodifiedtime: 930106182800Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 associateddomain: umich.edu
 
-dn: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
 cn: Ursula Hampster
 sn: Hampster
+uid: uham
 title: Secretary, UM Alumni Association
 postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: uham
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
 mail: uham@mail.alumni.umich.edu
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 8421
 pager: +1 313 555 2844
 facsimiletelephonenumber: +1 313 555 9700
 telephonenumber: +1 313 555 5331
+
diff --git a/tests/data/modrdn.out.master b/tests/data/modrdn.out.master
new file mode 100644 (file)
index 0000000..d0cf29c
--- /dev/null
@@ -0,0 +1,289 @@
+dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+cn: All Staff
+description: Everyone in the sample data
+objectclass: groupofnames
+
+dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
+cn: Alumni Assoc Staff
+objectclass: groupofnames
+
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: Alumni Association
+
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Univer
+ sity of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: Barbara Jensen
+cn: Babs Jensen
+sn: Jensen
+uid: bjensen
+title: Mythical Manager, Research Systems
+postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
+ Arbor, MI 48103-4943
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: YmplbnNlbg==
+mail: bjensen@mailgw.umich.edu
+homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
+description: Mythical manager of the rsdd unix project
+drink: water
+homephone: +1 313 555 2333
+pager: +1 313 555 3233
+facsimiletelephonenumber: +1 313 555 2274
+telephonenumber: +1 313 555 9022
+
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Universi
+ ty of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: Bjorn Jensen
+cn: Biiff Jensen
+sn: Jensen
+uid: bjorn
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: Ympvcm4=
+homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
+drink: Iced Tea
+description: Hiker, biker
+title: Director, Embedded Systems
+postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
+mail: bjorn@mailgw.umich.edu
+homephone: +1 313 555 5444
+pager: +1 313 555 4474
+facsimiletelephonenumber: +1 313 555 2177
+telephonenumber: +1 313 555 0355
+
+dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+objectclass: OpenLDAPperson
+cn: Dorothy Stevens
+cn: Dot Stevens
+sn: Stevens
+uid: dots
+title: Secretary, UM Alumni Association
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+drink: Lemonade
+homepostaladdress: 377 White St. Apt. 3 $ Ann Arbor, MI 48104
+description: Very tall
+facsimiletelephonenumber: +1 313 555 3223
+telephonenumber: +1 313 555 3664
+mail: dots@mail.alumni.umich.edu
+homephone: +1 313 555 0454
+
+dn: ou=Groups,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: Groups
+
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c
+ =US
+objectclass: organizationalUnit
+ou: Information Technology Division
+
+dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
+cn: ITD Staff
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+
+dn: cn=James A Jones II,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James Jones
+cn: Jim Jones
+cn: James A Jones II
+sn: Doe
+uid: jjones
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 933 Brooks $ Ann Arbor, MI 48104
+homephone: +1 313 555 8838
+title: Senior Manager, Information Technology Division
+description: Not around very much
+mail: jjones@mailgw.umich.edu
+postaladdress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
+pager: +1 313 555 2833
+facsimiletelephonenumber: +1 313 555 8688
+telephonenumber: +1 313 555 7334
+
+dn: cn=James A Jones III,ou=Alumni Association,ou=People,o=University of Mi
+ chigan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 1
+cn: James Jones
+cn: Jim Jones
+cn: James A Jones III
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
+dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+objectclass: OpenLDAPperson
+cn: Jane Doe
+cn: Jane Alverson
+sn: Doe
+uid: jdoe
+title: Programmer Analyst, UM Alumni Association
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
+drink: diet coke
+description: Enthusiastic
+mail: jdoe@woof.net
+homephone: +1 313 555 5445
+pager: +1 313 555 1220
+facsimiletelephonenumber: +1 313 555 2311
+telephonenumber: +1 313 555 4774
+
+dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michi
+ gan,c=US
+objectclass: OpenLDAPperson
+cn: Jennifer Smith
+cn: Jen Smith
+sn: Smith
+uid: jen
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+drink: Sam Adams
+homepostaladdress: 1000 Maple #44 $ Ann Arbor, MI 48103
+title: Telemarketer, UM Alumni Association
+mail: jen@mail.alumni.umich.edu
+homephone: +1 313 555 2333
+pager: +1 313 555 6442
+facsimiletelephonenumber: +1 313 555 2756
+telephonenumber: +1 313 555 8232
+
+dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University o
+ f Michigan,c=US
+objectclass: OpenLDAPperson
+cn: John Doe
+cn: Jonathon Doe
+sn: Doe
+uid: johnd
+postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 912 East Bllvd $ Ann Arbor, MI 48104
+title: System Administrator, Information Technology Division
+description: overworked!
+mail: johnd@mailgw.umich.edu
+homephone: +1 313 555 3774
+pager: +1 313 555 6573
+facsimiletelephonenumber: +1 313 555 4544
+telephonenumber: +1 313 555 9394
+
+dn: cn=Manager,o=University of Michigan,c=US
+objectclass: person
+cn: Manager
+cn: Directory Manager
+cn: Dir Man
+sn: Manager
+description: Manager of the directory
+userpassword:: c2VjcmV0
+
+dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan
+ ,c=US
+objectclass: OpenLDAPperson
+cn: Mark Elliot
+cn: Mark A Elliot
+sn: Elliot
+uid: melliot
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 199 Outer Drive $ Ypsilanti, MI 48198
+homephone: +1 313 555 0388
+drink: Gasoline
+title: Director, UM Alumni Association
+mail: melliot@mail.alumni.umich.edu
+pager: +1 313 555 7671
+facsimiletelephonenumber: +1 313 555 7762
+telephonenumber: +1 313 555 4177
+
+dn: ou=People,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: People
+
+dn: o=University of Michigan,c=US
+objectclass: organization
+objectclass: domainRelatedObject
+l: Ann Arbor, Michigan
+st: Michigan
+o: University of Michigan
+o: UMICH
+o: UM
+o: U-M
+o: U of M
+description: The University of Michigan at Ann Arbor
+postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
+ 09 $ US
+telephonenumber: +1 313 764-1817
+associateddomain: umich.edu
+
+dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+objectclass: OpenLDAPperson
+cn: Ursula Hampster
+sn: Hampster
+uid: uham
+title: Secretary, UM Alumni Association
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
+mail: uham@mail.alumni.umich.edu
+homephone: +1 313 555 8421
+pager: +1 313 555 2844
+facsimiletelephonenumber: +1 313 555 9700
+telephonenumber: +1 313 555 5331
+
diff --git a/tests/data/modrdn.out.master.0 b/tests/data/modrdn.out.master.0
new file mode 100644 (file)
index 0000000..58e584d
--- /dev/null
@@ -0,0 +1,287 @@
+dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+cn: All Staff
+description: Everyone in the sample data
+objectclass: groupofnames
+
+dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
+cn: Alumni Assoc Staff
+objectclass: groupofnames
+
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: Alumni Association
+
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
+ y of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: Barbara Jensen
+cn: Babs Jensen
+sn: Jensen
+uid: bjensen
+title: Mythical Manager, Research Systems
+postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
+ Arbor, MI 48103-4943
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: YmplbnNlbg==
+mail: bjensen@mailgw.umich.edu
+homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
+description: Mythical manager of the rsdd unix project
+drink: water
+homephone: +1 313 555 2333
+pager: +1 313 555 3233
+facsimiletelephonenumber: +1 313 555 2274
+telephonenumber: +1 313 555 9022
+
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: Bjorn Jensen
+cn: Biiff Jensen
+sn: Jensen
+uid: bjorn
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: Ympvcm4=
+homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
+drink: Iced Tea
+description: Hiker, biker
+title: Director, Embedded Systems
+postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
+mail: bjorn@mailgw.umich.edu
+homephone: +1 313 555 5444
+pager: +1 313 555 4474
+facsimiletelephonenumber: +1 313 555 2177
+telephonenumber: +1 313 555 0355
+
+dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
+cn: Dorothy Stevens
+cn: Dot Stevens
+sn: Stevens
+uid: dots
+title: Secretary, UM Alumni Association
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+drink: Lemonade
+homepostaladdress: 377 White St. Apt. 3 $ Ann Arbor, MI 48104
+description: Very tall
+facsimiletelephonenumber: +1 313 555 3223
+telephonenumber: +1 313 555 3664
+mail: dots@mail.alumni.umich.edu
+homephone: +1 313 555 0454
+
+dn: ou=Groups,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: Groups
+
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: Information Technology Division
+
+dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
+cn: ITD Staff
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+
+dn: cn=James A Jones II,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James Jones
+cn: Jim Jones
+cn: James A Jones II
+sn: Doe
+uid: jjones
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 933 Brooks $ Ann Arbor, MI 48104
+homephone: +1 313 555 8838
+title: Senior Manager, Information Technology Division
+description: Not around very much
+mail: jjones@mailgw.umich.edu
+postaladdress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
+pager: +1 313 555 2833
+facsimiletelephonenumber: +1 313 555 8688
+telephonenumber: +1 313 555 7334
+
+dn: cn=James A Jones III,ou=Alumni Association,ou=People,o=University of Michi
+ gan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 1
+cn: James Jones
+cn: Jim Jones
+cn: James A Jones III
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
+dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: Jane Doe
+cn: Jane Alverson
+sn: Doe
+uid: jdoe
+title: Programmer Analyst, UM Alumni Association
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
+drink: diet coke
+description: Enthusiastic
+mail: jdoe@woof.net
+homephone: +1 313 555 5445
+pager: +1 313 555 1220
+facsimiletelephonenumber: +1 313 555 2311
+telephonenumber: +1 313 555 4774
+
+dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan
+ ,c=US
+objectclass: OpenLDAPperson
+cn: Jennifer Smith
+cn: Jen Smith
+sn: Smith
+uid: jen
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+drink: Sam Adams
+homepostaladdress: 1000 Maple #44 $ Ann Arbor, MI 48103
+title: Telemarketer, UM Alumni Association
+mail: jen@mail.alumni.umich.edu
+homephone: +1 313 555 2333
+pager: +1 313 555 6442
+facsimiletelephonenumber: +1 313 555 2756
+telephonenumber: +1 313 555 8232
+
+dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University of M
+ ichigan,c=US
+objectclass: OpenLDAPperson
+cn: John Doe
+cn: Jonathon Doe
+sn: Doe
+uid: johnd
+postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 912 East Bllvd $ Ann Arbor, MI 48104
+title: System Administrator, Information Technology Division
+description: overworked!
+mail: johnd@mailgw.umich.edu
+homephone: +1 313 555 3774
+pager: +1 313 555 6573
+facsimiletelephonenumber: +1 313 555 4544
+telephonenumber: +1 313 555 9394
+
+dn: cn=Manager,o=University of Michigan,c=US
+objectclass: person
+cn: Manager
+cn: Directory Manager
+cn: Dir Man
+sn: Manager
+description: Manager of the directory
+userpassword:: c2VjcmV0
+
+dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan,c=
+ US
+objectclass: OpenLDAPperson
+cn: Mark Elliot
+cn: Mark A Elliot
+sn: Elliot
+uid: melliot
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 199 Outer Drive $ Ypsilanti, MI 48198
+homephone: +1 313 555 0388
+drink: Gasoline
+title: Director, UM Alumni Association
+mail: melliot@mail.alumni.umich.edu
+pager: +1 313 555 7671
+facsimiletelephonenumber: +1 313 555 7762
+telephonenumber: +1 313 555 4177
+
+dn: ou=People,o=University of Michigan,c=US
+objectclass: organizationalUnit
+ou: People
+
+dn: o=University of Michigan,c=US
+objectclass: organization
+objectclass: domainRelatedObject
+l: Ann Arbor, Michigan
+st: Michigan
+o: University of Michigan
+o: UMICH
+o: UM
+o: U-M
+o: U of M
+description: The University of Michigan at Ann Arbor
+postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
+ 09 $ US
+telephonenumber: +1 313 764-1817
+associateddomain: umich.edu
+
+dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
+cn: Ursula Hampster
+sn: Hampster
+uid: uham
+title: Secretary, UM Alumni Association
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
+mail: uham@mail.alumni.umich.edu
+homephone: +1 313 555 8421
+pager: +1 313 555 2844
+facsimiletelephonenumber: +1 313 555 9700
+telephonenumber: +1 313 555 5331
+
diff --git a/tests/data/modrdn.out.master.1 b/tests/data/modrdn.out.master.1
new file mode 100644 (file)
index 0000000..c99c1e3
--- /dev/null
@@ -0,0 +1,21 @@
+dn: cn=James A Jones III,ou=Alumni Association,ou=People,o=University of Michi
+ gan,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 1
+cn: James Jones
+cn: Jim Jones
+cn: James A Jones III
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
diff --git a/tests/data/modrdn.out.master.2 b/tests/data/modrdn.out.master.2
new file mode 100644 (file)
index 0000000..61dd866
--- /dev/null
@@ -0,0 +1,19 @@
+dn: cn=James A Jones II,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+objectclass: OpenLDAPperson
+cn: James Jones
+cn: Jim Jones
+cn: James A Jones II
+sn: Doe
+uid: jjones
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homepostaladdress: 933 Brooks $ Ann Arbor, MI 48104
+homephone: +1 313 555 8838
+title: Senior Manager, Information Technology Division
+description: Not around very much
+mail: jjones@mailgw.umich.edu
+postaladdress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
+pager: +1 313 555 2833
+facsimiletelephonenumber: +1 313 555 8688
+telephonenumber: +1 313 555 7334
+
diff --git a/tests/data/modrdn.out.master.3 b/tests/data/modrdn.out.master.3
new file mode 100644 (file)
index 0000000..7b8474b
--- /dev/null
@@ -0,0 +1,20 @@
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
+cn: James A Jones 1
+cn: James Jones
+cn: Jim Jones
+sn: Jones
+uid: jaj
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
+homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homephone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimiletelephonenumber: +1 313 555 4332
+telephonenumber: +1 313 555 0895
+
index 221af87ea226c85f33c89e1a69114bd37f9fd184..a8768b095f32c3b8d7990dd707bafda81f504bf0 100644 (file)
@@ -1,31 +1,26 @@
 dn: o=University of Michigan,c=US
-objectclass: top
 objectclass: organization
 o: University of Michigan
 
 dn: cn=md5,o=University of Michigan,c=US
-objectclass: top
 objectclass: person
 cn: md5
 sn: md5
 userpassword:: e01ENX1YcjRpbE96UTRQQ09xM2FRMHFidWFRPT0=
 
 dn: cn=smd5,o=University of Michigan,c=US
-objectclass: top
 objectclass: person
 cn: smd5
 sn: smd5
 userpassword: secret
 
 dn: cn=sha,o=University of Michigan,c=US
-objectclass: top
 objectclass: person
 cn: sha
 sn: sha
 userpassword:: e1NIQX01ZW42RzZNZXpScm9UM1hLcWtkUE9tWS9CZlE9
 
 dn: cn=ssha,o=University of Michigan,c=US
-objectclass: top
 objectclass: person
 cn: ssha
 sn: ssha
index 52619e9837f9cfa1c96d9ff0009cea19ff39e4f5..3614047aea5b81ae9fb62d0f9997ed5e10337ad9 100644 (file)
-dn: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Univer
- sity of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
+ y of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Barbara Jensen
 cn: Babs Jensen
 sn: Jensen
+uid: bjensen
 title: Mythical Manager, Research Systems
 postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
  Arbor, MI 48103-4943
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: bjensen
-userpassword: bjensen
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: YmplbnNlbg==
 mail: bjensen@mailgw.umich.edu
 homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
-krbname: bjensen@umich.edu
-multilinedescription: Mythical manager of the rsdd unix project 
-nobatchupdates: TRUE
-notice: Off sailing this month.
-onvacation: FALSE
-labeledurl: http://www.umich.edu/ U-M Home Page
+description: Mythical manager of the rsdd unix project
 drink: water
-lastmodifiedtime: 960404035839Z
-lastmodifiedby: cn=Barbara Jensen, ou=Information Technology Division, ou=Peop
- le, o=University of Michigan, c=US
-modifytimestamp: 960404171405Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 2333
 pager: +1 313 555 3233
 facsimiletelephonenumber: +1 313 555 2274
 telephonenumber: +1 313 555 9022
 
-dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Bjorn Jensen
 cn: Biiff Jensen
 sn: Jensen
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: bjorn
-userpassword: bjorn
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: Ympvcm4=
 homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
 drink: Iced Tea
-multilinedescription: Hiker, biker
+description: Hiker, biker
 title: Director, Embedded Systems
 postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
 mail: bjorn@mailgw.umich.edu
-modifytimestamp: 960404171424Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 5444
 pager: +1 313 555 4474
 facsimiletelephonenumber: +1 313 555 2177
 telephonenumber: +1 313 555 0355
+
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Un
- iversity of Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
 cn: All Staff
-joinable: FALSE
-multilinedescription: Everyone in the sample data
-objectclass: rfc822mailgroup
+description: Everyone in the sample data
+objectclass: groupofnames
 
 dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All Alumni Assoc Staff
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
 cn: Alumni Assoc Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
+objectclass: groupofnames
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All ITD Staff
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
 cn: ITD Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-modifytimestamp: 960404171730Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
-labeledurl: http://www.itd.umich.edu ITD Home Page
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
 
-dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectclass: OpenLDAPperson
 cn: James A Jones 1
 cn: James Jones
 cn: Jim Jones
 sn: Jones
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jaj
-krbname: jaj@umich.edu
-userpassword: jaj
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
 homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
 homephone: +1 313 555 4772
-multilinedescription: Outstanding
+description: Outstanding
 title: Mad Cow Researcher, UM Alumni Association
 pager: +1 313 555 3923
 mail: jaj@mail.alumni.umich.edu
-modifytimestamp: 960404171231Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 facsimiletelephonenumber: +1 313 555 4332
 telephonenumber: +1 313 555 0895
+
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Un
- iversity of Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
 cn: All Staff
-joinable: FALSE
-multilinedescription: Everyone in the sample data
-objectclass: rfc822mailgroup
+description: Everyone in the sample data
+objectclass: groupofnames
 
 dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All Alumni Assoc Staff
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
 cn: Alumni Assoc Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
+objectclass: groupofnames
+
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Un
- iversity of Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
 cn: All Staff
-joinable: FALSE
-multilinedescription: Everyone in the sample data
-objectclass: rfc822mailgroup
+description: Everyone in the sample data
+objectclass: groupofnames
 
 dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All Alumni Assoc Staff
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
 cn: Alumni Assoc Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
+objectclass: groupofnames
 
-dn: ou=Alumni Association, ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Alumni Association
 
-dn: ou=Groups, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Groups,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Groups
-lastmodifiedtime: 950120182331Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 
-dn: ou=Information Technology Division, ou=People, o=University of Michigan, c
- =US
-objectclass: top
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
-ou: Information Technology Divisio
+ou: Information Technology Division
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All ITD Staff
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
 cn: ITD Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-modifiersname: cn=Manager,o=University of Michigan,c=US
-labeledurl: http://www.itd.umich.edu ITD Home Page
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
 
-dn: ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: cn=Manager,o=University of Michigan,c=US
+objectClass: person
+cn: Manager
+cn: Directory Manager
+cn: Dir Man
+sn: Manager
+description: Manager of the directory
+userPassword:: c2VjcmV0
+
+dn: ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: People
 
-dn: o=University of Michigan, c=US
-objectclass: top
+dn: o=University of Michigan,c=US
 objectclass: organization
 objectclass: domainRelatedObject
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 l: Ann Arbor, Michigan
 st: Michigan
-streetaddress: 535 West William St.
 o: University of Michigan
 o: UMICH
 o: UM
@@ -336,8 +260,12 @@ o: U-M
 o: U of M
 description: The University of Michigan at Ann Arbor
 postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
- 09 $ USpostalcode: 48109
+ 09 $ US
 telephonenumber: +1 313 764-1817
-lastmodifiedtime: 930106182800Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 associateddomain: umich.edu
+
+dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectClass: OpenLDAPperson
+uid: uham
+
diff --git a/tests/data/test-glued.ldif b/tests/data/test-glued.ldif
new file mode 100644 (file)
index 0000000..17dd4f7
--- /dev/null
@@ -0,0 +1,286 @@
+dn: o=University of Michigan,c=US
+objectClass: organization
+objectClass: domainRelatedObject
+l: Ann Arbor, Michigan
+st: Michigan
+o: University of Michigan
+o: UMICH
+o: UM
+o: U-M
+o: U of M
+description: The University of Michigan at Ann Arbor
+postalAddress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
+ 09 $ US
+telephoneNumber: +1 313 764-1817
+associatedDomain: umich.edu
+
+dn: ou=People,o=University of Michigan,c=US
+objectClass: organizationalUnit
+ou: People
+
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectClass: organizationalUnit
+ou: Alumni Association
+
+dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectClass: OpenLDAPperson
+cn: Dorothy Stevens
+cn: Dot Stevens
+sn: Stevens
+uid: dots
+title: Secretary, UM Alumni Association
+postalAddress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+drink: Lemonade
+homePostalAddress: 377 White St. Apt. 3 $ Ann Arbor, MI 48104
+description: Very tall
+facsimileTelephoneNumber: +1 313 555 3223
+telephoneNumber: +1 313 555 3664
+mail: dots@mail.alumni.umich.edu
+homePhone: +1 313 555 0454
+
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectClass: OpenLDAPperson
+cn: James A Jones 1
+cn: James Jones
+cn: Jim Jones
+sn: Jones
+uid: jaj
+postalAddress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userPassword:: amFq
+homePostalAddress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
+homePhone: +1 313 555 4772
+description: Outstanding
+title: Mad Cow Researcher, UM Alumni Association
+pager: +1 313 555 3923
+mail: jaj@mail.alumni.umich.edu
+facsimileTelephoneNumber: +1 313 555 4332
+telephoneNumber: +1 313 555 0895
+
+dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c=US
+objectClass: OpenLDAPperson
+cn: Jane Doe
+cn: Jane Alverson
+sn: Doe
+uid: jdoe
+title: Programmer Analyst, UM Alumni Association
+postalAddress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homePostalAddress: 123 Anystreet $ Ann Arbor, MI 48104
+drink: diet coke
+description: Enthusiastic
+mail: jdoe@woof.net
+homePhone: +1 313 555 5445
+pager: +1 313 555 1220
+facsimileTelephoneNumber: +1 313 555 2311
+telephoneNumber: +1 313 555 4774
+
+dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan
+ ,c=US
+objectClass: OpenLDAPperson
+cn: Jennifer Smith
+cn: Jen Smith
+sn: Smith
+uid: jen
+postalAddress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+drink: Sam Adams
+homePostalAddress: 1000 Maple #44 $ Ann Arbor, MI 48103
+title: Telemarketer, UM Alumni Association
+mail: jen@mail.alumni.umich.edu
+homePhone: +1 313 555 2333
+pager: +1 313 555 6442
+facsimileTelephoneNumber: +1 313 555 2756
+telephoneNumber: +1 313 555 8232
+
+dn: cn=Manager,o=University of Michigan,c=US
+objectClass: person
+cn: Manager
+cn: Directory Manager
+cn: Dir Man
+sn: Manager
+description: Manager of the directory
+userPassword:: c2VjcmV0
+
+dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan,c=
+ US
+objectClass: OpenLDAPperson
+cn: Mark Elliot
+cn: Mark A Elliot
+sn: Elliot
+uid: melliot
+postalAddress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homePostalAddress: 199 Outer Drive $ Ypsilanti, MI 48198
+homePhone: +1 313 555 0388
+drink: Gasoline
+title: Director, UM Alumni Association
+mail: melliot@mail.alumni.umich.edu
+pager: +1 313 555 7671
+facsimileTelephoneNumber: +1 313 555 7762
+telephoneNumber: +1 313 555 4177
+
+dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+objectClass: OpenLDAPperson
+cn: Ursula Hampster
+sn: Hampster
+uid: uham
+title: Secretary, UM Alumni Association
+postalAddress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homePostalAddress: 123 Anystreet $ Ann Arbor, MI 48104
+mail: uham@mail.alumni.umich.edu
+homePhone: +1 313 555 8421
+pager: +1 313 555 2844
+facsimileTelephoneNumber: +1 313 555 9700
+telephoneNumber: +1 313 555 5331
+
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=US
+objectClass: organizationalUnit
+ou: Information Technology Division
+
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
+ y of Michigan,c=US
+objectClass: OpenLDAPperson
+cn: Barbara Jensen
+cn: Babs Jensen
+sn: Jensen
+uid: bjensen
+title: Mythical Manager, Research Systems
+postalAddress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
+ Arbor, MI 48103-4943
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userPassword:: YmplbnNlbg==
+mail: bjensen@mailgw.umich.edu
+homePostalAddress: 123 Wesley $ Ann Arbor, MI 48103
+description: Mythical manager of the rsdd unix project
+drink: water
+homePhone: +1 313 555 2333
+pager: +1 313 555 3233
+facsimileTelephoneNumber: +1 313 555 2274
+telephoneNumber: +1 313 555 9022
+
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+objectClass: OpenLDAPperson
+cn: Bjorn Jensen
+cn: Biiff Jensen
+sn: Jensen
+uid: bjorn
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userPassword:: Ympvcm4=
+homePostalAddress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
+drink: Iced Tea
+description: Hiker, biker
+title: Director, Embedded Systems
+postalAddress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
+mail: bjorn@mailgw.umich.edu
+homePhone: +1 313 555 5444
+pager: +1 313 555 4474
+facsimileTelephoneNumber: +1 313 555 2177
+telephoneNumber: +1 313 555 0355
+
+dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Universi
+ ty of Michigan,c=US
+objectClass: OpenLDAPperson
+cn: James A Jones 2
+cn: James Jones
+cn: Jim Jones
+sn: Doe
+uid: jjones
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homePostalAddress: 933 Brooks $ Ann Arbor, MI 48104
+homePhone: +1 313 555 8838
+title: Senior Manager, Information Technology Division
+description: Not around very much
+mail: jjones@mailgw.umich.edu
+postalAddress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
+pager: +1 313 555 2833
+facsimileTelephoneNumber: +1 313 555 8688
+telephoneNumber: +1 313 555 7334
+
+dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University of M
+ ichigan,c=US
+objectClass: OpenLDAPperson
+cn: John Doe
+cn: Jonathon Doe
+sn: Doe
+uid: johnd
+postalAddress: ITD $ 535 W. William $ Ann Arbor, MI 48109
+seeAlso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+homePostalAddress: 912 East Bllvd $ Ann Arbor, MI 48104
+title: System Administrator, Information Technology Division
+description: overworked!
+mail: johnd@mailgw.umich.edu
+homePhone: +1 313 555 3774
+pager: +1 313 555 6573
+facsimileTelephoneNumber: +1 313 555 4544
+telephoneNumber: +1 313 555 9394
+
+dn: ou=Groups,o=University of Michigan,c=US
+objectClass: organizationalUnit
+ou: Groups
+
+dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+cn: All Staff
+description: Everyone in the sample data
+objectClass: groupofnames
+
+dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
+cn: Alumni Assoc Staff
+objectClass: groupofnames
+
+dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
+cn: ITD Staff
+objectClass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+
diff --git a/tests/data/test-lang.ldif b/tests/data/test-lang.ldif
new file mode 100644 (file)
index 0000000..f108b06
--- /dev/null
@@ -0,0 +1,12 @@
+dn: o=University of Michigan,c=US
+objectClass: organization
+objectClass: extensibleObject
+o: University of Michigan
+o;lang-zz;lang-y;lang-yy;lang-xx;lang-x;lang-z: University of Michigan
+name;lang-en-US: Billy Ray
+name;lang-en-US: Billy Bob
+CN;lang-en-US: Billy Ray
+name: Billy Ray
+SN;lang-en-US;lang-en-GB: Billy Ray
+SN: Ray
+
index c9f9325633fa0aeac92543fe31b4f45678df383f..f3ad43563d232c5907cba75a61e098bc9ce27a8b 100644 (file)
@@ -1,12 +1,8 @@
-dn: o=University of Michigan, c=US
-objectclass: top
+dn: o=University of Michigan,c=US
 objectclass: organization
 objectclass: domainRelatedObject
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 l: Ann Arbor, Michigan
 st: Michigan
-streetaddress: 535 West William St.
 o: University of Michigan
 o: UMICH
 o: UM
@@ -14,410 +10,279 @@ o: U-M
 o: U of M
 description: The University of Michigan at Ann Arbor
 postaladdress: University of Michigan $ 535 W. William St. $ Ann Arbor, MI 481
- 09 $ USpostalcode: 48109
+ 09 $ US
 telephonenumber: +1 313 764-1817
-lastmodifiedtime: 930106182800Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 associateddomain: umich.edu
 
-dn: ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: People
 
-dn: ou=Groups, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Groups,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Groups
-lastmodifiedtime: 950120182331Z
-lastmodifiedby: cn=manager, o=university of michigan, c=US
 
-dn: ou=Alumni Association, ou=People, o=University of Michigan, c=US
-objectclass: top
+dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
 ou: Alumni Association
 
-dn: ou=Information Technology Division, ou=People, o=University of Michigan, c
+dn: ou=Information Technology Division,ou=People,o=University of Michigan,c
  =US
-objectclass: top
 objectclass: organizationalUnit
-objectclass: quipuObject
-objectclass: quipuNonLeafObject
-ou: Information Technology Divisio
+ou: Information Technology Division
 
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Un
- iversity of Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
 cn: All Staff
-joinable: FALSE
-multilinedescription: Everyone in the sample data
-objectclass: rfc822mailgroup
+description: Everyone in the sample data
+objectclass: groupofnames
 
 dn: cn=Alumni Assoc Staff,ou=Groups,o=University of Michigan,c=US
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-member: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michiga
- n, c=US
-member: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of M
- ichigan, c=US
-member: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-member: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of 
- Michigan, c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All Alumni Assoc Staff
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+member: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
+ =US
+member: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+member: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michiga
+ n,c=US
+member: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mic
+ higan,c=US
+owner: cn=Manager,o=University of Michigan,c=US
+description: All Alumni Assoc Staff
 cn: Alumni Assoc Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
+objectclass: groupofnames
 
-dn: cn=Barbara Jensen, ou=Information Technology Division, ou=People, o=Univer
- sity of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Univer
+ sity of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Barbara Jensen
 cn: Babs Jensen
 sn: Jensen
+uid: bjensen
 title: Mythical Manager, Research Systems
 postaladdress: ITD Prod Dev & Deployment $ 535 W. William St. Room 4212 $ Ann 
  Arbor, MI 48103-4943
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: bjensen
-userpassword: bjensen
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: YmplbnNlbg==
 mail: bjensen@mailgw.umich.edu
 homepostaladdress: 123 Wesley $ Ann Arbor, MI 48103
-krbname: bjensen@umich.edu
-multilinedescription: Mythical manager of the rsdd unix project 
-nobatchupdates: TRUE
-notice: Off sailing this month.
-onvacation: FALSE
-labeledurl: http://www.umich.edu/ U-M Home Page
+description: Mythical manager of the rsdd unix project
 drink: water
-lastmodifiedtime: 960404035839Z
-lastmodifiedby: cn=Barbara Jensen, ou=Information Technology Division, ou=Peop
- le, o=University of Michigan, c=US
-modifytimestamp: 960404171405Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 2333
 pager: +1 313 555 3233
 facsimiletelephonenumber: +1 313 555 2274
 telephonenumber: +1 313 555 9022
 
-dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Universi
+ ty of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: Bjorn Jensen
 cn: Biiff Jensen
 sn: Jensen
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: bjorn
-userpassword: bjorn
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: Ympvcm4=
 homepostaladdress: 19923 Seven Mile Rd. $ South Lyon, MI 49999
 drink: Iced Tea
-multilinedescription: Hiker, biker
+description: Hiker, biker
 title: Director, Embedded Systems
 postaladdress: Info Tech Division $ 535 W. William St. $ Ann Arbor, MI 48103
 mail: bjorn@mailgw.umich.edu
-modifytimestamp: 960404171424Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 5444
 pager: +1 313 555 4474
 facsimiletelephonenumber: +1 313 555 2177
 telephonenumber: +1 313 555 0355
 
-dn: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+objectclass: OpenLDAPperson
 cn: Dorothy Stevens
 cn: Dot Stevens
 sn: Stevens
+uid: dots
 title: Secretary, UM Alumni Association
 postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: dots
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 drink: Lemonade
 homepostaladdress: 377 White St. Apt. 3 $ Ann Arbor, MI 48104
-multilinedescription: Very tall
+description: Very tall
 facsimiletelephonenumber: +1 313 555 3223
 telephonenumber: +1 313 555 3664
 mail: dots@mail.alumni.umich.edu
-modifytimestamp: 960404171218Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 0454
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
-associateddomain: umich.edu
-requeststo: cn=Manager, o=University of Michigan, c=US
-errorsto: cn=Manager, o=University of Michigan, c=US
-owner: cn=Manager, o=University of Michigan, c=US
-multilinedescription: All ITD Staff
+owner: cn=Manager,o=University of Michigan,c=US
+description: All ITD Staff
 cn: ITD Staff
-joinable: FALSE
-objectclass: rfc822mailgroup
-member: cn=Manager, o=University of Michigan, c=US
-member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=Univ
- ersity of Michigan, c=US
-member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=U
- niversity of Michigan, c=US
-member: cn=John Doe, ou=Information Technology Division, ou=People, o=Universi
- ty of Michigan, c=US
-modifytimestamp: 960404171730Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
-labeledurl: http://www.itd.umich.edu ITD Home Page
+objectclass: groupofnames
+member: cn=Manager,o=University of Michigan,c=US
+member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=Univers
+ ity of Michigan,c=US
+member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Univ
+ ersity of Michigan,c=US
+member: cn=John Doe,ou=Information Technology Division,ou=People,o=University 
+ of Michigan,c=US
 
-dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+objectclass: OpenLDAPperson
 cn: James A Jones 1
 cn: James Jones
 cn: Jim Jones
 sn: Jones
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jaj
-krbname: jaj@umich.edu
-userpassword: jaj
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
+userpassword:: amFq
 homepostaladdress: 3882 Beverly Rd. $ Ann Arbor, MI 48105
 homephone: +1 313 555 4772
-multilinedescription: Outstanding
+description: Outstanding
 title: Mad Cow Researcher, UM Alumni Association
 pager: +1 313 555 3923
 mail: jaj@mail.alumni.umich.edu
-modifytimestamp: 960404171231Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 facsimiletelephonenumber: +1 313 555 4332
 telephonenumber: +1 313 555 0895
 
-dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=Unive
- rsity of Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Unive
+ rsity of Michigan,c=US
+objectclass: OpenLDAPperson
 cn: James A Jones 2
 cn: James Jones
 cn: Jim Jones
 sn: Doe
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jjones
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 933 Brooks $ Ann Arbor, MI 48104
 homephone: +1 313 555 8838
 title: Senior Manager, Information Technology Division
-multilinedescription: Not around very much
+description: Not around very much
 mail: jjones@mailgw.umich.edu
 postaladdress: Info Tech Division $ 535 W William $ Ann Arbor, MI 48103
-modifytimestamp: 960404171442Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 pager: +1 313 555 2833
 facsimiletelephonenumber: +1 313 555 8688
 telephonenumber: +1 313 555 7334
 
-dn: cn=Jane Doe, ou=Alumni Association, ou=People, o=University of Michigan, c
+dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c
  =US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+objectclass: OpenLDAPperson
 cn: Jane Doe
 cn: Jane Alverson
 sn: Doe
+uid: jdoe
 title: Programmer Analyst, UM Alumni Association
 postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: jdoe
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
 drink: diet coke
-multilinedescription: Enthusiastic
+description: Enthusiastic
 mail: jdoe@woof.net
-modifytimestamp: 960404171249Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 5445
 pager: +1 313 555 1220
 facsimiletelephonenumber: +1 313 555 2311
 telephonenumber: +1 313 555 4774
 
-dn: cn=Jennifer Smith, ou=Alumni Association, ou=People, o=University of Michi
- gan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michi
+ gan,c=US
+objectclass: OpenLDAPperson
 cn: Jennifer Smith
 cn: Jen Smith
 sn: Smith
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: jen
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 drink: Sam Adams
 homepostaladdress: 1000 Maple #44 $ Ann Arbor, MI 48103
 title: Telemarketer, UM Alumni Association
 mail: jen@mail.alumni.umich.edu
-modifytimestamp: 960404171309Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 2333
 pager: +1 313 555 6442
 facsimiletelephonenumber: +1 313 555 2756
 telephonenumber: +1 313 555 8232
 
-dn: cn=John Doe, ou=Information Technology Division, ou=People, o=University o
- f Michigan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University o
+ f Michigan,c=US
+objectclass: OpenLDAPperson
 cn: John Doe
 cn: Jonathon Doe
 sn: Doe
-postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: johnd
-krbname: johnd@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: ITD $ 535 W. William $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 912 East Bllvd $ Ann Arbor, MI 48104
 title: System Administrator, Information Technology Division
-multilinedescription: overworked!
+description: overworked!
 mail: johnd@mailgw.umich.edu
-modifytimestamp: 960404171509Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 3774
 pager: +1 313 555 6573
 facsimiletelephonenumber: +1 313 555 4544
 telephonenumber: +1 313 555 9394
 
-dn: cn=Manager, o=University of Michigan, c=US
-objectclass: top
+dn: cn=Manager,o=University of Michigan,c=US
 objectclass: person
-objectclass: quipuObject
-objectclass: kerberosSecurityObject
 cn: Manager
 cn: Directory Manager
 cn: Dir Man
 sn: Manager
 description: Manager of the directory
-userpassword: secret
-lastmodifiedtime: 951212214144Z
-lastmodifiedby: cn=Manager, o=University of Michigan, c=US
-krbname: bjensen@umich.edu
+userpassword:: c2VjcmV0
 
-dn: cn=Mark Elliot, ou=Alumni Association, ou=People, o=University of Michigan
- , c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan
+ ,c=US
+objectclass: OpenLDAPperson
 cn: Mark Elliot
 cn: Mark A Elliot
 sn: Elliot
-postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 uid: melliot
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
+postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 199 Outer Drive $ Ypsilanti, MI 48198
 homephone: +1 313 555 0388
 drink: Gasoline
 title: Director, UM Alumni Association
 mail: melliot@mail.alumni.umich.edu
-modifytimestamp: 960404171327Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 pager: +1 313 555 7671
 facsimiletelephonenumber: +1 313 555 7762
 telephonenumber: +1 313 555 4177
 
-dn: cn=Ursula Hampster, ou=Alumni Association, ou=People, o=University of Mich
- igan, c=US
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Mich
+ igan,c=US
+objectclass: OpenLDAPperson
 cn: Ursula Hampster
 sn: Hampster
+uid: uham
 title: Secretary, UM Alumni Association
 postaladdress: Alumni Association $ 111 Maple St $ Ann Arbor, MI 48109
-seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: uham
+seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 homepostaladdress: 123 Anystreet $ Ann Arbor, MI 48104
-krbname: jdoe@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
 mail: uham@mail.alumni.umich.edu
-modifytimestamp: 960404171346Z
-modifiersname: cn=Manager,o=University of Michigan,c=US
 homephone: +1 313 555 8421
 pager: +1 313 555 2844
 facsimiletelephonenumber: +1 313 555 9700
 telephonenumber: +1 313 555 5331
+
index 6478a1620be3e57facf1524c9cc4bfe5b3c97d23..752883585a0b7a130a010b1dcae8a5c27f5407e4 100644 (file)
@@ -45,14 +45,11 @@ cn: Alumni Assoc Staff
 objectclass: groupofnames
 
 dn: ou=Alumni Association,ou=People,o=University of Michigan,c=US
-objectclass: top
 objectclass: organizationalUnit
 ou: Alumni Association
 
 dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,o=Universit
  y of Michigan,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Barbara Jensen
 cn: Babs Jensen
@@ -74,8 +71,6 @@ telephonenumber: +1 313 555 9022
 
 dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University 
  of Michigan,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Bjorn Jensen
 cn: Biiff Jensen
@@ -96,8 +91,6 @@ telephonenumber: +1 313 555 0355
 
 dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michiga
  n,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Dorothy Stevens
 cn: Dot Stevens
@@ -115,12 +108,10 @@ mail: dots@mail.alumni.umich.edu
 homephone: +1 313 555 0454
 
 dn: ou=Groups,o=University of Michigan,c=US
-objectclass: top
 objectclass: organizationalUnit
 ou: Groups
 
 dn: ou=Information Technology Division,ou=People,o=University of Michigan,c=US
-objectclass: top
 objectclass: organizationalUnit
 ou: Information Technology Division
 
@@ -139,8 +130,6 @@ member: cn=John Doe,ou=Information Technology Division,ou=People,o=University
 
 dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michiga
  n,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: James A Jones 1
 cn: James Jones
@@ -161,8 +150,6 @@ telephonenumber: +1 313 555 0895
 
 dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=Universi
  ty of Michigan,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: James A Jones 2
 cn: James Jones
@@ -181,8 +168,6 @@ facsimiletelephonenumber: +1 313 555 8688
 telephonenumber: +1 313 555 7334
 
 dn: cn=Jane Doe,ou=Alumni Association,ou=People,o=University of Michigan,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Jane Doe
 cn: Jane Alverson
@@ -202,8 +187,6 @@ telephonenumber: +1 313 555 4774
 
 dn: cn=Jennifer Smith,ou=Alumni Association,ou=People,o=University of Michigan
  ,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Jennifer Smith
 cn: Jen Smith
@@ -222,8 +205,6 @@ telephonenumber: +1 313 555 8232
 
 dn: cn=John Doe,ou=Information Technology Division,ou=People,o=University of M
  ichigan,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: John Doe
 cn: Jonathon Doe
@@ -241,7 +222,6 @@ facsimiletelephonenumber: +1 313 555 4544
 telephonenumber: +1 313 555 9394
 
 dn: cn=Manager,o=University of Michigan,c=US
-objectclass: top
 objectclass: person
 cn: Manager
 cn: Directory Manager
@@ -252,8 +232,6 @@ userpassword:: c2VjcmV0
 
 dn: cn=Mark Elliot,ou=Alumni Association,ou=People,o=University of Michigan,c=
  US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Mark Elliot
 cn: Mark A Elliot
@@ -271,12 +249,10 @@ facsimiletelephonenumber: +1 313 555 7762
 telephonenumber: +1 313 555 4177
 
 dn: ou=People,o=University of Michigan,c=US
-objectclass: top
 objectclass: organizationalUnit
 ou: People
 
 dn: o=University of Michigan,c=US
-objectclass: top
 objectclass: organization
 objectclass: domainRelatedObject
 l: Ann Arbor, Michigan
@@ -294,8 +270,6 @@ associateddomain: umich.edu
 
 dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,o=University of Michiga
  n,c=US
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Ursula Hampster
 sn: Hampster
index b763a6e8537aa26e4f4ed720429f3bf17e674a4d..77fb4616dc01345b0d23a7aa783dc11471147aca 100755 (executable)
@@ -54,7 +54,7 @@ fi
 echo "Testing slapd searching..."
 for i in 0 1 2 3 4 5; do
        $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
-               'objectclass=*' > /dev/null 2>&1
+               '(objectclass=*)' > /dev/null 2>&1
        RC=$?
        if test $RC = 1 ; then
                echo "Waiting 5 seconds for slapd to start..."
@@ -72,7 +72,7 @@ cat /dev/null > $SEARCHOUT
 
 echo "Testing exact searching..."
 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
-       'sn=jensen' >> $SEARCHOUT 2>&1
+       '(sn=jensen)' >> $SEARCHOUT 2>&1
 RC=$?
 if test $RC != 0 ; then
        echo "ldapsearch failed ($RC)!"
@@ -104,14 +104,25 @@ echo "Testing NOT searching..."
 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
        '(!(objectclass=pilotPerson))' >> $SEARCHOUT 2>&1
 RC=$?
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       kill -HUP $PID
+       exit $RC
+fi
 
-kill -HUP $PID
-
+echo "Testing objectClass/attributeType inheritance ..."
+$LDAPSEARCH -M -a never -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
+       '(&(objectClass=inetorgperson)(userid=uham))' \
+       "2.5.4.0" "userid" >> $SEARCHOUT 2>&1
+RC=$?
 if test $RC != 0 ; then
        echo "ldapsearch failed ($RC)!"
+       kill -HUP $PID
        exit $RC
 fi
 
+
+kill -HUP $PID
 LDIF=$SEARCHOUTMASTER
 
 echo "Filtering ldapsearch results..."
index d5571ae3a4a1d771f267a5c99e28bf3543d46994..fa7d25bbd1683b37fcc8dfa783d982d796a9c926 100755 (executable)
@@ -104,8 +104,6 @@ member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michi
 
 dn: cn=Gern Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US
 changetype: add
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Gern Jensen
 sn: Jensen
index e3eaab27bd2d77eb3d57b33df84396f217fd8dbf..dd828dd38624e1b2ef809412eb6d3c619d2c806c 100755 (executable)
@@ -134,8 +134,6 @@ delete: member
 
 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Gern Jensen
 sn: Jensen
@@ -153,14 +151,12 @@ homephone: +1 313 555 8844
 
 dn: ou=Retired, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
 objectclass: organizationalUnit
 ou: Retired
 
 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
-objectclass: person
+objectclass: OpenLDAPperson
 cn: Rosco P. Coltrane
 sn: Coltrane
 
index bf295ea656c46ae833a17ad84634c155b7b31e50..aab5a45356f3bd90a1b18d6f25c7550006e81547 100755 (executable)
@@ -127,6 +127,18 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
+echo "Testing objectClass/attributeType inheritance ..."
+$LDAPSEARCH -M -a never -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
+       '(&(objectClass=inetorgperson)(userid=uham))' \
+       "2.5.4.0" "userid" >> $SEARCHOUT 2>&1
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       kill -HUP $PID
+       exit $RC
+fi
+
+
 kill -HUP $PID $SLAVEPID
 
 LDIF=$SEARCHOUTMASTER
index 9957160c0149d757159a8fdbb77efc45b9e04fa8..0f2e688cd836b173b35ba97dc1ab02b119162976 100755 (executable)
@@ -139,8 +139,6 @@ delete: member
 
 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
-objectclass: person
 objectclass: OpenLDAPperson
 cn: Gern Jensen
 sn: Jensen
@@ -158,14 +156,12 @@ homephone: +1 313 555 8844
 
 dn: ou=Retired, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
 objectclass: organizationalUnit
 ou: Retired
 
 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
-objectclass: person
+objectclass: OpenLDAPperson
 cn: Rosco P. Coltrane
 sn: Coltrane
 
index 1657b9204c4d15608fe86f6a90debcd0add50bd2..acdc134128f4b90f9fdbda415422f762e5290267 100755 (executable)
@@ -110,6 +110,17 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
+echo "Testing objectClass/attributeType inheritance ..."
+$LDAPSEARCH -M -a never -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
+       '(&(objectClass=inetorgperson)(userid=uham))' \
+       "2.5.4.0" "userid" >> $SEARCHOUT 2>&1
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       kill -HUP $PID
+       exit $RC
+fi
+
 kill -HUP $PID
 
 LDIF=$SEARCHOUTMASTER