]> git.sur5r.net Git - openldap/commitdiff
Sync with HEAD as of 14-March-2004
authorKurt Zeilenga <kurt@openldap.org>
Wed, 17 Mar 2004 21:59:45 +0000 (21:59 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Wed, 17 Mar 2004 21:59:45 +0000 (21:59 +0000)
61 files changed:
configure
include/portable.h.in
servers/slapd/acl.c
servers/slapd/aclparse.c
servers/slapd/back-bdb/bind.c
servers/slapd/back-bdb/idl.c
servers/slapd/back-bdb/search.c
servers/slapd/back-bdb/tools.c
servers/slapd/back-ldap/add.c
servers/slapd/back-ldap/bind.c
servers/slapd/back-ldap/compare.c
servers/slapd/back-ldap/config.c
servers/slapd/back-ldap/delete.c
servers/slapd/back-ldap/extended.c
servers/slapd/back-ldap/init.c
servers/slapd/back-ldap/map.c
servers/slapd/back-ldap/modify.c
servers/slapd/back-ldap/modrdn.c
servers/slapd/back-ldap/search.c
servers/slapd/back-ldap/suffixmassage.c
servers/slapd/back-ldbm/search.c
servers/slapd/back-meta/add.c
servers/slapd/back-meta/bind.c
servers/slapd/back-meta/candidates.c
servers/slapd/back-meta/compare.c
servers/slapd/back-meta/config.c
servers/slapd/back-meta/conn.c
servers/slapd/back-meta/data/slapd-meta-rewrite.conf
servers/slapd/back-meta/delete.c
servers/slapd/back-meta/modify.c
servers/slapd/back-meta/search.c
servers/slapd/back-passwd/search.c
servers/slapd/back-sql/delete.c
servers/slapd/back-sql/search.c
servers/slapd/backend.c
servers/slapd/backglue.c
servers/slapd/bind.c
servers/slapd/config.c
servers/slapd/connection.c
servers/slapd/controls.c
servers/slapd/dn.c
servers/slapd/filter.c
servers/slapd/limits.c
servers/slapd/main.c
servers/slapd/passwd.c
servers/slapd/proto-slap.h
servers/slapd/result.c
servers/slapd/sasl.c
servers/slapd/saslauthz.c
servers/slapd/search.c
servers/slapd/slap.h
servers/slapd/slapadd.c [new file with mode: 0644]
servers/slapd/slapcat.c [new file with mode: 0644]
servers/slapd/slapcommon.c [new file with mode: 0644]
servers/slapd/slapcommon.h [new file with mode: 0644]
servers/slapd/slapi/slapi.h
servers/slapd/slapi/slapi_pblock.c
servers/slapd/slapindex.c [new file with mode: 0644]
servers/slapd/slappasswd.c [new file with mode: 0644]
servers/slapd/syncrepl.c
tests/scripts/defines.sh

index c280690467ea8e11e06d7f06c64f7d7d0a5a4761..734cf94fa9e69005299f9bbe00ec80f3043e9c54 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # $OpenLDAP$
-# from OpenLDAP: pkg/ldap/configure.in,v 1.478.2.12 2004/01/17 18:36:41 kurt Exp  
+# from OpenLDAP: pkg/ldap/configure.in,v 1.478.2.14 2004/03/17 20:15:30 kurt Exp  
 
 # This work is part of OpenLDAP Software <http://www.openldap.org/>.
 #
@@ -1736,7 +1736,6 @@ else
        ol_enable_crypt="no"
 fi
 # end --enable-crypt
-ol_enable_kpasswd=${ol_enable_kpasswd-no}
 # OpenLDAP --enable-lmpasswd
        # Check whether --enable-lmpasswd or --disable-lmpasswd was given.
 if test "${enable_lmpasswd+set}" = set; then
@@ -2805,14 +2804,14 @@ if test $ol_enable_lmpasswd = yes ; then
        fi
 fi
 
-if test $ol_enable_kbind = yes -o $ol_enable_kpasswd = yes ; then
+if test $ol_enable_kbind = yes ; then
        if test $ol_with_kerberos = no ; then
                { echo "configure: error: options require --with-kerberos" 1>&2; exit 1; }
        elif test $ol_with_kerberos = auto ; then
                ol_with_kerberos=yes
        fi
 
-elif test $ol_enable_kbind = no -o $ol_enable_kpasswd = no ; then
+elif test $ol_enable_kbind = no ; then
        if test $ol_with_kerberos = auto ; then
                ol_with_kerberos=no
        elif test $ol_with_kerberos != no ; then
@@ -2916,7 +2915,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:2920: checking for a BSD compatible install" >&5
+echo "configure:2919: 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
@@ -2997,7 +2996,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:3001: checking for $ac_word" >&5
+echo "configure:3000: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3049,7 +3048,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:3053: checking for $ac_word" >&5
+echo "configure:3052: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3091,7 +3090,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:3095: checking for $ac_word" >&5
+echo "configure:3094: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AR+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3141,12 +3140,12 @@ if test "X${PATH_SEPARATOR+set}" != Xset; then
 fi
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:3145: checking for Cygwin environment" >&5
+echo "configure:3144: 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 3150 "configure"
+#line 3149 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3157,7 +3156,7 @@ int main() {
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:3161: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3160: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -3173,19 +3172,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:3177: checking for mingw32 environment" >&5
+echo "configure:3176: 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 3182 "configure"
+#line 3181 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:3189: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -3201,19 +3200,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:3205: checking for EMX OS/2 environment" >&5
+echo "configure:3204: 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 3210 "configure"
+#line 3209 "configure"
 #include "confdefs.h"
 
 int main() {
 return __EMX__;
 ; return 0; }
 EOF
-if { (eval echo configure:3217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3216: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_emxos2=yes
 else
@@ -3229,7 +3228,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:3233: checking how to run the C preprocessor" >&5
+echo "configure:3232: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -3244,13 +3243,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 3248 "configure"
+#line 3247 "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:3254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3253: \"$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
   :
@@ -3261,13 +3260,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 3265 "configure"
+#line 3264 "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:3271: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3270: \"$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
   :
@@ -3278,13 +3277,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 3282 "configure"
+#line 3281 "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:3288: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3287: \"$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
   :
@@ -3334,7 +3333,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:3338: checking for $ac_word" >&5
+echo "configure:3337: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3364,7 +3363,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:3368: checking for $ac_word" >&5
+echo "configure:3367: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3415,7 +3414,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:3419: checking for $ac_word" >&5
+echo "configure:3418: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3447,7 +3446,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:3451: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5
+echo "configure:3450: 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.
@@ -3458,12 +3457,12 @@ cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext << EOF
 
-#line 3462 "configure"
+#line 3461 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:3467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3466: \"$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
@@ -3489,12 +3488,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:3493: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:3492: 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:3498: checking whether we are using GNU C" >&5
+echo "configure:3497: 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
@@ -3503,7 +3502,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3507: \"$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:3506: \"$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
@@ -3522,7 +3521,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:3526: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:3525: 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
@@ -3565,7 +3564,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:3569: checking for ld used by GCC" >&5
+echo "configure:3568: checking for ld used by GCC" >&5
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -3595,10 +3594,10 @@ echo "configure:3569: 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:3599: checking for GNU ld" >&5
+echo "configure:3598: checking for GNU ld" >&5
 else
   echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:3602: checking for non-GNU ld" >&5
+echo "configure:3601: 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
@@ -3633,7 +3632,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:3637: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:3636: 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
@@ -3650,7 +3649,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:3654: checking for $LD option to reload object files" >&5
+echo "configure:3653: 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
@@ -3662,7 +3661,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:3666: checking for BSD-compatible nm" >&5
+echo "configure:3665: 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
@@ -3700,7 +3699,7 @@ NM="$lt_cv_path_NM"
 echo "$ac_t""$NM" 1>&6
 
 echo $ac_n "checking for a sed that does not truncate output""... $ac_c" 1>&6
-echo "configure:3704: checking for a sed that does not truncate output" >&5
+echo "configure:3703: checking for a sed that does not truncate output" >&5
 if eval "test \"\${lt_cv_path_SED+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3784,7 +3783,7 @@ fi
 echo "$ac_t""$SED" 1>&6
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:3788: checking whether ln -s works" >&5
+echo "configure:3787: 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
@@ -3805,7 +3804,7 @@ else
 fi
 
 echo $ac_n "checking how to recognise dependent libraries""... $ac_c" 1>&6
-echo "configure:3809: checking how to recognise dependent libraries" >&5
+echo "configure:3808: checking how to recognise dependent libraries" >&5
 if eval "test \"\${lt_cv_deplibs_check_method+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -3995,13 +3994,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:3999: checking for object suffix" >&5
+echo "configure:3998: 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:4005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   for ac_file in conftest.*; do
     case $ac_file in
     *.c) ;;
@@ -4022,7 +4021,7 @@ ac_objext=$ac_cv_objext
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:4026: checking for executable suffix" >&5
+echo "configure:4025: checking for executable suffix" >&5
 if eval "test \"\${ac_cv_exeext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4032,7 +4031,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:4035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.C | *.o | *.obj | *.xcoff) ;;
@@ -4063,7 +4062,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:4067: checking command to parse $NM output" >&5
+echo "configure:4066: 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
@@ -4146,10 +4145,10 @@ void nm_test_func(){}
 int main(){nm_test_var='a';nm_test_func();return(0);}
 EOF
 
-  if { (eval echo configure:4150: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo configure:4153: \"$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:4152: \"$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"
@@ -4200,7 +4199,7 @@ EOF
          save_CFLAGS="$CFLAGS"
          LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$no_builtin_flag"
-         if { (eval echo configure:4204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then
+         if { (eval echo configure:4203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then
            pipe_works=yes
          fi
          LIBS="$save_LIBS"
@@ -4249,17 +4248,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:4253: checking for $ac_hdr" >&5
+echo "configure:4252: 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 4258 "configure"
+#line 4257 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4263: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4262: \"$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*
@@ -4295,7 +4294,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:4299: checking for ${ac_tool_prefix}file" >&5
+echo "configure:4298: 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
@@ -4357,7 +4356,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:4361: checking for file" >&5
+echo "configure:4360: checking for file" >&5
 if eval "test \"\${lt_cv_path_MAGIC_CMD+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4428,7 +4427,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:4432: checking for $ac_word" >&5
+echo "configure:4431: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4460,7 +4459,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:4464: checking for $ac_word" >&5
+echo "configure:4463: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4495,7 +4494,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:4499: checking for $ac_word" >&5
+echo "configure:4498: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4527,7 +4526,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:4531: checking for $ac_word" >&5
+echo "configure:4530: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4576,8 +4575,8 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
 case $host in
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4580 "configure"' > conftest.$ac_ext
-  if { (eval echo configure:4581: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  echo '#line 4579 "configure"' > conftest.$ac_ext
+  if { (eval echo configure:4580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
     case `/usr/bin/file conftest.$ac_objext` in
     *32-bit*)
       LD="${LD-ld} -32"
@@ -4598,7 +4597,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:4602: checking whether the C compiler needs -belf" >&5
+echo "configure:4601: 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
@@ -4611,14 +4610,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 4615 "configure"
+#line 4614 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4621: \"$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
@@ -4648,7 +4647,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:4652: checking for $ac_word" >&5
+echo "configure:4651: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4680,7 +4679,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:4684: checking for $ac_word" >&5
+echo "configure:4683: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4715,7 +4714,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:4719: checking for $ac_word" >&5
+echo "configure:4718: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4747,7 +4746,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:4751: checking for $ac_word" >&5
+echo "configure:4750: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4782,7 +4781,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:4786: checking for $ac_word" >&5
+echo "configure:4785: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4814,7 +4813,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:4818: checking for $ac_word" >&5
+echo "configure:4817: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4850,12 +4849,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:4854: checking if libtool should supply DllMain function" >&5
+echo "configure:4853: 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 4859 "configure"
+#line 4858 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4863,7 +4862,7 @@ extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
       DllMain (0, 0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:4867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   lt_cv_need_dllmain=no
 else
@@ -4884,19 +4883,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:4888: checking how to link DLLs" >&5
+echo "configure:4887: 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 4893 "configure"
+#line 4892 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4899: \"$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
@@ -5010,7 +5009,7 @@ set dummy $CC
 compiler="$2"
 
 echo $ac_n "checking for objdir""... $ac_c" 1>&6
-echo "configure:5014: checking for objdir" >&5
+echo "configure:5013: checking for objdir" >&5
 rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
 if test -d .libs; then
@@ -5037,7 +5036,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:5041: checking for $compiler option to produce PIC" >&5
+echo "configure:5040: 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
@@ -5189,21 +5188,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:5193: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5
+echo "configure:5192: 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 5200 "configure"
+#line 5199 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
         case $host_os in
       hpux9* | hpux10* | hpux11*)
@@ -5255,7 +5254,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:5259: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5
+echo "configure:5258: 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
@@ -5263,14 +5262,14 @@ else
   save_LDFLAGS="$LDFLAGS"
   LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
   cat > conftest.$ac_ext <<EOF
-#line 5267 "configure"
+#line 5266 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5273: \"$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
@@ -5297,7 +5296,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:5301: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo "configure:5300: 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
@@ -5316,7 +5315,7 @@ chmod -w .
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
 compiler_c_o=no
-if { (eval echo configure:5320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+if { (eval echo configure:5319: \"$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
@@ -5345,7 +5344,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:5349: checking if $compiler supports -c -o file.lo" >&5
+echo "configure:5348: 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
@@ -5356,14 +5355,14 @@ else
   save_objext="$ac_objext"
   ac_objext=lo
   cat > conftest.$ac_ext <<EOF
-#line 5360 "configure"
+#line 5359 "configure"
 #include "confdefs.h"
 
 int main() {
 int some_variable = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5367: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5366: \"$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
@@ -5394,7 +5393,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:5398: checking if we can lock with hard links" >&5
+echo "configure:5397: 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
@@ -5413,20 +5412,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:5417: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo "configure:5416: 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 5423 "configure"
+#line 5422 "configure"
 #include "confdefs.h"
 
 int main() {
 int some_variable = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5429: \"$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
@@ -5453,7 +5452,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:5457: checking whether the linker ($LD) supports shared libraries" >&5
+echo "configure:5456: checking whether the linker ($LD) supports shared libraries" >&5
 
 allow_undefined_flag=
 no_undefined_flag=
@@ -6158,7 +6157,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:6162: checking how to hardcode library paths into programs" >&5
+echo "configure:6161: checking how to hardcode library paths into programs" >&5
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" || \
    test -n "$runpath_var"; then
@@ -6186,7 +6185,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:6190: checking whether stripping libraries is possible" >&5
+echo "configure:6189: 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"
@@ -6200,7 +6199,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:6204: checking dynamic linker characteristics" >&5
+echo "configure:6203: checking dynamic linker characteristics" >&5
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
@@ -6622,11 +6621,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:6626: checking if libtool supports shared libraries" >&5
+echo "configure:6625: 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:6630: checking whether to build shared libraries" >&5
+echo "configure:6629: 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
@@ -6649,7 +6648,7 @@ esac
 echo "$ac_t""$enable_shared" 1>&6
 
 echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6
-echo "configure:6653: checking whether to build static libraries" >&5
+echo "configure:6652: 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
@@ -6690,12 +6689,12 @@ else
 
   *)
     echo $ac_n "checking for dllload""... $ac_c" 1>&6
-echo "configure:6694: checking for dllload" >&5
+echo "configure:6693: checking for dllload" >&5
 if eval "test \"\${ac_cv_func_dllload+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6699 "configure"
+#line 6698 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dllload(); below.  */
@@ -6719,7 +6718,7 @@ f = dllload;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dllload=yes"
 else
@@ -6737,12 +6736,12 @@ if eval "test \"`echo '$ac_cv_func_'dllload`\" = yes"; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "configure:6741: checking for shl_load" >&5
+echo "configure:6740: 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 6746 "configure"
+#line 6745 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shl_load(); below.  */
@@ -6766,7 +6765,7 @@ f = shl_load;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6769: \"$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
@@ -6784,7 +6783,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:6788: checking for shl_load in -ldld" >&5
+echo "configure:6787: 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
@@ -6792,7 +6791,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6796 "configure"
+#line 6795 "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
@@ -6803,7 +6802,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:6807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6806: \"$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
@@ -6822,12 +6821,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:6826: checking for dlopen" >&5
+echo "configure:6825: 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 6831 "configure"
+#line 6830 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dlopen(); below.  */
@@ -6851,7 +6850,7 @@ f = dlopen;
 
 ; return 0; }
 EOF
-if { (eval echo configure:6855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6854: \"$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
@@ -6869,7 +6868,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:6873: checking for dlopen in -ldl" >&5
+echo "configure:6872: 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
@@ -6877,7 +6876,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6881 "configure"
+#line 6880 "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
@@ -6888,7 +6887,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:6892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6891: \"$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
@@ -6907,7 +6906,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:6911: checking for dlopen in -lsvld" >&5
+echo "configure:6910: 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
@@ -6915,7 +6914,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsvld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6919 "configure"
+#line 6918 "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
@@ -6926,7 +6925,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:6930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6929: \"$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
@@ -6945,7 +6944,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:6949: checking for dld_link in -ldld" >&5
+echo "configure:6948: 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
@@ -6953,7 +6952,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldld  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6957 "configure"
+#line 6956 "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
@@ -6964,7 +6963,7 @@ int main() {
 dld_link()
 ; return 0; }
 EOF
-if { (eval echo configure:6968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6967: \"$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
@@ -7023,7 +7022,7 @@ fi
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "configure:7027: checking whether a program can dlopen itself" >&5
+echo "configure:7026: 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
@@ -7033,7 +7032,7 @@ else
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 7037 "configure"
+#line 7036 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -7094,7 +7093,7 @@ int main ()
     exit (status);
 }
 EOF
-  if { (eval echo configure:7098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  if { (eval echo configure:7097: \"$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
@@ -7117,7 +7116,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:7121: checking whether a statically linked program can dlopen itself" >&5
+echo "configure:7120: 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
@@ -7127,7 +7126,7 @@ else
     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 7131 "configure"
+#line 7130 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -7188,7 +7187,7 @@ int main ()
     exit (status);
 }
 EOF
-  if { (eval echo configure:7192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  if { (eval echo configure:7191: \"$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
@@ -7237,14 +7236,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:7241: checking whether -lc should be explicitly linked in" >&5
+echo "configure:7240: 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:7248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+    if { (eval echo configure:7247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
       soname=conftest
       lib=conftest
       libobjs=conftest.$ac_objext
@@ -7257,7 +7256,7 @@ else
       libname=conftest
       save_allow_undefined_flag=$allow_undefined_flag
       allow_undefined_flag=
-      if { (eval echo configure:7261: \"$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:7260: \"$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
@@ -7844,7 +7843,7 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 # test for ln hardlink support
 echo $ac_n "checking whether ln works""... $ac_c" 1>&6
-echo "configure:7848: checking whether ln works" >&5
+echo "configure:7847: 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
@@ -7867,7 +7866,7 @@ else
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:7871: checking whether ln -s works" >&5
+echo "configure:7870: 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
@@ -7893,7 +7892,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:7897: checking for $ac_word" >&5
+echo "configure:7896: checking for $ac_word" >&5
 if eval "test \"\${ac_cv_path_PERLBIN+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7946,7 +7945,7 @@ fi
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:7950: checking how to run the C preprocessor" >&5
+echo "configure:7949: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -7961,13 +7960,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 7965 "configure"
+#line 7964 "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:7971: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7970: \"$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
   :
@@ -7978,13 +7977,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 7982 "configure"
+#line 7981 "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:7988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7987: \"$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
   :
@@ -7995,13 +7994,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 7999 "configure"
+#line 7998 "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:8005: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8004: \"$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
   :
@@ -8040,12 +8039,12 @@ fi
 
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:8044: checking for Cygwin environment" >&5
+echo "configure:8043: 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 8049 "configure"
+#line 8048 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8056,7 +8055,7 @@ int main() {
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:8060: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8059: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -8072,19 +8071,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:8076: checking for mingw32 environment" >&5
+echo "configure:8075: 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 8081 "configure"
+#line 8080 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:8088: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8087: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -8103,7 +8102,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:8107: checking for executable suffix" >&5
+echo "configure:8106: checking for executable suffix" >&5
 if eval "test \"\${ac_cv_exeext+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8113,7 +8112,7 @@ else
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:8117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:8116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.C | *.o | *.obj | *.xcoff) ;;
@@ -8134,13 +8133,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:8138: checking for object suffix" >&5
+echo "configure:8137: 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:8144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   for ac_file in conftest.*; do
     case $ac_file in
     *.c) ;;
@@ -8164,7 +8163,7 @@ EOF
 
 
 echo $ac_n "checking for be_app in -lbe""... $ac_c" 1>&6
-echo "configure:8168: checking for be_app in -lbe" >&5
+echo "configure:8167: 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
@@ -8172,7 +8171,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbe -lroot -lnet $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8176 "configure"
+#line 8175 "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
@@ -8183,7 +8182,7 @@ int main() {
 be_app()
 ; return 0; }
 EOF
-if { (eval echo configure:8187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8186: \"$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
@@ -8209,7 +8208,7 @@ fi
 
 
 echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:8213: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:8212: 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
@@ -8226,7 +8225,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 8230 "configure"
+#line 8229 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -8263,7 +8262,7 @@ return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
 
 ; return 0; }
 EOF
-if { (eval echo configure:8267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_prog_cc_stdc="$ac_arg"; break
 else
@@ -8297,7 +8296,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:8301: checking for ${OL_MKDEP} depend flag" >&5
+echo "configure:8300: 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
@@ -8307,7 +8306,7 @@ else
                                cat > conftest.c <<EOF
  noCode;
 EOF
-                               if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+                               if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8310: \"$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
@@ -8340,7 +8339,7 @@ if test "${ol_cv_mkdep}" = no ; then
 fi
 
 echo $ac_n "checking for afopen in -ls""... $ac_c" 1>&6
-echo "configure:8344: checking for afopen in -ls" >&5
+echo "configure:8343: 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
@@ -8348,7 +8347,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ls  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8352 "configure"
+#line 8351 "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
@@ -8359,7 +8358,7 @@ int main() {
 afopen()
 ; return 0; }
 EOF
-if { (eval echo configure:8363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8362: \"$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
@@ -8402,17 +8401,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:8406: checking for $ac_hdr" >&5
+echo "configure:8405: 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 8411 "configure"
+#line 8410 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8415: \"$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*
@@ -8444,7 +8443,7 @@ done
        fi
 
        echo $ac_n "checking for lt_dlinit in -lltdl""... $ac_c" 1>&6
-echo "configure:8448: checking for lt_dlinit in -lltdl" >&5
+echo "configure:8447: 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
@@ -8452,7 +8451,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lltdl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8456 "configure"
+#line 8455 "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
@@ -8463,7 +8462,7 @@ int main() {
 lt_dlinit()
 ; return 0; }
 EOF
-if { (eval echo configure:8467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8466: \"$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
@@ -8519,13 +8518,13 @@ fi
 
 # test for EBCDIC
 echo $ac_n "checking for EBCDIC""... $ac_c" 1>&6
-echo "configure:8523: checking for EBCDIC" >&5
+echo "configure:8522: 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 8529 "configure"
+#line 8528 "configure"
 #include "confdefs.h"
 
 #if !('M' == 0xd4)
@@ -8534,7 +8533,7 @@ else
 
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8537: \"$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*
@@ -8558,12 +8557,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:8562: checking for ANSI C header files" >&5
+echo "configure:8561: 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 8567 "configure"
+#line 8566 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -8571,7 +8570,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8574: \"$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*
@@ -8588,7 +8587,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 8592 "configure"
+#line 8591 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -8606,7 +8605,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 8610 "configure"
+#line 8609 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -8627,7 +8626,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 8631 "configure"
+#line 8630 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #ifndef HAVE_EBCDIC
@@ -8645,7 +8644,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:8649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -8679,12 +8678,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:8683: checking for $ac_hdr that defines DIR" >&5
+echo "configure:8682: 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 8688 "configure"
+#line 8687 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -8692,7 +8691,7 @@ int main() {
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:8696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8695: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -8717,7 +8716,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:8721: checking for opendir in -ldir" >&5
+echo "configure:8720: 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
@@ -8725,7 +8724,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8729 "configure"
+#line 8728 "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
@@ -8736,7 +8735,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:8740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8739: \"$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
@@ -8758,7 +8757,7 @@ fi
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:8762: checking for opendir in -lx" >&5
+echo "configure:8761: 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
@@ -8766,7 +8765,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8770 "configure"
+#line 8769 "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
@@ -8777,7 +8776,7 @@ int main() {
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:8781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8780: \"$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
@@ -8800,12 +8799,12 @@ fi
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:8804: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:8803: 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 8809 "configure"
+#line 8808 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -8821,7 +8820,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:8825: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -8842,12 +8841,12 @@ EOF
 fi
 
 echo $ac_n "checking POSIX termios""... $ac_c" 1>&6
-echo "configure:8846: checking POSIX termios" >&5
+echo "configure:8845: 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 8851 "configure"
+#line 8850 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <unistd.h>
@@ -8857,7 +8856,7 @@ int main() {
    tcgetattr(0, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:8861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8860: \"$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
@@ -8873,7 +8872,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:8877: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5
+echo "configure:8876: 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
@@ -8882,7 +8881,7 @@ else
   gwinsz_in_termios_h=no
   if test $am_cv_sys_posix_termios = yes; then
     cat > conftest.$ac_ext <<EOF
-#line 8886 "configure"
+#line 8885 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #     include <termios.h>
@@ -8902,7 +8901,7 @@ rm -f conftest*
 
   if test $gwinsz_in_termios_h = no; then
     cat > conftest.$ac_ext <<EOF
-#line 8906 "configure"
+#line 8905 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #     include <sys/ioctl.h>
@@ -8990,17 +8989,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:8994: checking for $ac_hdr" >&5
+echo "configure:8993: 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 8999 "configure"
+#line 8998 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9003: \"$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*
@@ -9030,7 +9029,7 @@ done
 
 
 echo $ac_n "checking for sigset in -lV3""... $ac_c" 1>&6
-echo "configure:9034: checking for sigset in -lV3" >&5
+echo "configure:9033: 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
@@ -9038,7 +9037,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lV3  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9042 "configure"
+#line 9041 "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
@@ -9049,7 +9048,7 @@ int main() {
 sigset()
 ; return 0; }
 EOF
-if { (eval echo configure:9053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9052: \"$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
@@ -9079,7 +9078,7 @@ fi
 
 if test "$ac_cv_header_winsock_h" = yes; then
 echo $ac_n "checking for winsock""... $ac_c" 1>&6
-echo "configure:9083: checking for winsock" >&5
+echo "configure:9082: checking for winsock" >&5
 if eval "test \"\${ol_cv_winsock+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -9087,7 +9086,7 @@ else
 for curlib in ws2_32 wsock32; do
        LIBS="$LIBS -l$curlib"
        cat > conftest.$ac_ext <<EOF
-#line 9091 "configure"
+#line 9090 "configure"
 #include "confdefs.h"
 #include <winsock.h>
                        
@@ -9100,7 +9099,7 @@ int main() {
                        
 ; return 0; }
 EOF
-if { (eval echo configure:9104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_winsock=yes
 else
@@ -9138,12 +9137,12 @@ fi
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:9142: checking for socket" >&5
+echo "configure:9141: 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 9147 "configure"
+#line 9146 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -9167,7 +9166,7 @@ f = socket;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9170: \"$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
@@ -9186,7 +9185,7 @@ else
   echo "$ac_t""no" 1>&6
        
        echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:9190: checking for main in -lsocket" >&5
+echo "configure:9189: 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
@@ -9194,14 +9193,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9198 "configure"
+#line 9197 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9204: \"$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
@@ -9229,7 +9228,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnet""... $ac_c" 1>&6
-echo "configure:9233: checking for main in -lnet" >&5
+echo "configure:9232: 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
@@ -9237,14 +9236,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9241 "configure"
+#line 9240 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9247: \"$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
@@ -9272,7 +9271,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnsl_s""... $ac_c" 1>&6
-echo "configure:9276: checking for main in -lnsl_s" >&5
+echo "configure:9275: 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
@@ -9280,14 +9279,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl_s  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9284 "configure"
+#line 9283 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9290: \"$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
@@ -9315,7 +9314,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:9319: checking for main in -lnsl" >&5
+echo "configure:9318: 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
@@ -9323,14 +9322,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9327 "configure"
+#line 9326 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9333: \"$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
@@ -9358,7 +9357,7 @@ else
 fi
 
        echo $ac_n "checking for socket in -linet""... $ac_c" 1>&6
-echo "configure:9362: checking for socket in -linet" >&5
+echo "configure:9361: 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
@@ -9366,7 +9365,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-linet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9370 "configure"
+#line 9369 "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
@@ -9377,7 +9376,7 @@ int main() {
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:9381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9380: \"$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
@@ -9405,7 +9404,7 @@ else
 fi
 
        echo $ac_n "checking for main in -lgen""... $ac_c" 1>&6
-echo "configure:9409: checking for main in -lgen" >&5
+echo "configure:9408: 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
@@ -9413,14 +9412,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgen  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 9417 "configure"
+#line 9416 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:9424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9423: \"$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
@@ -9452,12 +9451,12 @@ fi
 
 
 echo $ac_n "checking for select""... $ac_c" 1>&6
-echo "configure:9456: checking for select" >&5
+echo "configure:9455: 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 9461 "configure"
+#line 9460 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char select(); below.  */
@@ -9481,7 +9480,7 @@ f = select;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9484: \"$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
@@ -9504,7 +9503,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:9508: checking types of arguments for select()" >&5
+echo "configure:9507: 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
@@ -9518,7 +9517,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 9522 "configure"
+#line 9521 "configure"
 #include "confdefs.h"
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
@@ -9537,7 +9536,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:9541: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
           ac_not_found=no ; break 3
 else
@@ -9582,17 +9581,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:9586: checking for $ac_hdr" >&5
+echo "configure:9585: 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 9591 "configure"
+#line 9590 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9595: \"$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*
@@ -9623,14 +9622,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:9627: checking for library containing regfree" >&5
+echo "configure:9626: 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 9634 "configure"
+#line 9633 "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
@@ -9641,7 +9640,7 @@ int main() {
 regfree()
 ; return 0; }
 EOF
-if { (eval echo configure:9645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9644: \"$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
@@ -9652,7 +9651,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 9656 "configure"
+#line 9655 "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
@@ -9663,7 +9662,7 @@ int main() {
 regfree()
 ; return 0; }
 EOF
-if { (eval echo configure:9667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9666: \"$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
@@ -9686,7 +9685,7 @@ fi
 
 
 echo $ac_n "checking for compatible POSIX regex""... $ac_c" 1>&6
-echo "configure:9690: checking for compatible POSIX regex" >&5
+echo "configure:9689: 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
@@ -9695,7 +9694,7 @@ else
   ol_cv_c_posix_regex=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 9699 "configure"
+#line 9698 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -9721,7 +9720,7 @@ main()
        return rc;
 }
 EOF
-if { (eval echo configure:9725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9724: \"$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
@@ -9747,17 +9746,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:9751: checking for $ac_hdr" >&5
+echo "configure:9750: 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 9756 "configure"
+#line 9755 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9760: \"$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*
@@ -9787,14 +9786,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:9791: checking for library containing uuid_to_str" >&5
+echo "configure:9790: 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 9798 "configure"
+#line 9797 "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
@@ -9805,7 +9804,7 @@ int main() {
 uuid_to_str()
 ; return 0; }
 EOF
-if { (eval echo configure:9809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9808: \"$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
@@ -9816,7 +9815,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 9820 "configure"
+#line 9819 "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
@@ -9827,7 +9826,7 @@ int main() {
 uuid_to_str()
 ; return 0; }
 EOF
-if { (eval echo configure:9831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9830: \"$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
@@ -9862,11 +9861,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:9866: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5
+echo "configure:9865: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5
        save_LIBS="$LIBS"
        LIBS="$LIBS -lrpcrt4"
        cat > conftest.$ac_ext <<EOF
-#line 9870 "configure"
+#line 9869 "configure"
 #include "confdefs.h"
 
                int __stdcall UuidCreate(void *);
@@ -9879,7 +9878,7 @@ int main() {
                
 ; return 0; }
 EOF
-if { (eval echo configure:9883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9882: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   need_rpcrt=yes
 else
@@ -9898,12 +9897,12 @@ fi
 
 ol_link_dnssrv=no
 echo $ac_n "checking for res_query""... $ac_c" 1>&6
-echo "configure:9902: checking for res_query" >&5
+echo "configure:9901: 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 9907 "configure"
+#line 9906 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char res_query(); below.  */
@@ -9927,7 +9926,7 @@ f = res_query;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9930: \"$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
@@ -9948,12 +9947,12 @@ fi
 
 if test $ac_cv_func_res_query = no ; then 
        echo $ac_n "checking for __res_query""... $ac_c" 1>&6
-echo "configure:9952: checking for __res_query" >&5
+echo "configure:9951: 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 9957 "configure"
+#line 9956 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char __res_query(); below.  */
@@ -9977,7 +9976,7 @@ f = __res_query;
 
 ; return 0; }
 EOF
-if { (eval echo configure:9981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9980: \"$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
@@ -10001,7 +10000,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:10005: checking for res_query in -lbind" >&5
+echo "configure:10004: 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
@@ -10009,7 +10008,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10013 "configure"
+#line 10012 "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
@@ -10020,7 +10019,7 @@ int main() {
 res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10023: \"$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
@@ -10052,7 +10051,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:10056: checking for __res_query in -lbind" >&5
+echo "configure:10055: 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
@@ -10060,7 +10059,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lbind  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10064 "configure"
+#line 10063 "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
@@ -10071,7 +10070,7 @@ int main() {
 __res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10074: \"$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
@@ -10103,7 +10102,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:10107: checking for res_query in -lresolv" >&5
+echo "configure:10106: 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
@@ -10111,7 +10110,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10115 "configure"
+#line 10114 "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
@@ -10122,7 +10121,7 @@ int main() {
 res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10125: \"$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
@@ -10154,7 +10153,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:10158: checking for __res_query in -lresolv" >&5
+echo "configure:10157: 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
@@ -10162,7 +10161,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lresolv  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10166 "configure"
+#line 10165 "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
@@ -10173,7 +10172,7 @@ int main() {
 __res_query()
 ; return 0; }
 EOF
-if { (eval echo configure:10177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10176: \"$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 getnameinfo gai_strerror inet_ntop 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10225: checking for $ac_func" >&5
+echo "configure:10224: 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 10230 "configure"
+#line 10229 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10250,7 +10249,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:10254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10253: \"$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
@@ -10282,13 +10281,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:10286: checking INET6_ADDRSTRLEN" >&5
+echo "configure:10285: 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 10292 "configure"
+#line 10291 "configure"
 #include "confdefs.h"
 
 #                      include <netinet/in.h>
@@ -10313,13 +10312,13 @@ echo "$ac_t""$ol_cv_inet6_addrstrlen" 1>&6
 
 
        echo $ac_n "checking struct sockaddr_storage""... $ac_c" 1>&6
-echo "configure:10317: checking struct sockaddr_storage" >&5
+echo "configure:10316: 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 10323 "configure"
+#line 10322 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10331,7 +10330,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:10335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_struct_sockaddr_storage=yes
 else
@@ -10362,17 +10361,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:10366: checking for $ac_hdr" >&5
+echo "configure:10365: 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 10371 "configure"
+#line 10370 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10376: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10375: \"$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*
@@ -10407,7 +10406,6 @@ done
 fi
 
 ol_link_kbind=no
-ol_link_kpasswd=no
 ol_link_krb5=no
 ol_link_krb4=no
 
@@ -10419,17 +10417,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:10423: checking for $ac_hdr" >&5
+echo "configure:10421: 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 10428 "configure"
+#line 10426 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10431: \"$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*
@@ -10461,17 +10459,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:10465: checking for $ac_hdr" >&5
+echo "configure:10463: 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 10470 "configure"
+#line 10468 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10475: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10473: \"$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*
@@ -10505,7 +10503,7 @@ done
 
                if test $krb5_impl = mit; then
                        echo $ac_n "checking for main in -lk5crypto""... $ac_c" 1>&6
-echo "configure:10509: checking for main in -lk5crypto" >&5
+echo "configure:10507: 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
@@ -10513,14 +10511,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lk5crypto  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10517 "configure"
+#line 10515 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10522: \"$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
@@ -10543,7 +10541,7 @@ fi
 
 
                        echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6
-echo "configure:10547: checking for main in -lkrb5" >&5
+echo "configure:10545: 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
@@ -10551,14 +10549,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5 -l$krb5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10555 "configure"
+#line 10553 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10562: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10560: \"$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
@@ -10583,7 +10581,7 @@ fi
 
                elif test $krb5_impl = heimdal; then
                        echo $ac_n "checking for main in -ldes""... $ac_c" 1>&6
-echo "configure:10587: checking for main in -ldes" >&5
+echo "configure:10585: 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
@@ -10591,14 +10589,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldes  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10595 "configure"
+#line 10593 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10600: \"$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
@@ -10621,7 +10619,7 @@ fi
 
 
                        echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6
-echo "configure:10625: checking for main in -lkrb5" >&5
+echo "configure:10623: 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
@@ -10629,14 +10627,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10633 "configure"
+#line 10631 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10638: \"$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
@@ -10677,10 +10675,6 @@ EOF
 EOF
 
 
-                       if test $ol_enable_kpasswd != no ; then
-                               ol_link_kpasswd=yes;
-                       fi
-
                        if test $ol_with_kerberos = k5only ; then
                                ol_with_kerberos=found
                        fi
@@ -10699,17 +10693,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:10703: checking for $ac_hdr" >&5
+echo "configure:10697: 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 10708 "configure"
+#line 10702 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10713: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10707: \"$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*
@@ -10739,7 +10733,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:10743: checking for main in -lkrb4" >&5
+echo "configure:10737: 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
@@ -10747,14 +10741,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb4 -ldes425 -lkrb5 -l$krb5crypto -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10751 "configure"
+#line 10745 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10752: \"$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
@@ -10779,7 +10773,7 @@ fi
 
                elif test $krb5_impl = heimdal; then
                        echo $ac_n "checking for main in -lkrb4""... $ac_c" 1>&6
-echo "configure:10783: checking for main in -lkrb4" >&5
+echo "configure:10777: 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
@@ -10787,14 +10781,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb4 -lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10791 "configure"
+#line 10785 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10792: \"$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
@@ -10836,7 +10830,7 @@ EOF
 
 
                        echo $ac_n "checking for des_debug in Kerberos libraries""... $ac_c" 1>&6
-echo "configure:10840: checking for des_debug in Kerberos libraries" >&5
+echo "configure:10834: 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
@@ -10844,7 +10838,7 @@ else
                                                                save_LIBS="$LIBS"
                                LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
                                cat > conftest.$ac_ext <<EOF
-#line 10848 "configure"
+#line 10842 "configure"
 #include "confdefs.h"
 
 #include <kerberosIV/krb.h>
@@ -10857,7 +10851,7 @@ des_debug = 1;
 
 ; return 0; }
 EOF
-if { (eval echo configure:10861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10855: \"$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
@@ -10896,17 +10890,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:10900: checking for $ac_hdr" >&5
+echo "configure:10894: 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 10905 "configure"
+#line 10899 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10910: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10904: \"$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*
@@ -10935,7 +10929,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:10939: checking for main in -lkrb" >&5
+echo "configure:10933: 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
@@ -10943,14 +10937,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lkrb -ldes $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 10947 "configure"
+#line 10941 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:10954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10948: \"$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
@@ -10993,10 +10987,6 @@ EOF
        fi
 fi
 
-if test $ol_link_krb4 = yes -a $ol_enable_kpasswd != no ; then
-       ol_link_kpasswd=yes
-fi
-
 if test $ol_link_krb4 = yes -a $ol_enable_kbind != no ; then
        ol_link_kbind=yes
 
@@ -11020,17 +11010,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:11024: checking for $ac_hdr" >&5
+echo "configure:11014: 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 11029 "configure"
+#line 11019 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11024: \"$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*
@@ -11060,7 +11050,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:11064: checking for SSLeay_add_ssl_algorithms in -lssl" >&5
+echo "configure:11054: 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
@@ -11068,7 +11058,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11072 "configure"
+#line 11062 "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
@@ -11079,7 +11069,7 @@ int main() {
 SSLeay_add_ssl_algorithms()
 ; return 0; }
 EOF
-if { (eval echo configure:11083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11073: \"$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
@@ -11104,7 +11094,7 @@ fi
                        
                if test $have_ssleay = no ; then
                        echo $ac_n "checking for SSL_library_init in -lssl""... $ac_c" 1>&6
-echo "configure:11108: checking for SSL_library_init in -lssl" >&5
+echo "configure:11098: 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
@@ -11112,7 +11102,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11116 "configure"
+#line 11106 "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
@@ -11123,7 +11113,7 @@ int main() {
 SSL_library_init()
 ; return 0; }
 EOF
-if { (eval echo configure:11127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11117: \"$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
@@ -11149,7 +11139,7 @@ fi
 
                if test $have_ssleay = no ; then
                        echo $ac_n "checking for ssl3_accept in -lssl""... $ac_c" 1>&6
-echo "configure:11153: checking for ssl3_accept in -lssl" >&5
+echo "configure:11143: 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
@@ -11157,7 +11147,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lssl -lcrypto -lRSAglue -lrsaref $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 11161 "configure"
+#line 11151 "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
@@ -11168,7 +11158,7 @@ int main() {
 ssl3_accept()
 ; return 0; }
 EOF
-if { (eval echo configure:11172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11162: \"$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
@@ -11252,12 +11242,12 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
 
        
        echo $ac_n "checking for _beginthread""... $ac_c" 1>&6
-echo "configure:11256: checking for _beginthread" >&5
+echo "configure:11246: 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 11261 "configure"
+#line 11251 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _beginthread(); below.  */
@@ -11281,7 +11271,7 @@ f = _beginthread;
 
 ; return 0; }
 EOF
-if { (eval echo configure:11285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11275: \"$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
@@ -11337,17 +11327,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:11341: checking for $ac_hdr" >&5
+echo "configure:11331: 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 11346 "configure"
+#line 11336 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11341: \"$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*
@@ -11376,13 +11366,13 @@ done
 
        if test $ac_cv_header_pthread_h = yes ; then
                echo $ac_n "checking POSIX thread version""... $ac_c" 1>&6
-echo "configure:11380: checking POSIX thread version" >&5
+echo "configure:11370: 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 11386 "configure"
+#line 11376 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11393,11 +11383,11 @@ int main() {
        
 ; return 0; }
 EOF
-if { (eval echo configure:11397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 11401 "configure"
+#line 11391 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -11417,7 +11407,7 @@ else
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 11421 "configure"
+#line 11411 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11434,7 +11424,7 @@ else
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 11438 "configure"
+#line 11428 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -11446,7 +11436,7 @@ else
   rm -rf conftest*
   
        cat > conftest.$ac_ext <<EOF
-#line 11450 "configure"
+#line 11440 "configure"
 #include "confdefs.h"
 
 #              include <pthread.h>
@@ -11493,12 +11483,12 @@ EOF
 
                
        echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6
-echo "configure:11497: checking for LinuxThreads pthread.h" >&5
+echo "configure:11487: 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 11502 "configure"
+#line 11492 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -11525,12 +11515,12 @@ EOF
 
                
        echo $ac_n "checking for GNU Pth pthread.h""... $ac_c" 1>&6
-echo "configure:11529: checking for GNU Pth pthread.h" >&5
+echo "configure:11519: 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 11534 "configure"
+#line 11524 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 #ifdef _POSIX_THREAD_IS_GNU_PTH
@@ -11559,17 +11549,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:11563: checking for $ac_hdr" >&5
+echo "configure:11553: 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 11568 "configure"
+#line 11558 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11563: \"$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*
@@ -11599,14 +11589,14 @@ done
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                echo $ac_n "checking for pthread_create in default libraries""... $ac_c" 1>&6
-echo "configure:11603: checking for pthread_create in default libraries" >&5
+echo "configure:11593: 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 11610 "configure"
+#line 11600 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11673,7 +11663,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_create=yes
 else
@@ -11685,7 +11675,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 11689 "configure"
+#line 11679 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11757,7 +11747,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:11761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11751: \"$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
@@ -11782,7 +11772,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:11786: checking for pthread link with -kthread" >&5
+echo "configure:11776: 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
@@ -11793,7 +11783,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 11797 "configure"
+#line 11787 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11860,7 +11850,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_kthread=yes
 else
@@ -11872,7 +11862,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 11876 "configure"
+#line 11866 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -11944,7 +11934,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:11948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11938: \"$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
@@ -11974,7 +11964,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:11978: checking for pthread link with -pthread" >&5
+echo "configure:11968: 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
@@ -11985,7 +11975,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 11989 "configure"
+#line 11979 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12052,7 +12042,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_pthread=yes
 else
@@ -12064,7 +12054,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12068 "configure"
+#line 12058 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12136,7 +12126,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12130: \"$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
@@ -12166,7 +12156,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:12170: checking for pthread link with -pthreads" >&5
+echo "configure:12160: 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
@@ -12177,7 +12167,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12181 "configure"
+#line 12171 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12244,7 +12234,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_pthreads=yes
 else
@@ -12256,7 +12246,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12260 "configure"
+#line 12250 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12328,7 +12318,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12322: \"$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
@@ -12358,7 +12348,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:12362: checking for pthread link with -mthreads" >&5
+echo "configure:12352: 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
@@ -12369,7 +12359,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12373 "configure"
+#line 12363 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12436,7 +12426,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_mthreads=yes
 else
@@ -12448,7 +12438,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12452 "configure"
+#line 12442 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12520,7 +12510,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12514: \"$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
@@ -12550,7 +12540,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:12554: checking for pthread link with -thread" >&5
+echo "configure:12544: 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
@@ -12561,7 +12551,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12565 "configure"
+#line 12555 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12628,7 +12618,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_thread=yes
 else
@@ -12640,7 +12630,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12644 "configure"
+#line 12634 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12712,7 +12702,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12706: \"$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
@@ -12743,7 +12733,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:12747: checking for pthread link with -lpthread -lmach -lexc -lc_r" >&5
+echo "configure:12737: 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
@@ -12754,7 +12744,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12758 "configure"
+#line 12748 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12821,7 +12811,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12815: \"$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
@@ -12833,7 +12823,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 12837 "configure"
+#line 12827 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -12905,7 +12895,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:12909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:12899: \"$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
@@ -12935,7 +12925,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:12939: checking for pthread link with -lpthread -lmach -lexc" >&5
+echo "configure:12929: 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
@@ -12946,7 +12936,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 12950 "configure"
+#line 12940 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13013,7 +13003,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13007: \"$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
@@ -13025,7 +13015,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13029 "configure"
+#line 13019 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13097,7 +13087,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13091: \"$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
@@ -13128,7 +13118,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:13132: checking for pthread link with -lpthread -Wl,-woff,85" >&5
+echo "configure:13122: 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
@@ -13139,7 +13129,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13143 "configure"
+#line 13133 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13206,7 +13196,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13200: \"$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
@@ -13218,7 +13208,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13222 "configure"
+#line 13212 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13290,7 +13280,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13284: \"$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
@@ -13321,7 +13311,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:13325: checking for pthread link with -lpthread" >&5
+echo "configure:13315: 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
@@ -13332,7 +13322,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13336 "configure"
+#line 13326 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13399,7 +13389,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_lpthread=yes
 else
@@ -13411,7 +13401,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13415 "configure"
+#line 13405 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13483,7 +13473,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13477: \"$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
@@ -13513,7 +13503,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:13517: checking for pthread link with -lc_r" >&5
+echo "configure:13507: 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
@@ -13524,7 +13514,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13528 "configure"
+#line 13518 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13591,7 +13581,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13585: \"$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
@@ -13603,7 +13593,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13607 "configure"
+#line 13597 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13675,7 +13665,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13669: \"$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
@@ -13706,7 +13696,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:13710: checking for pthread link with -threads" >&5
+echo "configure:13700: 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
@@ -13717,7 +13707,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13721 "configure"
+#line 13711 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13784,7 +13774,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13778: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_pthread_threads=yes
 else
@@ -13796,7 +13786,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13800 "configure"
+#line 13790 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13868,7 +13858,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:13872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13862: \"$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
@@ -13899,7 +13889,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:13903: checking for pthread link with -lpthreads -lmach -lexc -lc_r" >&5
+echo "configure:13893: 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
@@ -13910,7 +13900,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 13914 "configure"
+#line 13904 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -13977,7 +13967,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:13981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13971: \"$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
@@ -13989,7 +13979,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 13993 "configure"
+#line 13983 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14061,7 +14051,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14055: \"$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
@@ -14091,7 +14081,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:14095: checking for pthread link with -lpthreads -lmach -lexc" >&5
+echo "configure:14085: 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
@@ -14102,7 +14092,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14106 "configure"
+#line 14096 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14169,7 +14159,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14163: \"$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
@@ -14181,7 +14171,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14185 "configure"
+#line 14175 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14253,7 +14243,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14247: \"$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
@@ -14283,7 +14273,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:14287: checking for pthread link with -lpthreads -lexc" >&5
+echo "configure:14277: 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
@@ -14294,7 +14284,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14298 "configure"
+#line 14288 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14361,7 +14351,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14355: \"$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
@@ -14373,7 +14363,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14377 "configure"
+#line 14367 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14445,7 +14435,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14439: \"$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
@@ -14476,7 +14466,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:14480: checking for pthread link with -lpthreads" >&5
+echo "configure:14470: 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
@@ -14487,7 +14477,7 @@ else
 
                if test "$cross_compiling" = yes; then
   cat > conftest.$ac_ext <<EOF
-#line 14491 "configure"
+#line 14481 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14554,7 +14544,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:14558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14548: \"$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
@@ -14566,7 +14556,7 @@ fi
 rm -f conftest*
 else
   cat > conftest.$ac_ext <<EOF
-#line 14570 "configure"
+#line 14560 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -14638,7 +14628,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:14642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14632: \"$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
                                                                                                for ac_func in sched_yield pthread_yield thr_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14679: checking for $ac_func" >&5
+echo "configure:14669: 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 14684 "configure"
+#line 14674 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -14704,7 +14694,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:14708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14698: \"$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
@@ -14733,7 +14723,7 @@ done
                                $ac_cv_func_pthread_yield = no -a \
                                $ac_cv_func_thr_yield = no ; then
                                                                echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6
-echo "configure:14737: checking for sched_yield in -lrt" >&5
+echo "configure:14727: 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
@@ -14741,7 +14731,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lrt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 14745 "configure"
+#line 14735 "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
@@ -14752,7 +14742,7 @@ int main() {
 sched_yield()
 ; 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:14746: \"$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 pthread_kill pthread_rwlock_destroy
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14792: checking for $ac_func" >&5
+echo "configure:14782: 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 14797 "configure"
+#line 14787 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -14817,7 +14807,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:14821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14811: \"$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
@@ -14843,13 +14833,13 @@ done
 
 
                                                                        echo $ac_n "checking for pthread_detach with <pthread.h>""... $ac_c" 1>&6
-echo "configure:14847: checking for pthread_detach with <pthread.h>" >&5
+echo "configure:14837: 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 14853 "configure"
+#line 14843 "configure"
 #include "confdefs.h"
 
 #include <pthread.h>
@@ -14861,7 +14851,7 @@ int main() {
 pthread_detach(NULL);
 ; return 0; }
 EOF
-if { (eval echo configure:14865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14855: \"$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
@@ -14893,12 +14883,12 @@ EOF
                        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:14897: checking for $ac_func" >&5
+echo "configure:14887: 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 14902 "configure"
+#line 14892 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -14922,7 +14912,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:14926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14916: \"$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
@@ -14951,12 +14941,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:14955: checking for $ac_func" >&5
+echo "configure:14945: 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 14960 "configure"
+#line 14950 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -14980,7 +14970,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:14984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14974: \"$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
@@ -15005,7 +14995,7 @@ fi
 done
 
        echo $ac_n "checking for LinuxThreads implementation""... $ac_c" 1>&6
-echo "configure:15009: checking for LinuxThreads implementation" >&5
+echo "configure:14999: 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
@@ -15018,7 +15008,7 @@ echo "$ac_t""$ol_cv_sys_linux_threads" 1>&6
        
        
        echo $ac_n "checking for LinuxThreads consistency""... $ac_c" 1>&6
-echo "configure:15022: checking for LinuxThreads consistency" >&5
+echo "configure:15012: checking for LinuxThreads consistency" >&5
 if eval "test \"\${ol_cv_linux_threads+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -15043,7 +15033,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:15047: checking if pthread_create() works" >&5
+echo "configure:15037: 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
@@ -15052,7 +15042,7 @@ else
                                ol_cv_pthread_create_works=yes
 else
   cat > conftest.$ac_ext <<EOF
-#line 15056 "configure"
+#line 15046 "configure"
 #include "confdefs.h"
 /* pthread test headers */
 #include <pthread.h>
@@ -15124,7 +15114,7 @@ int main(argc, argv)
 }
 
 EOF
-if { (eval echo configure:15128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15118: \"$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
@@ -15146,7 +15136,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:15150: checking if select yields when using pthreads" >&5
+echo "configure:15140: 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
@@ -15155,7 +15145,7 @@ else
   ol_cv_pthread_select_yields=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 15159 "configure"
+#line 15149 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -15232,7 +15222,7 @@ int main(argc, argv)
        exit(2);
 }
 EOF
-if { (eval echo configure:15236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:15226: \"$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
@@ -15276,17 +15266,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:15280: checking for $ac_hdr" >&5
+echo "configure:15270: 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 15285 "configure"
+#line 15275 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:15290: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:15280: \"$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*
@@ -15316,12 +15306,12 @@ done
                ol_with_threads=found
 
                                echo $ac_n "checking for cthread_fork""... $ac_c" 1>&6
-echo "configure:15320: checking for cthread_fork" >&5
+echo "configure:15310: 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 15325 "configure"
+#line 15315 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char cthread_fork(); below.  */
@@ -15345,7 +15335,7 @@ f = cthread_fork;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15339: \"$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
@@ -15367,7 +15357,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:15371: checking for cthread_fork with -all_load" >&5
+echo "configure:15361: 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
@@ -15375,7 +15365,7 @@ else
                                                                save_LIBS="$LIBS"
                                LIBS="-all_load $LIBS"
                                cat > conftest.$ac_ext <<EOF
-#line 15379 "configure"
+#line 15369 "configure"
 #include "confdefs.h"
 #include <mach/cthreads.h>
 int main() {
@@ -15384,7 +15374,7 @@ int main() {
                                        
 ; return 0; }
 EOF
-if { (eval echo configure:15388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15378: \"$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
@@ -15414,12 +15404,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:15418: checking for cthread_fork" >&5
+echo "configure:15408: 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 15423 "configure"
+#line 15413 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char cthread_fork(); below.  */
@@ -15443,7 +15433,7 @@ f = cthread_fork;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15437: \"$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
@@ -15493,17 +15483,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:15497: checking for $ac_hdr" >&5
+echo "configure:15487: 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 15502 "configure"
+#line 15492 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:15507: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:15497: \"$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*
@@ -15532,7 +15522,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:15536: checking for pth_version in -lpth" >&5
+echo "configure:15526: 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
@@ -15540,7 +15530,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpth  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 15544 "configure"
+#line 15534 "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
@@ -15551,7 +15541,7 @@ int main() {
 pth_version()
 ; return 0; }
 EOF
-if { (eval echo configure:15555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15545: \"$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
@@ -15596,17 +15586,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:15600: checking for $ac_hdr" >&5
+echo "configure:15590: 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 15605 "configure"
+#line 15595 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:15610: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:15600: \"$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*
@@ -15634,7 +15624,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:15638: checking for thr_create in -lthread" >&5
+echo "configure:15628: 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
@@ -15642,7 +15632,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 15646 "configure"
+#line 15636 "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
@@ -15653,7 +15643,7 @@ int main() {
 thr_create()
 ; return 0; }
 EOF
-if { (eval echo configure:15657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15647: \"$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
@@ -15693,12 +15683,12 @@ EOF
                        
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15697: checking for $ac_func" >&5
+echo "configure:15687: 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 15702 "configure"
+#line 15692 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15722,7 +15712,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15716: \"$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
@@ -15753,17 +15743,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:15757: checking for $ac_hdr" >&5
+echo "configure:15747: 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 15762 "configure"
+#line 15752 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:15767: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:15757: \"$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*
@@ -15791,7 +15781,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:15795: checking for lwp_create in -llwp" >&5
+echo "configure:15785: 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
@@ -15799,7 +15789,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-llwp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 15803 "configure"
+#line 15793 "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
@@ -15810,7 +15800,7 @@ int main() {
 lwp_create()
 ; return 0; }
 EOF
-if { (eval echo configure:15814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15804: \"$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
@@ -15863,17 +15853,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:15867: checking for $ac_hdr" >&5
+echo "configure:15857: 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 15872 "configure"
+#line 15862 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:15877: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:15867: \"$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*
@@ -15902,12 +15892,12 @@ done
        for ac_func in sched_yield pthread_yield
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:15906: checking for $ac_func" >&5
+echo "configure:15896: 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 15911 "configure"
+#line 15901 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -15931,7 +15921,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:15935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15925: \"$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
@@ -15957,12 +15947,12 @@ done
 
        
        echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6
-echo "configure:15961: checking for LinuxThreads pthread.h" >&5
+echo "configure:15951: 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 15966 "configure"
+#line 15956 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 EOF
@@ -15992,17 +15982,17 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:15996: checking for $ac_hdr" >&5
+echo "configure:15986: 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 16001 "configure"
+#line 15991 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:15996: \"$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*
@@ -16032,17 +16022,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16036: checking for $ac_hdr" >&5
+echo "configure:16026: 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 16041 "configure"
+#line 16031 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16036: \"$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*
@@ -16072,17 +16062,17 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:16076: checking for $ac_hdr" >&5
+echo "configure:16066: 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 16081 "configure"
+#line 16071 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16086: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16076: \"$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*
@@ -16141,20 +16131,20 @@ EOF
 
 
                        echo $ac_n "checking for thread specific errno""... $ac_c" 1>&6
-echo "configure:16145: checking for thread specific errno" >&5
+echo "configure:16135: 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 16151 "configure"
+#line 16141 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 errno = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:16158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16148: \"$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:16174: checking for thread specific h_errno" >&5
+echo "configure:16164: 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 16180 "configure"
+#line 16170 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 h_errno = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:16187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16177: \"$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
@@ -16236,12 +16226,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:16240: checking for $ac_func" >&5
+echo "configure:16230: 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 16245 "configure"
+#line 16235 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -16265,7 +16255,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:16269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16259: \"$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
@@ -16294,19 +16284,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:16298: checking number of arguments of ctime_r" >&5
+echo "configure:16288: 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 16303 "configure"
+#line 16293 "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:16310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16300: \"$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 16322 "configure"
+#line 16312 "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:16329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16319: \"$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:16369: checking number of arguments of gethostbyname_r" >&5
+echo "configure:16359: 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 16374 "configure"
+#line 16364 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -16384,7 +16374,7 @@ struct hostent hent; char buffer[BUFSIZE];
                        buffer, bufsize, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:16388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyname_r_nargs5=yes
 else
@@ -16396,7 +16386,7 @@ fi
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 16400 "configure"
+#line 16390 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -16411,7 +16401,7 @@ struct hostent hent;struct hostent *rhent;
                        &rhent, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:16415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16405: \"$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:16456: checking number of arguments of gethostbyaddr_r" >&5
+echo "configure:16446: 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 16461 "configure"
+#line 16451 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -16473,7 +16463,7 @@ struct hostent hent; char buffer[BUFSIZE];
                        alen, AF_INET, &hent, buffer, bufsize, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:16477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyaddr_r_nargs7=yes
 else
@@ -16485,7 +16475,7 @@ fi
 rm -f conftest*
 
        cat > conftest.$ac_ext <<EOF
-#line 16489 "configure"
+#line 16479 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -16503,7 +16493,7 @@ struct hostent hent;
                        &rhent, &h_errno);
 ; return 0; }
 EOF
-if { (eval echo configure:16507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:16497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_func_gethostbyaddr_r_nargs8=yes
 else
@@ -16553,17 +16543,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:16557: checking for $ac_hdr" >&5
+echo "configure:16547: 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 16562 "configure"
+#line 16552 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:16567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:16557: \"$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*
@@ -16591,13 +16581,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:16595: checking if Berkeley DB header compatibility" >&5
+echo "configure:16585: 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 16601 "configure"
+#line 16591 "configure"
 #include "confdefs.h"
 
 #if HAVE_DB_185_H
@@ -16634,7 +16624,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:16638: checking for Berkeley DB link (default)" >&5
+echo "configure:16628: 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
@@ -16644,7 +16634,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 16648 "configure"
+#line 16638 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -16691,7 +16681,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:16695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_none=yes
 else
@@ -16715,7 +16705,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb42)""... $ac_c" 1>&6
-echo "configure:16719: checking for Berkeley DB link (-ldb42)" >&5
+echo "configure:16709: checking for Berkeley DB link (-ldb42)" >&5
 if eval "test \"\${ol_cv_db_db42+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -16725,7 +16715,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 16729 "configure"
+#line 16719 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -16772,7 +16762,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:16776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db42=yes
 else
@@ -16796,7 +16786,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-42)""... $ac_c" 1>&6
-echo "configure:16800: checking for Berkeley DB link (-ldb-42)" >&5
+echo "configure:16790: checking for Berkeley DB link (-ldb-42)" >&5
 if eval "test \"\${ol_cv_db_db_42+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -16806,7 +16796,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 16810 "configure"
+#line 16800 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -16853,7 +16843,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:16857: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_42=yes
 else
@@ -16877,7 +16867,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4.2)""... $ac_c" 1>&6
-echo "configure:16881: checking for Berkeley DB link (-ldb-4.2)" >&5
+echo "configure:16871: checking for Berkeley DB link (-ldb-4.2)" >&5
 if eval "test \"\${ol_cv_db_db_4_dot_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -16887,7 +16877,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 16891 "configure"
+#line 16881 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -16934,7 +16924,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:16938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:16928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_dot_2=yes
 else
@@ -16958,7 +16948,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4-2)""... $ac_c" 1>&6
-echo "configure:16962: checking for Berkeley DB link (-ldb-4-2)" >&5
+echo "configure:16952: checking for Berkeley DB link (-ldb-4-2)" >&5
 if eval "test \"\${ol_cv_db_db_4_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -16968,7 +16958,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 16972 "configure"
+#line 16962 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17015,7 +17005,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_2=yes
 else
@@ -17039,7 +17029,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:17043: checking for Berkeley DB link (-ldb-4)" >&5
+echo "configure:17033: 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
@@ -17049,7 +17039,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17053 "configure"
+#line 17043 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17096,7 +17086,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17090: \"$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
@@ -17120,7 +17110,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:17124: checking for Berkeley DB link (-ldb4)" >&5
+echo "configure:17114: 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
@@ -17130,7 +17120,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17134 "configure"
+#line 17124 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17177,7 +17167,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db4=yes
 else
@@ -17201,7 +17191,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:17205: checking for Berkeley DB link (-ldb)" >&5
+echo "configure:17195: 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
@@ -17211,7 +17201,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17215 "configure"
+#line 17205 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17258,7 +17248,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db=yes
 else
@@ -17282,7 +17272,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb41)""... $ac_c" 1>&6
-echo "configure:17286: checking for Berkeley DB link (-ldb41)" >&5
+echo "configure:17276: checking for Berkeley DB link (-ldb41)" >&5
 if eval "test \"\${ol_cv_db_db41+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17292,7 +17282,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17296 "configure"
+#line 17286 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17339,7 +17329,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db41=yes
 else
@@ -17363,7 +17353,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-41)""... $ac_c" 1>&6
-echo "configure:17367: checking for Berkeley DB link (-ldb-41)" >&5
+echo "configure:17357: checking for Berkeley DB link (-ldb-41)" >&5
 if eval "test \"\${ol_cv_db_db_41+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17373,7 +17363,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17377 "configure"
+#line 17367 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17420,7 +17410,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_41=yes
 else
@@ -17444,7 +17434,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4.1)""... $ac_c" 1>&6
-echo "configure:17448: checking for Berkeley DB link (-ldb-4.1)" >&5
+echo "configure:17438: checking for Berkeley DB link (-ldb-4.1)" >&5
 if eval "test \"\${ol_cv_db_db_4_dot_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17454,7 +17444,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17458 "configure"
+#line 17448 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17501,7 +17491,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_dot_1=yes
 else
@@ -17525,7 +17515,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4-1)""... $ac_c" 1>&6
-echo "configure:17529: checking for Berkeley DB link (-ldb-4-1)" >&5
+echo "configure:17519: checking for Berkeley DB link (-ldb-4-1)" >&5
 if eval "test \"\${ol_cv_db_db_4_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -17535,7 +17525,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17539 "configure"
+#line 17529 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17582,7 +17572,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_1=yes
 else
@@ -17606,7 +17596,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:17610: checking for Berkeley DB link (-ldb3)" >&5
+echo "configure:17600: 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
@@ -17616,7 +17606,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17620 "configure"
+#line 17610 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17663,7 +17653,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db3=yes
 else
@@ -17687,7 +17677,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:17691: checking for Berkeley DB link (-ldb-3)" >&5
+echo "configure:17681: 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
@@ -17697,7 +17687,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17701 "configure"
+#line 17691 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17744,7 +17734,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17738: \"$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
@@ -17768,7 +17758,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:17772: checking for Berkeley DB link (-ldb2)" >&5
+echo "configure:17762: 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
@@ -17778,7 +17768,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17782 "configure"
+#line 17772 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17825,7 +17815,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db2=yes
 else
@@ -17849,7 +17839,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:17853: checking for Berkeley DB link (-ldb-2)" >&5
+echo "configure:17843: 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
@@ -17859,7 +17849,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17863 "configure"
+#line 17853 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17906,7 +17896,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17900: \"$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
@@ -17930,7 +17920,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:17934: checking for Berkeley DB link (-ldb1)" >&5
+echo "configure:17924: 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
@@ -17940,7 +17930,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 17944 "configure"
+#line 17934 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -17987,7 +17977,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:17991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:17981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db1=yes
 else
@@ -18011,7 +18001,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:18015: checking for Berkeley DB link (-ldb-1)" >&5
+echo "configure:18005: 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
@@ -18021,7 +18011,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18025 "configure"
+#line 18015 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18068,7 +18058,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18062: \"$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
@@ -18103,17 +18093,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:18107: checking for $ac_hdr" >&5
+echo "configure:18097: 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 18112 "configure"
+#line 18102 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:18117: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:18107: \"$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*
@@ -18143,7 +18133,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:18147: checking for Berkeley DB link (default)" >&5
+echo "configure:18137: 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
@@ -18153,7 +18143,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18157 "configure"
+#line 18147 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18200,7 +18190,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_none=yes
 else
@@ -18224,7 +18214,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb42)""... $ac_c" 1>&6
-echo "configure:18228: checking for Berkeley DB link (-ldb42)" >&5
+echo "configure:18218: checking for Berkeley DB link (-ldb42)" >&5
 if eval "test \"\${ol_cv_db_db42+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18234,7 +18224,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18238 "configure"
+#line 18228 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18281,7 +18271,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db42=yes
 else
@@ -18305,7 +18295,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-42)""... $ac_c" 1>&6
-echo "configure:18309: checking for Berkeley DB link (-ldb-42)" >&5
+echo "configure:18299: checking for Berkeley DB link (-ldb-42)" >&5
 if eval "test \"\${ol_cv_db_db_42+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18315,7 +18305,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18319 "configure"
+#line 18309 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18362,7 +18352,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_42=yes
 else
@@ -18386,7 +18376,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4.2)""... $ac_c" 1>&6
-echo "configure:18390: checking for Berkeley DB link (-ldb-4.2)" >&5
+echo "configure:18380: checking for Berkeley DB link (-ldb-4.2)" >&5
 if eval "test \"\${ol_cv_db_db_4_dot_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18396,7 +18386,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18400 "configure"
+#line 18390 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18443,7 +18433,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_dot_2=yes
 else
@@ -18467,7 +18457,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4-2)""... $ac_c" 1>&6
-echo "configure:18471: checking for Berkeley DB link (-ldb-4-2)" >&5
+echo "configure:18461: checking for Berkeley DB link (-ldb-4-2)" >&5
 if eval "test \"\${ol_cv_db_db_4_2+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18477,7 +18467,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18481 "configure"
+#line 18471 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18524,7 +18514,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18518: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_2=yes
 else
@@ -18548,7 +18538,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:18552: checking for Berkeley DB link (-ldb-4)" >&5
+echo "configure:18542: 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
@@ -18558,7 +18548,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18562 "configure"
+#line 18552 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18605,7 +18595,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18599: \"$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
@@ -18629,7 +18619,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:18633: checking for Berkeley DB link (-ldb4)" >&5
+echo "configure:18623: 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
@@ -18639,7 +18629,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18643 "configure"
+#line 18633 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18686,7 +18676,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db4=yes
 else
@@ -18710,7 +18700,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:18714: checking for Berkeley DB link (-ldb)" >&5
+echo "configure:18704: 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
@@ -18720,7 +18710,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18724 "configure"
+#line 18714 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18767,7 +18757,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db=yes
 else
@@ -18791,7 +18781,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb41)""... $ac_c" 1>&6
-echo "configure:18795: checking for Berkeley DB link (-ldb41)" >&5
+echo "configure:18785: checking for Berkeley DB link (-ldb41)" >&5
 if eval "test \"\${ol_cv_db_db41+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18801,7 +18791,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18805 "configure"
+#line 18795 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18848,7 +18838,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db41=yes
 else
@@ -18872,7 +18862,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-41)""... $ac_c" 1>&6
-echo "configure:18876: checking for Berkeley DB link (-ldb-41)" >&5
+echo "configure:18866: checking for Berkeley DB link (-ldb-41)" >&5
 if eval "test \"\${ol_cv_db_db_41+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18882,7 +18872,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18886 "configure"
+#line 18876 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -18929,7 +18919,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:18933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:18923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_41=yes
 else
@@ -18953,7 +18943,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4.1)""... $ac_c" 1>&6
-echo "configure:18957: checking for Berkeley DB link (-ldb-4.1)" >&5
+echo "configure:18947: checking for Berkeley DB link (-ldb-4.1)" >&5
 if eval "test \"\${ol_cv_db_db_4_dot_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -18963,7 +18953,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 18967 "configure"
+#line 18957 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19010,7 +19000,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_dot_1=yes
 else
@@ -19034,7 +19024,7 @@ fi
 
 if test $ol_cv_lib_db = no ; then
        echo $ac_n "checking for Berkeley DB link (-ldb-4-1)""... $ac_c" 1>&6
-echo "configure:19038: checking for Berkeley DB link (-ldb-4-1)" >&5
+echo "configure:19028: checking for Berkeley DB link (-ldb-4-1)" >&5
 if eval "test \"\${ol_cv_db_db_4_1+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -19044,7 +19034,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19048 "configure"
+#line 19038 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19091,7 +19081,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db_4_1=yes
 else
@@ -19115,7 +19105,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:19119: checking for Berkeley DB link (-ldb3)" >&5
+echo "configure:19109: 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
@@ -19125,7 +19115,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19129 "configure"
+#line 19119 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19172,7 +19162,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db3=yes
 else
@@ -19196,7 +19186,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:19200: checking for Berkeley DB link (-ldb-3)" >&5
+echo "configure:19190: 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
@@ -19206,7 +19196,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19210 "configure"
+#line 19200 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19253,7 +19243,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19247: \"$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
@@ -19277,7 +19267,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:19281: checking for Berkeley DB link (-ldb2)" >&5
+echo "configure:19271: 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
@@ -19287,7 +19277,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19291 "configure"
+#line 19281 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19334,7 +19324,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db2=yes
 else
@@ -19358,7 +19348,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:19362: checking for Berkeley DB link (-ldb-2)" >&5
+echo "configure:19352: 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
@@ -19368,7 +19358,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19372 "configure"
+#line 19362 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19415,7 +19405,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19409: \"$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
@@ -19439,7 +19429,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:19443: checking for Berkeley DB link (-ldb1)" >&5
+echo "configure:19433: 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
@@ -19449,7 +19439,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19453 "configure"
+#line 19443 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19496,7 +19486,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_db_db1=yes
 else
@@ -19520,7 +19510,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:19524: checking for Berkeley DB link (-ldb-1)" >&5
+echo "configure:19514: 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
@@ -19530,7 +19520,7 @@ else
        LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        cat > conftest.$ac_ext <<EOF
-#line 19534 "configure"
+#line 19524 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19577,7 +19567,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:19581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19571: \"$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
@@ -19603,7 +19593,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:19607: checking for Berkeley DB thread support" >&5
+echo "configure:19597: 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
@@ -19618,7 +19608,7 @@ else
   ol_cv_berkeley_db_thread=cross
 else
   cat > conftest.$ac_ext <<EOF
-#line 19622 "configure"
+#line 19612 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_DB_185_H
@@ -19685,7 +19675,7 @@ main()
        return rc;
 }
 EOF
-if { (eval echo configure:19689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:19679: \"$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
@@ -19747,13 +19737,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:19751: checking Berkeley DB version for BDB backend" >&5
+echo "configure:19741: 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 19757 "configure"
+#line 19747 "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:19810: checking for MDBM library" >&5
+echo "configure:19800: 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:19816: checking for mdbm_set_chain" >&5
+echo "configure:19806: 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 19821 "configure"
+#line 19811 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char mdbm_set_chain(); below.  */
@@ -19841,7 +19831,7 @@ f = mdbm_set_chain;
 
 ; return 0; }
 EOF
-if { (eval echo configure:19845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19835: \"$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
@@ -19860,7 +19850,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for mdbm_set_chain in -lmdbm""... $ac_c" 1>&6
-echo "configure:19864: checking for mdbm_set_chain in -lmdbm" >&5
+echo "configure:19854: 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
@@ -19868,7 +19858,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lmdbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 19872 "configure"
+#line 19862 "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
@@ -19879,7 +19869,7 @@ int main() {
 mdbm_set_chain()
 ; return 0; }
 EOF
-if { (eval echo configure:19883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:19873: \"$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
@@ -19914,17 +19904,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:19918: checking for $ac_hdr" >&5
+echo "configure:19908: 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 19923 "configure"
+#line 19913 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:19928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:19918: \"$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*
@@ -19951,7 +19941,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:19955: checking for db" >&5
+echo "configure:19945: 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:19988: checking for GDBM library" >&5
+echo "configure:19978: 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:19994: checking for gdbm_open" >&5
+echo "configure:19984: 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 19999 "configure"
+#line 19989 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gdbm_open(); below.  */
@@ -20019,7 +20009,7 @@ f = gdbm_open;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20013: \"$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
@@ -20038,7 +20028,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for gdbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:20042: checking for gdbm_open in -lgdbm" >&5
+echo "configure:20032: 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
@@ -20046,7 +20036,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lgdbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20050 "configure"
+#line 20040 "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
@@ -20057,7 +20047,7 @@ int main() {
 gdbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:20061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20051: \"$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
@@ -20092,17 +20082,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:20096: checking for $ac_hdr" >&5
+echo "configure:20086: 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 20101 "configure"
+#line 20091 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20096: \"$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*
@@ -20129,7 +20119,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:20133: checking for db" >&5
+echo "configure:20123: 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:20167: checking for NDBM library" >&5
+echo "configure:20157: 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:20173: checking for dbm_open" >&5
+echo "configure:20163: 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 20178 "configure"
+#line 20168 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -20198,7 +20188,7 @@ f = dbm_open;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20192: \"$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
@@ -20217,7 +20207,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for dbm_open in -lndbm""... $ac_c" 1>&6
-echo "configure:20221: checking for dbm_open in -lndbm" >&5
+echo "configure:20211: 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
@@ -20225,7 +20215,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lndbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20229 "configure"
+#line 20219 "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
@@ -20236,7 +20226,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:20240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20230: \"$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
@@ -20256,7 +20246,7 @@ else
   echo "$ac_t""no" 1>&6
 
                        echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:20260: checking for dbm_open in -ldbm" >&5
+echo "configure:20250: 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
@@ -20264,7 +20254,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldbm  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20268 "configure"
+#line 20258 "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
@@ -20275,7 +20265,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:20279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20269: \"$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
@@ -20312,17 +20302,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:20316: checking for $ac_hdr" >&5
+echo "configure:20306: 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 20321 "configure"
+#line 20311 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20326: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20316: \"$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*
@@ -20349,7 +20339,7 @@ fi
 done
 
  echo $ac_n "checking for db""... $ac_c" 1>&6
-echo "configure:20353: checking for db" >&5
+echo "configure:20343: checking for db" >&5
 if eval "test \"\${ol_cv_ndbm+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -20409,17 +20399,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:20413: checking for $ac_hdr" >&5
+echo "configure:20403: 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 20418 "configure"
+#line 20408 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20413: \"$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*
@@ -20441,11 +20431,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:20445: checking for TCP wrappers library" >&5
+echo "configure:20435: checking for TCP wrappers library" >&5
                save_LIBS="$LIBS"
                LIBS="$LIBS -lwrap"
                cat > conftest.$ac_ext <<EOF
-#line 20449 "configure"
+#line 20439 "configure"
 #include "confdefs.h"
 
 #include <tcpd.h>
@@ -20460,7 +20450,7 @@ hosts_access(req)
                
 ; return 0; }
 EOF
-if { (eval echo configure:20464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20454: \"$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
@@ -20472,7 +20462,7 @@ else
   
                                LIBS="$LIBS -lnsl"
                cat > conftest.$ac_ext <<EOF
-#line 20476 "configure"
+#line 20466 "configure"
 #include "confdefs.h"
 
 #include <tcpd.h>
@@ -20487,7 +20477,7 @@ hosts_access(req)
                
 ; return 0; }
 EOF
-if { (eval echo configure:20491: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20481: \"$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:20531: checking for openlog" >&5
+echo "configure:20521: 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 20536 "configure"
+#line 20526 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char openlog(); below.  */
@@ -20556,7 +20546,7 @@ f = openlog;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20550: \"$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
@@ -20588,17 +20578,17 @@ if test $ol_enable_sql != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:20592: checking for $ac_hdr" >&5
+echo "configure:20582: 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 20597 "configure"
+#line 20587 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20592: \"$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*
@@ -20628,7 +20618,7 @@ done
 
 
        echo $ac_n "checking for SQLDriverConnect in -liodbc""... $ac_c" 1>&6
-echo "configure:20632: checking for SQLDriverConnect in -liodbc" >&5
+echo "configure:20622: 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
@@ -20636,7 +20626,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-liodbc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20640 "configure"
+#line 20630 "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
@@ -20647,7 +20637,7 @@ int main() {
 SQLDriverConnect()
 ; return 0; }
 EOF
-if { (eval echo configure:20651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20641: \"$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
@@ -20672,7 +20662,7 @@ fi
                ol_link_sql="-liodbc"
        else
                echo $ac_n "checking for SQLDriverConnect in -lodbc""... $ac_c" 1>&6
-echo "configure:20676: checking for SQLDriverConnect in -lodbc" >&5
+echo "configure:20666: 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
@@ -20680,7 +20670,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lodbc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20684 "configure"
+#line 20674 "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
@@ -20691,7 +20681,7 @@ int main() {
 SQLDriverConnect()
 ; return 0; }
 EOF
-if { (eval echo configure:20695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20685: \"$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
@@ -20732,17 +20722,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:20736: checking for $ac_hdr" >&5
+echo "configure:20726: 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 20741 "configure"
+#line 20731 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:20746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:20736: \"$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*
@@ -20771,7 +20761,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:20775: checking for sasl_client_init in -lsasl2" >&5
+echo "configure:20765: 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
@@ -20779,7 +20769,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl2  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20783 "configure"
+#line 20773 "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
@@ -20790,7 +20780,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:20794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20784: \"$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
@@ -20809,7 +20799,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:20813: checking for sasl_client_init in -lsasl" >&5
+echo "configure:20803: 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
@@ -20817,7 +20807,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lsasl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 20821 "configure"
+#line 20811 "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
@@ -20828,7 +20818,7 @@ int main() {
 sasl_client_init()
 ; return 0; }
 EOF
-if { (eval echo configure:20832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20822: \"$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:20868: checking Cyrus SASL library version" >&5
+echo "configure:20858: 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 20874 "configure"
+#line 20864 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SASL_SASL_H
@@ -20919,12 +20909,12 @@ EOF
                ac_save_LIBS="$LIBS"
                LIBS="$LIBS $ol_link_sasl"
                echo $ac_n "checking for sasl_version""... $ac_c" 1>&6
-echo "configure:20923: checking for sasl_version" >&5
+echo "configure:20913: 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 20928 "configure"
+#line 20918 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sasl_version(); below.  */
@@ -20948,7 +20938,7 @@ f = sasl_version;
 
 ; return 0; }
 EOF
-if { (eval echo configure:20952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:20942: \"$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
@@ -21007,13 +20997,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:21011: checking fetch(3) library" >&5
+echo "configure:21001: 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 21017 "configure"
+#line 21007 "configure"
 #include "confdefs.h"
 
 #include <sys/param.h>
@@ -21023,7 +21013,7 @@ int main() {
 struct url *u = fetchParseURL("file:///"); 
 ; return 0; }
 EOF
-if { (eval echo configure:21027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ol_cv_lib_fetch=yes
 else
@@ -21060,12 +21050,12 @@ if test $ol_enable_crypt != no ; then
        LIBS="$TLS_LIBS $LIBS"
 
        echo $ac_n "checking for crypt""... $ac_c" 1>&6
-echo "configure:21064: checking for crypt" >&5
+echo "configure:21054: 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 21069 "configure"
+#line 21059 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char crypt(); below.  */
@@ -21089,7 +21079,7 @@ f = crypt;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21083: \"$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
@@ -21109,7 +21099,7 @@ else
 
                LIBS="$save_LIBS"
                echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:21113: checking for crypt in -lcrypt" >&5
+echo "configure:21103: 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
@@ -21117,7 +21107,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lcrypt  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 21121 "configure"
+#line 21111 "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
@@ -21128,7 +21118,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:21132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21122: \"$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:21177: checking for setproctitle" >&5
+echo "configure:21167: 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 21182 "configure"
+#line 21172 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char setproctitle(); below.  */
@@ -21202,7 +21192,7 @@ f = setproctitle;
 
 ; return 0; }
 EOF
-if { (eval echo configure:21206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21196: \"$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
@@ -21221,7 +21211,7 @@ else
   echo "$ac_t""no" 1>&6
 
                echo $ac_n "checking for setproctitle in -lutil""... $ac_c" 1>&6
-echo "configure:21225: checking for setproctitle in -lutil" >&5
+echo "configure:21215: 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
@@ -21229,7 +21219,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lutil  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 21233 "configure"
+#line 21223 "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
@@ -21240,7 +21230,7 @@ int main() {
 setproctitle()
 ; return 0; }
 EOF
-if { (eval echo configure:21244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21234: \"$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
@@ -21280,17 +21270,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:21284: checking for $ac_hdr" >&5
+echo "configure:21274: 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 21289 "configure"
+#line 21279 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:21294: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:21284: \"$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*
@@ -21319,7 +21309,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:21323: checking for SLPOpen in -lslp" >&5
+echo "configure:21313: 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
@@ -21327,7 +21317,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lslp  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 21331 "configure"
+#line 21321 "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
@@ -21338,7 +21328,7 @@ int main() {
 SLPOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:21342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:21332: \"$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 long long""... $ac_c" 1>&6
-echo "configure:21378: checking long long" >&5
+echo "configure:21368: checking long long" >&5
 if eval "test \"\${ol_cv_type_long_long+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   
        cat > conftest.$ac_ext <<EOF
-#line 21384 "configure"
+#line 21374 "configure"
 #include "confdefs.h"
 
 int main() {
 long long x;
 ; return 0; }
 EOF
-if { (eval echo configure:21391: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_long_long=yes
 else
@@ -21408,12 +21398,12 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:21412: checking for ANSI C header files" >&5
+echo "configure:21402: 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 21417 "configure"
+#line 21407 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -21421,7 +21411,7 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:21425: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:21415: \"$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*
@@ -21438,7 +21428,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 21442 "configure"
+#line 21432 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -21456,7 +21446,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 21460 "configure"
+#line 21450 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -21477,7 +21467,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 21481 "configure"
+#line 21471 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #if ((' ' & 0x0FF) == 0x020)
@@ -21495,7 +21485,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:21499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:21489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -21519,12 +21509,12 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:21523: checking for mode_t" >&5
+echo "configure:21513: 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 21528 "configure"
+#line 21518 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -21555,12 +21545,12 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:21559: checking for off_t" >&5
+echo "configure:21549: 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 21564 "configure"
+#line 21554 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -21591,12 +21581,12 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:21595: checking for pid_t" >&5
+echo "configure:21585: 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 21600 "configure"
+#line 21590 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -21627,19 +21617,19 @@ EOF
 fi
 
 echo $ac_n "checking for ptrdiff_t""... $ac_c" 1>&6
-echo "configure:21631: checking for ptrdiff_t" >&5
+echo "configure:21621: 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 21636 "configure"
+#line 21626 "configure"
 #include "confdefs.h"
 #include <stddef.h>
 int main() {
 ptrdiff_t p
 ; return 0; }
 EOF
-if { (eval echo configure:21643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21633: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   am_cv_type_ptrdiff_t=yes
 else
@@ -21660,12 +21650,12 @@ EOF
    fi
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:21664: checking return type of signal handlers" >&5
+echo "configure:21654: 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 21669 "configure"
+#line 21659 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -21682,7 +21672,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:21686: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21676: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -21701,12 +21691,12 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:21705: checking for size_t" >&5
+echo "configure:21695: 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 21710 "configure"
+#line 21700 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:21742: checking for ssize_t" >&5
+echo "configure:21732: 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 21747 "configure"
+#line 21737 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -21774,12 +21764,12 @@ EOF
 fi
 
 echo $ac_n "checking for caddr_t""... $ac_c" 1>&6
-echo "configure:21778: checking for caddr_t" >&5
+echo "configure:21768: 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 21783 "configure"
+#line 21773 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
 
 
 echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:21815: checking for socklen_t" >&5
+echo "configure:21805: 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 21820 "configure"
+#line 21810 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -21830,7 +21820,7 @@ int main() {
 socklen_t len;
 ; return 0; }
 EOF
-if { (eval echo configure:21834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_socklen_t=yes
 else
@@ -21851,12 +21841,12 @@ EOF
   fi
  
 echo $ac_n "checking for member st_blksize in aggregate type struct stat""... $ac_c" 1>&6
-echo "configure:21855: checking for member st_blksize in aggregate type struct stat" >&5
+echo "configure:21845: 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 21860 "configure"
+#line 21850 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -21864,7 +21854,7 @@ int main() {
 struct stat foo; foo.st_blksize;
 ; return 0; }
 EOF
-if { (eval echo configure:21868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_struct_member_st_blksize=yes
 else
@@ -21886,12 +21876,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:21890: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:21880: 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 21895 "configure"
+#line 21885 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -21900,7 +21890,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:21904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -21921,12 +21911,12 @@ EOF
 fi
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:21925: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:21915: 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 21930 "configure"
+#line 21920 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -21934,7 +21924,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:21938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -21955,12 +21945,12 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:21959: checking for uid_t in sys/types.h" >&5
+echo "configure:21949: 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 21964 "configure"
+#line 21954 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -21989,19 +21979,19 @@ EOF
 fi
 
 echo $ac_n "checking for sig_atomic_t""... $ac_c" 1>&6
-echo "configure:21993: checking for sig_atomic_t" >&5
+echo "configure:21983: 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 21998 "configure"
+#line 21988 "configure"
 #include "confdefs.h"
 #include <signal.h>
 int main() {
 sig_atomic_t atomic;
 ; return 0; }
 EOF
-if { (eval echo configure:22005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:21995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_type_sig_atomic_t=yes
 else
@@ -22025,13 +22015,13 @@ EOF
 
 # test for pw_gecos in struct passwd
 echo $ac_n "checking struct passwd for pw_gecos""... $ac_c" 1>&6
-echo "configure:22029: checking struct passwd for pw_gecos" >&5
+echo "configure:22019: 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 22035 "configure"
+#line 22025 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
@@ -22041,7 +22031,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:22045: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22035: \"$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:22067: checking struct passwd for pw_passwd" >&5
+echo "configure:22057: 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 22073 "configure"
+#line 22063 "configure"
 #include "confdefs.h"
 #include <pwd.h>
 int main() {
@@ -22079,7 +22069,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:22083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_struct_passwd_pw_passwd=yes
 else
@@ -22101,7 +22091,7 @@ fi
 
 
 echo $ac_n "checking if toupper() requires islower()""... $ac_c" 1>&6
-echo "configure:22105: checking if toupper() requires islower()" >&5
+echo "configure:22095: 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
@@ -22110,7 +22100,7 @@ else
   ol_cv_c_upper_lower=safe
 else
   cat > conftest.$ac_ext <<EOF
-#line 22114 "configure"
+#line 22104 "configure"
 #include "confdefs.h"
 
 #include <ctype.h>
@@ -22122,7 +22112,7 @@ main()
                exit(1);
 }
 EOF
-if { (eval echo configure:22126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:22116: \"$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
@@ -22145,12 +22135,12 @@ EOF
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:22149: checking for working const" >&5
+echo "configure:22139: 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 22154 "configure"
+#line 22144 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -22199,7 +22189,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -22220,12 +22210,12 @@ EOF
 fi
 
 echo $ac_n "checking if compiler understands volatile""... $ac_c" 1>&6
-echo "configure:22224: checking if compiler understands volatile" >&5
+echo "configure:22214: 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 22229 "configure"
+#line 22219 "configure"
 #include "confdefs.h"
 int x, y, z;
 int main() {
@@ -22234,7 +22224,7 @@ volatile int a; int * volatile b = x ? &y : &z;
       *b = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:22238: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22228: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_c_volatile=yes
 else
@@ -22264,14 +22254,14 @@ EOF
 
 else
        echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:22268: checking whether byte ordering is bigendian" >&5
+echo "configure:22258: 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 22275 "configure"
+#line 22265 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -22282,11 +22272,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:22286: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22276: \"$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 22290 "configure"
+#line 22280 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -22297,7 +22287,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:22301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -22317,7 +22307,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 22321 "configure"
+#line 22311 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -22330,7 +22320,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:22334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:22324: \"$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:22360: checking size of short" >&5 
+echo "configure:22350: 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 22366 "configure"
+#line 22356 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -22372,7 +22362,7 @@ int main() {
 switch (0) case 0: case (sizeof (short) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:22376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22366: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_short=$ac_size
 else
@@ -22395,13 +22385,13 @@ EOF
  
  
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:22399: checking size of int" >&5 
+echo "configure:22389: 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 22405 "configure"
+#line 22395 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -22411,7 +22401,7 @@ int main() {
 switch (0) case 0: case (sizeof (int) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:22415: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_int=$ac_size
 else
@@ -22434,13 +22424,13 @@ EOF
  
  
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:22438: checking size of long" >&5 
+echo "configure:22428: 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 22444 "configure"
+#line 22434 "configure"
 #include "confdefs.h"
 #include "confdefs.h" 
 #include <sys/types.h> 
@@ -22450,7 +22440,7 @@ int main() {
 switch (0) case 0: case (sizeof (long) == $ac_size):;
 ; return 0; }
 EOF
-if { (eval echo configure:22454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:22444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_sizeof_long=$ac_size
 else
@@ -22501,7 +22491,7 @@ EOF
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:22505: checking for 8-bit clean memcmp" >&5
+echo "configure:22495: 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
@@ -22509,7 +22499,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 22513 "configure"
+#line 22503 "configure"
 #include "confdefs.h"
 
 main()
@@ -22519,7 +22509,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:22523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:22513: \"$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
@@ -22537,12 +22527,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:22541: checking for strftime" >&5
+echo "configure:22531: 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 22546 "configure"
+#line 22536 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char strftime(); below.  */
@@ -22566,7 +22556,7 @@ f = strftime;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22560: \"$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
@@ -22588,7 +22578,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:22592: checking for strftime in -lintl" >&5
+echo "configure:22582: 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
@@ -22596,7 +22586,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lintl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 22600 "configure"
+#line 22590 "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
@@ -22607,7 +22597,7 @@ int main() {
 strftime()
 ; return 0; }
 EOF
-if { (eval echo configure:22611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22601: \"$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:22639: checking for inet_aton()" >&5
+echo "configure:22629: 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 22644 "configure"
+#line 22634 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_TYPES_H
@@ -22662,7 +22652,7 @@ struct in_addr in;
 int rc = inet_aton( "255.255.255.255", &in );
 ; return 0; }
 EOF
-if { (eval echo configure:22666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22656: \"$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
@@ -22684,12 +22674,12 @@ EOF
  
 
 echo $ac_n "checking for _spawnlp""... $ac_c" 1>&6
-echo "configure:22688: checking for _spawnlp" >&5
+echo "configure:22678: 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 22693 "configure"
+#line 22683 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _spawnlp(); below.  */
@@ -22713,7 +22703,7 @@ f = _spawnlp;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22707: \"$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:22741: checking for _snprintf" >&5
+echo "configure:22731: 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 22746 "configure"
+#line 22736 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _snprintf(); below.  */
@@ -22766,7 +22756,7 @@ f = _snprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22760: \"$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:22796: checking for _vsnprintf" >&5
+echo "configure:22786: 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 22801 "configure"
+#line 22791 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _vsnprintf(); below.  */
@@ -22821,7 +22811,7 @@ f = _vsnprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22815: \"$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:22851: checking for vprintf" >&5
+echo "configure:22841: 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 22856 "configure"
+#line 22846 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char vprintf(); below.  */
@@ -22876,7 +22866,7 @@ f = vprintf;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22870: \"$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:22904: checking for _doprnt" >&5
+echo "configure:22894: 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 22909 "configure"
+#line 22899 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char _doprnt(); below.  */
@@ -22929,7 +22919,7 @@ f = _doprnt;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22923: \"$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
@@ -22958,12 +22948,12 @@ if test $ac_cv_func_vprintf = yes ; then
                for ac_func in snprintf vsnprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:22962: checking for $ac_func" >&5
+echo "configure:22952: 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 22967 "configure"
+#line 22957 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -22987,7 +22977,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:22991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:22981: \"$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
@@ -23073,12 +23063,12 @@ for ac_func in \
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:23077: checking for $ac_func" >&5
+echo "configure:23067: 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 23082 "configure"
+#line 23072 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -23102,7 +23092,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:23106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23096: \"$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
@@ -23130,12 +23120,12 @@ done
 for ac_func in getopt getpeereid
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:23134: checking for $ac_func" >&5
+echo "configure:23124: 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 23139 "configure"
+#line 23129 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -23159,7 +23149,7 @@ f = $ac_func;
 
 ; return 0; }
 EOF
-if { (eval echo configure:23163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23153: \"$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
@@ -23191,19 +23181,19 @@ if test "$ac_cv_func_getopt" != yes; then
 fi
 if test "$ac_cv_func_getpeereid" != yes; then
        echo $ac_n "checking for msg_accrights in msghdr""... $ac_c" 1>&6
-echo "configure:23195: checking for msg_accrights in msghdr" >&5
+echo "configure:23185: checking for msg_accrights in msghdr" >&5
 if eval "test \"\${ol_cv_msghdr_msg_accrights+set}\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 23200 "configure"
+#line 23190 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
 int main() {
 struct msghdr m; m.msg_accrightslen=0
 ; return 0; }
 EOF
-if { (eval echo configure:23207: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ol_cv_msghdr_msg_accrights=yes
 else
 
 # Check Configuration
 echo $ac_n "checking declaration of sys_errlist""... $ac_c" 1>&6
-echo "configure:23247: checking declaration of sys_errlist" >&5
+echo "configure:23237: 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 23253 "configure"
+#line 23243 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -23262,7 +23252,7 @@ int main() {
 char *c = (char *) *sys_errlist
 ; return 0; }
 EOF
-if { (eval echo configure:23266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:23256: \"$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
@@ -23285,20 +23275,20 @@ EOF
 
 
        echo $ac_n "checking existence of sys_errlist""... $ac_c" 1>&6
-echo "configure:23289: checking existence of sys_errlist" >&5
+echo "configure:23279: 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 23295 "configure"
+#line 23285 "configure"
 #include "confdefs.h"
 #include <errno.h>
 int main() {
 char *c = (char *) *sys_errlist
 ; return 0; }
 EOF
-if { (eval echo configure:23302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23292: \"$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
@@ -23326,17 +23316,17 @@ if test "$ol_enable_slapi" != no ; then
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:23330: checking for $ac_hdr" >&5
+echo "configure:23320: 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 23335 "configure"
+#line 23325 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:23340: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:23330: \"$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*
@@ -23367,7 +23357,7 @@ done
                { echo "configure: error: could not locate <ltdl.h>" 1>&2; exit 1; }
        fi
        echo $ac_n "checking for lt_dlinit in -lltdl""... $ac_c" 1>&6
-echo "configure:23371: checking for lt_dlinit in -lltdl" >&5
+echo "configure:23361: 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
@@ -23375,7 +23365,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lltdl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 23379 "configure"
+#line 23369 "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
@@ -23386,7 +23376,7 @@ int main() {
 lt_dlinit()
 ; return 0; }
 EOF
-if { (eval echo configure:23390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:23380: \"$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
@@ -23475,12 +23465,6 @@ if test "$ol_enable_crypt" != no ; then
 #define SLAPD_CRYPT 1
 EOF
 
-fi
-if test "$ol_link_kpasswd" != no ; then
-       cat >> confdefs.h <<\EOF
-#define SLAPD_KPASSWD 1
-EOF
-
 fi
 if test "$ol_link_spasswd" != no ; then
        cat >> confdefs.h <<\EOF
@@ -24010,7 +23994,6 @@ servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:
 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
 servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk  \
 servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk \
-servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
 tests/run \
@@ -24239,7 +24222,6 @@ servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:
 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
 servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk  \
 servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk \
-servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
 tests/run \
index 4925f4898fb3a4fdf4fc60b44c166db3e68b1654..bc8d6f86710a8ae31aa1b15e9cb7204c31225eff 100644 (file)
 /* define to support crypt(3) passwords */
 #undef SLAPD_CRYPT
 
-/* define to support Kerberos passwords */
-#undef SLAPD_KPASSWD
-
 /* define to support SASL passwords */
 #undef SLAPD_SPASSWD
 
index 1ddd783cd2acd36447e3fd052b375976a2352bde..9896b77d74c71c886ce09110d21a549e7e513c99 100644 (file)
@@ -62,6 +62,12 @@ static struct berval
        aci_bv_set_ref          = BER_BVC("set-ref"),
        aci_bv_grant            = BER_BVC("grant"),
        aci_bv_deny             = BER_BVC("deny"),
+
+       aci_bv_ip_eq            = BER_BVC("IP="),
+#ifdef LDAP_PF_LOCAL
+       aci_bv_path_eq          = BER_BVC("PATH="),
+       aci_bv_dirsep           = BER_BVC(LDAP_DIRSEP),
+#endif /* LDAP_PF_LOCAL */
        
        aci_bv_group_class      = BER_BVC(SLAPD_GROUP_CLASS),
        aci_bv_group_attr       = BER_BVC(SLAPD_GROUP_ATTR),
@@ -74,7 +80,8 @@ static AccessControl * acl_get(
        Operation *op, Entry *e,
        AttributeDescription *desc,
        struct berval *val,
-       int nmatches, regmatch_t *matches );
+       int nmatches, regmatch_t *matches,
+       AccessControlState *state );
 
 static slap_control_t acl_mask(
        AccessControl *ac, slap_mask_t *mask,
@@ -150,7 +157,6 @@ access_allowed(
        const char *attr;
        regmatch_t matches[MAXREMATCHES];
        int        st_same_attr = 0;
-       int        st_initialized = 0;
        static AccessControlState state_init = ACL_STATE_INIT;
 
        assert( e != NULL );
@@ -167,21 +173,24 @@ access_allowed(
                access = ACL_AUTH;
        }
 
-       if( state && state->as_recorded && state->as_vd_ad==desc) { 
-               if( state->as_recorded & ACL_STATE_RECORDED_NV &&
-                       val == NULL )
-               {
-                       return state->as_result;
-
-               } else if ( state->as_recorded & ACL_STATE_RECORDED_VD &&
-                       val != NULL && state->as_vd_acl == NULL )
-               {
-                       return state->as_result;
+       if( state ) {
+               if ( state->as_vd_ad==desc) {
+                       if ( state->as_recorded ) {
+                               if( state->as_recorded & ACL_STATE_RECORDED_NV &&
+                                       val == NULL )
+                               {
+                                       return state->as_result;
+                               } else if ( state->as_recorded & ACL_STATE_RECORDED_VD &&
+                                       val != NULL && state->as_vd_acl == NULL )
+                               {
+                                       return state->as_result;
+                               }
+                       }
+                       st_same_attr = 1;
+               } else {
+                       *state = state_init;
                }
-               st_same_attr = 1;
-       }
 
-       if( state ) {
                state->as_vd_ad=desc;
        }
 
@@ -299,10 +308,12 @@ access_allowed(
                assert( state->as_vd_acl != NULL );
 
                a = state->as_vd_acl;
-               mask = state->as_vd_acl_mask;
                count = state->as_vd_acl_count;
-               AC_MEMCPY( matches, state->as_vd_acl_matches, sizeof(matches) );
-               goto vd_access;
+               if ( !ACL_IS_INVALID( state->as_vd_acl_mask )) {
+                       mask = state->as_vd_acl_mask;
+                       AC_MEMCPY( matches, state->as_vd_acl_matches, sizeof(matches) );
+                       goto vd_access;
+               }
 
        } else {
                if ( state ) state->as_vi_acl = NULL;
@@ -313,7 +324,7 @@ access_allowed(
        }
 
        while((a = acl_get( a, &count, op, e, desc, val,
-               MAXREMATCHES, matches )) != NULL)
+               MAXREMATCHES, matches, state )) != NULL)
        {
                int i;
 
@@ -344,11 +355,8 @@ access_allowed(
                                Debug( LDAP_DEBUG_ACL, "access_allowed: result from state (%s)\n", attr, 0, 0 );
                                ret = state->as_result;
                                goto done;
-                       } else if (!st_initialized) {
+                       } else {
                                Debug( LDAP_DEBUG_ACL, "access_allowed: no res from state (%s)\n", attr, 0, 0);
-                           *state = state_init;
-                               state->as_vd_ad=desc;
-                               st_initialized=1;
                        }
                }
 
@@ -415,6 +423,7 @@ done:
        return ret;
 }
 
+
 /*
  * acl_get - return the acl applicable to entry e, attribute
  * attr.  the acl returned is suitable for use in subsequent calls to
@@ -430,10 +439,12 @@ acl_get(
        AttributeDescription *desc,
        struct berval   *val,
        int                     nmatch,
-       regmatch_t      *matches )
+       regmatch_t      *matches,
+       AccessControlState *state )
 {
        const char *attr;
        int dnlen, patlen;
+       AccessControl *prev;
 
        assert( e != NULL );
        assert( count != NULL );
@@ -449,10 +460,12 @@ acl_get(
                } else {
                        a = op->o_bd->be_acl;
                }
+               prev = NULL;
 
                assert( a != NULL );
 
        } else {
+               prev = a;
                a = a->acl_next;
        }
 
@@ -529,6 +542,99 @@ acl_get(
 #endif
                }
 
+               if ( a->acl_attrs && !ad_inlist( desc, a->acl_attrs ) ) {
+                       matches[0].rm_so = matches[0].rm_eo = -1;
+                       continue;
+               }
+
+               /* Is this ACL only for a specific value? */
+               if ( a->acl_attrval.bv_len ) {
+                       if ( val == NULL ) {
+                               continue;
+                       }
+
+                       if( state && !( state->as_recorded & ACL_STATE_RECORDED_VD )) {
+                               state->as_recorded |= ACL_STATE_RECORDED_VD;
+                               state->as_vd_acl = prev;
+                               state->as_vd_acl_count = *count;
+                               state->as_vd_access = a->acl_access;
+                               state->as_vd_access_count = 1;
+                               ACL_INVALIDATE( state->as_vd_acl_mask );
+                       }
+
+                       if ( a->acl_attrval_style == ACL_STYLE_REGEX ) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG( ACL, DETAIL1, 
+                                       "acl_get: valpat %s\n",
+                                       a->acl_attrval.bv_val, 0, 0 );
+#else
+                               Debug( LDAP_DEBUG_ACL,
+                                       "acl_get: valpat %s\n",
+                                       a->acl_attrval.bv_val, 0, 0 );
+#endif
+                               if (regexec(&a->acl_attrval_re, val->bv_val, 0, NULL, 0))
+                                       continue;
+                       } else {
+                               int match = 0;
+                               const char *text;
+#ifdef NEW_LOGGING
+                               LDAP_LOG( ACL, DETAIL1, 
+                                       "acl_get: val %s\n",
+                                       a->acl_attrval.bv_val, 0, 0 );
+#else
+                               Debug( LDAP_DEBUG_ACL,
+                                       "acl_get: val %s\n",
+                                       a->acl_attrval.bv_val, 0, 0 );
+#endif
+       
+                               if ( a->acl_attrs[0].an_desc->ad_type->sat_syntax != slap_schema.si_syn_distinguishedName ) {
+                                       if (value_match( &match, desc,
+                                               desc->ad_type->sat_equality, 0,
+                                               val, &a->acl_attrval, &text ) != LDAP_SUCCESS ||
+                                                       match )
+                                               continue;
+                                       
+                               } else {
+                                       int             patlen, vdnlen;
+       
+                                       patlen = a->acl_attrval.bv_len;
+                                       vdnlen = val->bv_len;
+       
+                                       if ( vdnlen < patlen )
+                                               continue;
+       
+                                       if ( a->acl_dn_style == ACL_STYLE_BASE ) {
+                                               if ( vdnlen > patlen )
+                                                       continue;
+       
+                                       } else if ( a->acl_dn_style == ACL_STYLE_ONE ) {
+                                               int rdnlen = -1;
+       
+                                               if ( !DN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
+                                                       continue;
+       
+                                               rdnlen = dn_rdnlen( NULL, val );
+                                               if ( rdnlen != vdnlen - patlen - 1 )
+                                                       continue;
+       
+                                       } else if ( a->acl_dn_style == ACL_STYLE_SUBTREE ) {
+                                               if ( vdnlen > patlen && !DN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
+                                                       continue;
+       
+                                       } else if ( a->acl_dn_style == ACL_STYLE_CHILDREN ) {
+                                               if ( vdnlen <= patlen )
+                                                       continue;
+       
+                                               if ( !DN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
+                                                       continue;
+                                       }
+       
+                                       if ( strcmp( a->acl_attrval.bv_val, val->bv_val + vdnlen - patlen ))
+                                               continue;
+                               }
+                       }
+               }
+
                if ( a->acl_filter != NULL ) {
                        ber_int_t rc = test_filter( NULL, e, a->acl_filter );
                        if ( rc != LDAP_COMPARE_TRUE ) {
@@ -538,25 +644,12 @@ acl_get(
 
 #ifdef NEW_LOGGING
                LDAP_LOG( ACL, DETAIL1, 
-                       "acl_get: [%d] check attr %s\n", *count, attr ,0 );
+                       "acl_get: [%d] attr %s\n", *count, attr ,0 );
 #else
-               Debug( LDAP_DEBUG_ACL, "=> acl_get: [%d] check attr %s\n",
+               Debug( LDAP_DEBUG_ACL, "=> acl_get: [%d] attr %s\n",
                       *count, attr, 0);
 #endif
-               if ( a->acl_attrs == NULL ||
-                       ad_inlist( desc, a->acl_attrs ) )
-               {
-#ifdef NEW_LOGGING
-                       LDAP_LOG( ACL, DETAIL1, 
-                               "acl_get:  [%d] acl %s attr: %s\n", *count, e->e_dn, attr );
-#else
-                       Debug( LDAP_DEBUG_ACL,
-                               "<= acl_get: [%d] acl %s attr: %s\n",
-                               *count, e->e_dn, attr );
-#endif
-                       return a;
-               }
-               matches[0].rm_so = matches[0].rm_eo = -1;
+               return a;
        }
 
 #ifdef NEW_LOGGING
@@ -640,106 +733,6 @@ acl_mask(
                accessmask2str( *mask, accessmaskbuf ) );
 #endif
 
-       /* Is this ACL only for a specific value? */
-       if ( a->acl_attrval.bv_len ) {
-               if ( state && !state->as_vd_acl ) {
-                       state->as_vd_acl = a;
-                       state->as_vd_access = a->acl_access;
-                       state->as_vd_access_count = 1;
-               }
-               if ( val == NULL ) {
-                       return ACL_BREAK;
-               }
-               if ( a->acl_attrval_style == ACL_STYLE_REGEX ) {
-#ifdef NEW_LOGGING
-                       LDAP_LOG( ACL, DETAIL1, 
-                               "acl_get: valpat %s\n",
-                               a->acl_attrval.bv_val, 0, 0 );
-#else
-                       Debug( LDAP_DEBUG_ACL,
-                               "acl_get: valpat %s\n",
-                               a->acl_attrval.bv_val, 0, 0 );
-#endif
-                       if (regexec(&a->acl_attrval_re, val->bv_val, 0, NULL, 0))
-                               return ACL_BREAK;
-               } else {
-                       int match = 0;
-                       const char *text;
-#ifdef NEW_LOGGING
-                       LDAP_LOG( ACL, DETAIL1, 
-                               "acl_get: val %s\n",
-                               a->acl_attrval.bv_val, 0, 0 );
-#else
-                       Debug( LDAP_DEBUG_ACL,
-                               "acl_get: val %s\n",
-                               a->acl_attrval.bv_val, 0, 0 );
-#endif
-
-                       if ( a->acl_attrs[0].an_desc->ad_type->sat_syntax != slap_schema.si_syn_distinguishedName ) {
-                               if (value_match( &match, desc,
-                                       desc->ad_type->sat_equality, 0,
-                                       val, &a->acl_attrval, &text ) != LDAP_SUCCESS ||
-                                               match )
-                                       return ACL_BREAK;
-                               
-                       } else {
-                               int             patlen, vdnlen, rc, got_match = 0;
-                               struct berval   vdn = { 0, NULL };
-
-                               /* it is a DN */
-                               assert( a->acl_attrs[0].an_desc->ad_type->sat_syntax == slap_schema.si_syn_distinguishedName );
-
-                               rc = dnNormalize( 0, NULL, NULL, val, &vdn,
-                                               op->o_tmpmemctx );
-                               if ( rc != LDAP_SUCCESS ) {
-                                       /* error */
-                                       return ACL_BREAK;
-                               }
-
-                               patlen = a->acl_attrval.bv_len;
-                               vdnlen = vdn.bv_len;
-
-                               if ( vdnlen < patlen )
-                                       goto attrval_cleanup;
-
-                               if ( a->acl_dn_style == ACL_STYLE_BASE ) {
-                                       if ( vdnlen > patlen )
-                                               goto attrval_cleanup;
-
-                               } else if ( a->acl_dn_style == ACL_STYLE_ONE ) {
-                                       int rdnlen = -1;
-
-                                       if ( !DN_SEPARATOR( vdn.bv_val[vdnlen - patlen - 1] ) )
-                                               goto attrval_cleanup;
-
-                                       rdnlen = dn_rdnlen( NULL, &vdn );
-                                       if ( rdnlen != vdnlen - patlen - 1 )
-                                               goto attrval_cleanup;
-
-                               } else if ( a->acl_dn_style == ACL_STYLE_SUBTREE ) {
-                                       if ( vdnlen > patlen && !DN_SEPARATOR( vdn.bv_val[vdnlen - patlen - 1] ) )
-                                               goto attrval_cleanup;
-
-                               } else if ( a->acl_dn_style == ACL_STYLE_CHILDREN ) {
-                                       if ( vdnlen <= patlen )
-                                               goto attrval_cleanup;
-
-                                       if ( !DN_SEPARATOR( vdn.bv_val[vdnlen - patlen - 1] ) )
-                                               goto attrval_cleanup;
-                               }
-
-                               got_match = strcmp( a->acl_attrval.bv_val, vdn.bv_val + vdnlen - patlen );
-
-attrval_cleanup:;
-                               if ( vdn.bv_val )
-                                       free( vdn.bv_val );
-
-                               if ( !got_match )
-                                       return ACL_BREAK;
-                               
-                       }
-               }
-       }
 
        if( state && ( state->as_recorded & ACL_STATE_RECORDED_VD )
                && state->as_vd_acl == a )
@@ -902,6 +895,19 @@ dn_match_cleanup:;
                                        {
                                                continue;
                                        }
+
+                               } else if ( b->a_sockurl_style == ACL_STYLE_EXPAND ) {
+                                       struct berval   bv;
+                                       char buf[ACL_BUF_SIZE];
+
+                                       bv.bv_len = sizeof( buf ) - 1;
+                                       bv.bv_val = buf;
+                                       string_expand( &bv, &b->a_sockurl_pat, e->e_ndn, matches );
+
+                                       if ( ber_bvstrcasecmp( &bv, &op->o_conn->c_listener_url ) != 0 ) {
+                                               continue;
+                                       }
+
                                } else {
                                        if ( ber_bvstrcasecmp( &b->a_sockurl_pat, &op->o_conn->c_listener_url ) != 0 )
                                                continue;
@@ -979,15 +985,99 @@ dn_match_cleanup:;
                                b->a_peername_pat.bv_val, 0, 0 );
 #endif
                        if ( !ber_bvccmp( &b->a_peername_pat, '*' ) ) {
-                               if ( b->a_peername_style == ACL_STYLE_REGEX) {
+                               if ( b->a_peername_style == ACL_STYLE_REGEX ) {
                                        if (!regex_matches( &b->a_peername_pat, op->o_conn->c_peer_name.bv_val,
                                                        e->e_ndn, matches ) ) 
                                        {
                                                continue;
                                        }
+
                                } else {
-                                       if ( ber_bvstrcasecmp( &b->a_peername_pat, &op->o_conn->c_peer_name ) != 0 )
-                                               continue;
+                                       /* try exact match */
+                                       if ( b->a_peername_style == ACL_STYLE_BASE ) {
+                                               if ( ber_bvstrcasecmp( &b->a_peername_pat, &op->o_conn->c_peer_name ) != 0 ) {
+                                                       continue;
+                                               }
+
+                                       } else if ( b->a_peername_style == ACL_STYLE_EXPAND ) {
+                                               struct berval   bv;
+                                               char buf[ACL_BUF_SIZE];
+
+                                               bv.bv_len = sizeof( buf ) - 1;
+                                               bv.bv_val = buf;
+                                               string_expand( &bv, &b->a_peername_pat, e->e_ndn, matches );
+
+                                               if ( ber_bvstrcasecmp( &bv, &op->o_conn->c_peer_name ) != 0 ) {
+                                                       continue;
+                                               }
+
+                                       /* extract IP and try exact match */
+                                       } else if ( b->a_peername_style == ACL_STYLE_IP ) {
+                                               char            *port;
+                                               char            buf[] = "255.255.255.255";
+                                               struct berval   ip;
+                                               unsigned long   addr;
+                                               int             port_number = -1;
+                                               
+                                               if ( strncasecmp( op->o_conn->c_peer_name.bv_val, 
+                                                                       aci_bv_ip_eq.bv_val, aci_bv_ip_eq.bv_len ) != 0 ) 
+                                                       continue;
+
+                                               ip.bv_val = op->o_conn->c_peer_name.bv_val + aci_bv_ip_eq.bv_len;
+                                               ip.bv_len = op->o_conn->c_peer_name.bv_len - aci_bv_ip_eq.bv_len;
+
+                                               port = strrchr( ip.bv_val, ':' );
+                                               if ( port ) {
+                                                       char    *next;
+                                                       
+                                                       ip.bv_len = port - ip.bv_val;
+                                                       ++port;
+                                                       port_number = strtol( port, &next, 10 );
+                                                       if ( next[0] != '\0' )
+                                                               continue;
+                                               }
+                                               
+                                               /* the port check can be anticipated here */
+                                               if ( b->a_peername_port != -1 && port_number != b->a_peername_port )
+                                                       continue;
+                                               
+                                               /* address longer than expected? */
+                                               if ( ip.bv_len >= sizeof(buf) )
+                                                       continue;
+
+                                               AC_MEMCPY( buf, ip.bv_val, ip.bv_len );
+                                               buf[ ip.bv_len ] = '\0';
+
+                                               addr = inet_addr( buf );
+
+                                               /* unable to convert? */
+                                               if ( addr == (unsigned long)(-1) )
+                                                       continue;
+
+                                               if ( (addr & b->a_peername_mask) != b->a_peername_addr )
+                                                       continue;
+
+#ifdef LDAP_PF_LOCAL
+                                       /* extract path and try exact match */
+                                       } else if ( b->a_peername_style == ACL_STYLE_PATH ) {
+                                               struct berval path;
+                                               
+                                               if ( strncmp( op->o_conn->c_peer_name.bv_val,
+                                                                       aci_bv_path_eq.bv_val, aci_bv_path_eq.bv_len ) != 0 )
+                                                       continue;
+
+                                               path.bv_val = op->o_conn->c_peer_name.bv_val + aci_bv_path_eq.bv_len;
+                                               path.bv_len = op->o_conn->c_peer_name.bv_len - aci_bv_path_eq.bv_len;
+
+                                               if ( ber_bvcmp( &b->a_peername_pat, &path ) != 0 )
+                                                       continue;
+
+#endif /* LDAP_PF_LOCAL */
+
+                                       /* exact match (very unlikely...) */
+                                       } else if ( ber_bvcmp( &op->o_conn->c_peer_name, &b->a_peername_pat ) != 0 ) {
+                                                       continue;
+                                       }
                                }
                        }
                }
@@ -1011,6 +1101,19 @@ dn_match_cleanup:;
                                        {
                                                continue;
                                        }
+
+                               } else if ( b->a_sockname_style == ACL_STYLE_EXPAND ) {
+                                       struct berval   bv;
+                                       char buf[ACL_BUF_SIZE];
+
+                                       bv.bv_len = sizeof( buf ) - 1;
+                                       bv.bv_val = buf;
+                                       string_expand( &bv, &b->a_sockname_pat, e->e_ndn, matches );
+
+                                       if ( ber_bvstrcasecmp( &bv, &op->o_conn->c_sock_name ) != 0 ) {
+                                               continue;
+                                       }
+
                                } else {
                                        if ( ber_bvstrcasecmp( &b->a_sockname_pat, &op->o_conn->c_sock_name ) != 0 )
                                                continue;
@@ -1116,7 +1219,7 @@ dn_match_cleanup:;
                         * the values in the attribute group
                         */
                        /* see if asker is listed in dnattr */
-                       if ( b->a_group_style == ACL_STYLE_REGEX ) {
+                       if ( b->a_group_style == ACL_STYLE_EXPAND ) {
                                char buf[ACL_BUF_SIZE];
                                bv.bv_len = sizeof(buf) - 1;
                                bv.bv_val = buf; 
index 3eb78ea954eb9b6110168468de5b23ddf311f810..61dda94b37ae62207041095f3b78e03cd26ec6a3 100644 (file)
 #include "lber_pvt.h"
 #include "lutil.h"
 
-static char *style_strings[] = { "regex",
-       "base", "one", "subtree", "children", NULL };
+static char *style_strings[] = {
+       "regex",
+       "expand",
+       "base",
+       "one",
+       "subtree",
+       "children",
+       "attrof",
+       "ip",
+       "path",
+       NULL
+};
 
 static void            split(char *line, int splitchar, char **left, char **right);
 static void            access_append(Access **l, Access *a);
@@ -418,6 +428,20 @@ parse_acl(
                                } else if ( strcasecmp( style, "regex" ) == 0 ) {
                                        sty = ACL_STYLE_REGEX;
 
+                               } else if ( strcasecmp( style, "expand" ) == 0 ) {
+                                       sty = ACL_STYLE_EXPAND;
+
+                               } else if ( strcasecmp( style, "ip" ) == 0 ) {
+                                       sty = ACL_STYLE_IP;
+
+                               } else if ( strcasecmp( style, "path" ) == 0 ) {
+                                       sty = ACL_STYLE_PATH;
+#ifndef LDAP_PF_LOCAL
+                                       fprintf( stderr, "%s: line %d: "
+                                               "path style modifier is useless without local\n",
+                                               fname, lineno );
+#endif /* LDAP_PF_LOCAL */
+
                                } else {
                                        fprintf( stderr,
                                                "%s: line %d: unknown style \"%s\" in by clause\n",
@@ -428,9 +452,41 @@ parse_acl(
                                if ( style_modifier &&
                                        strcasecmp( style_modifier, "expand" ) == 0 )
                                {
-                                       expand = 1;
+                                       switch ( sty ) {
+                                       case ACL_STYLE_REGEX:
+                                               fprintf( stderr, "%s: line %d: "
+                                                       "\"regex\" style implies "
+                                                       "\"expand\" modifier (ignored)\n",
+                                                       fname, lineno );
+                                               break;
+
+                                       case ACL_STYLE_EXPAND:
+                                               fprintf( stderr, "%s: line %d: "
+                                                       "\"expand\" style used "
+                                                       "in conjunction with "
+                                                       "\"expand\" modifier (ignored)\n",
+                                                       fname, lineno );
+                                               break;
+
+                                       default:
+                                               /* we'll see later if it's pertinent */
+                                               expand = 1;
+                                               break;
+                                       }
                                }
 
+                               /* expand in <who> needs regex in <what> */
+                               if ( ( sty == ACL_STYLE_EXPAND || expand )
+                                               && a->acl_dn_style != ACL_STYLE_REGEX )
+                               {
+                                       fprintf( stderr, "%s: line %d: "
+                                               "\"expand\" style or modifier used "
+                                               "in conjunction with "
+                                               "a non-regex <what> clause\n",
+                                               fname, lineno );
+                               }
+
+
                                if ( strcasecmp( argv[i], "*" ) == 0 ) {
                                        bv.bv_val = ch_strdup( "*" );
                                        bv.bv_len = 1;
@@ -588,10 +644,27 @@ parse_acl(
                                        char *name = NULL;
                                        char *value = NULL;
 
-                                       if (sty != ACL_STYLE_REGEX && sty != ACL_STYLE_BASE) {
+                                       switch ( sty ) {
+                                       case ACL_STYLE_REGEX:
+                                               /* legacy, tolerated */
+                                               fprintf( stderr, "%s: line %d: "
+                                                       "deprecated group style \"regex\"; "
+                                                       "use \"expand\" instead\n",
+                                                       fname, lineno, style );
+                                               sty = ACL_STYLE_EXPAND;
+                                               break;
+
+                                       case ACL_STYLE_BASE:
+                                               /* legal, traditional */
+                                       case ACL_STYLE_EXPAND:
+                                               /* legal, substring expansion; supersedes regex */
+                                               break;
+
+                                       default:
+                                               /* unknown */
                                                fprintf( stderr, "%s: line %d: "
                                                        "inappropriate style \"%s\" in by clause\n",
-                                                   fname, lineno, style );
+                                                       fname, lineno, style );
                                                acl_usage();
                                        }
 
@@ -620,7 +693,7 @@ parse_acl(
                                        }
 
                                        b->a_group_style = sty;
-                                       if (sty == ACL_STYLE_REGEX) {
+                                       if (sty == ACL_STYLE_EXPAND) {
                                                acl_regex_normalized_dn( right, &bv );
                                                if ( !ber_bvccmp( &bv, '*' ) ) {
                                                        regtest(fname, lineno, bv.bv_val);
@@ -741,7 +814,18 @@ parse_acl(
                                }
 
                                if ( strcasecmp( left, "peername" ) == 0 ) {
-                                       if (sty != ACL_STYLE_REGEX && sty != ACL_STYLE_BASE) {
+                                       switch (sty) {
+                                       case ACL_STYLE_REGEX:
+                                       case ACL_STYLE_BASE:
+                                               /* legal, traditional */
+                                       case ACL_STYLE_EXPAND:
+                                               /* cheap replacement to regex for simple expansion */
+                                       case ACL_STYLE_IP:
+                                       case ACL_STYLE_PATH:
+                                               /* legal, peername specific */
+                                               break;
+
+                                       default:
                                                fprintf( stderr, "%s: line %d: "
                                                        "inappropriate style \"%s\" in by clause\n",
                                                    fname, lineno, style );
@@ -770,14 +854,68 @@ parse_acl(
                                                        regtest(fname, lineno, bv.bv_val);
                                                }
                                                b->a_peername_pat = bv;
+
                                        } else {
                                                ber_str2bv( right, 0, 1, &b->a_peername_pat );
+
+                                               if ( sty == ACL_STYLE_IP ) {
+                                                       char            *addr = NULL,
+                                                                       *mask = NULL,
+                                                                       *port = NULL;
+
+                                                       split( right, '{', &addr, &port );
+                                                       split( addr, '%', &addr, &mask );
+
+                                                       b->a_peername_addr = inet_addr( addr );
+                                                       if ( b->a_peername_addr == (unsigned long)(-1)) {
+                                                               /* illegal address */
+                                                               fprintf( stderr, "%s: line %d: "
+                                                                       "illegal peername address \"%s\".\n",
+                                                                       fname, lineno, addr );
+                                                               acl_usage();
+                                                       }
+
+                                                       b->a_peername_mask = (unsigned long)(-1);
+                                                       if ( mask != NULL ) {
+                                                               b->a_peername_mask = inet_addr( mask );
+                                                               if ( b->a_peername_mask == (unsigned long)(-1)) {
+                                                                       /* illegal mask */
+                                                                       fprintf( stderr, "%s: line %d: "
+                                                                               "illegal peername address mask \"%s\".\n",
+                                                                               fname, lineno, mask );
+                                                                       acl_usage();
+                                                               }
+                                                       } 
+
+                                                       b->a_peername_port = -1;
+                                                       if ( port ) {
+                                                               char    *end = NULL;
+
+                                                               b->a_peername_port = strtol( port, &end, 10 );
+                                                               if ( end[ 0 ] != '}' ) {
+                                                                       /* illegal port */
+                                                                       fprintf( stderr, "%s: line %d: "
+                                                                               "illegal peername port specification \"{%s}\".\n",
+                                                                               fname, lineno, port );
+                                                                       acl_usage();
+                                                               }
+                                                       }
+                                               }
                                        }
                                        continue;
                                }
 
                                if ( strcasecmp( left, "sockname" ) == 0 ) {
-                                       if (sty != ACL_STYLE_REGEX && sty != ACL_STYLE_BASE) {
+                                       switch (sty) {
+                                       case ACL_STYLE_REGEX:
+                                       case ACL_STYLE_BASE:
+                                               /* legal, traditional */
+                                       case ACL_STYLE_EXPAND:
+                                               /* cheap replacement to regex for simple expansion */
+                                               break;
+
+                                       default:
+                                               /* unknown */
                                                fprintf( stderr, "%s: line %d: "
                                                        "inappropriate style \"%s\" in by clause\n",
                                                    fname, lineno, style );
@@ -817,9 +955,23 @@ parse_acl(
                                        case ACL_STYLE_REGEX:
                                        case ACL_STYLE_BASE:
                                        case ACL_STYLE_SUBTREE:
+                                               /* legal, traditional */
+                                               break;
+
+                                       case ACL_STYLE_EXPAND:
+                                               /* tolerated: means exact,expand */
+                                               if ( expand ) {
+                                                       fprintf( stderr,
+                                                               "%s: line %d: "
+                                                               "\"expand\" modifier with \"expand\" style\n",
+                                                               fname, lineno );
+                                               }
+                                               sty = ACL_STYLE_BASE;
+                                               expand = 1;
                                                break;
 
                                        default:
+                                               /* unknown */
                                                fprintf( stderr,
                                                        "%s: line %d: inappropriate style \"%s\" in by clause\n",
                                                    fname, lineno, style );
@@ -855,9 +1007,18 @@ parse_acl(
                                }
 
                                if ( strcasecmp( left, "sockurl" ) == 0 ) {
-                                       if (sty != ACL_STYLE_REGEX && sty != ACL_STYLE_BASE) {
-                                               fprintf( stderr,
-                                                       "%s: line %d: inappropriate style \"%s\" in by clause\n",
+                                       switch (sty) {
+                                       case ACL_STYLE_REGEX:
+                                       case ACL_STYLE_BASE:
+                                               /* legal, traditional */
+                                       case ACL_STYLE_EXPAND:
+                                               /* cheap replacement to regex for simple expansion */
+                                               break;
+
+                                       default:
+                                               /* unknown */
+                                               fprintf( stderr, "%s: line %d: "
+                                                       "inappropriate style \"%s\" in by clause\n",
                                                    fname, lineno, style );
                                                acl_usage();
                                        }
@@ -1389,14 +1550,16 @@ acl_usage( void )
                "<who> ::= [ * | anonymous | users | self | dn[.<dnstyle>]=<DN> ]\n"
                        "\t[dnattr=<attrname>]\n"
                        "\t[group[/<objectclass>[/<attrname>]][.<style>]=<group>]\n"
-                       "\t[peername[.<style>]=<peer>] [sockname[.<style>]=<name>]\n",
-                       "\t[domain[.<style>]=<domain>] [sockurl[.<style>]=<url>]\n"
+                       "\t[peername[.<peernamestyle>]=<peer>] [sockname[.<style>]=<name>]\n",
+                       "\t[domain[.<domainstyle>]=<domain>] [sockurl[.<style>]=<url>]\n"
 #ifdef SLAPD_ACI_ENABLED
                        "\t[aci=<attrname>]\n"
 #endif
                        "\t[ssf=<n>] [transport_ssf=<n>] [tls_ssf=<n>] [sasl_ssf=<n>]\n"
-               "<dnstyle> ::= base | exact | one | subtree | children | regex\n"
+               "<dnstyle> ::= base | exact | one(level) | sub(tree) | children | regex\n"
                "<style> ::= regex | base | exact\n"
+               "<peernamestyle> ::= regex | exact | ip | path\n"
+               "<domainstyle> ::= regex | base | exact | sub(tree)\n"
                "<access> ::= [self]{<level>|<priv>}\n"
                "<level> ::= none | auth | compare | search | read | write\n"
                "<priv> ::= {=|+|-}{w|r|s|c|x|0}+\n"
index 05cea9214a4beb44d2f993cb9079a21f05822918..3a45907c4294a8651ec269690fe80b27f1016e71 100644 (file)
@@ -136,8 +136,6 @@ dn2entry_retry:
 #endif
 
                rs->sr_err = LDAP_INVALID_CREDENTIALS;
-               send_ldap_result( op, rs );
-
                goto done;
        }
 #endif
@@ -152,8 +150,8 @@ dn2entry_retry:
                        0, 0 );
 #endif
 
-               send_ldap_error( op, rs, LDAP_ALIAS_PROBLEM, "entry is alias");
-
+               rs->sr_err = LDAP_ALIAS_PROBLEM;
+               rs->sr_text = "entry is alias";
                goto done;
        }
 #endif
@@ -172,16 +170,9 @@ dn2entry_retry:
 
                if( rs->sr_ref != NULL ) {
                        rs->sr_err = LDAP_REFERRAL;
-                       rs->sr_matched = e->e_name.bv_val;
-                       send_ldap_result( op, rs );
-                       ber_bvarray_free( rs->sr_ref );
-                       rs->sr_ref = NULL;
-                       rs->sr_matched = NULL;
                } else {
                        rs->sr_err = LDAP_INVALID_CREDENTIALS;
-                       send_ldap_result( op, rs );
                }
-
                goto done;
        }
 
@@ -191,19 +182,16 @@ dn2entry_retry:
                        password, NULL, ACL_AUTH, NULL );
                if ( ! rs->sr_err ) {
                        rs->sr_err = LDAP_INSUFFICIENT_ACCESS;
-                       send_ldap_result( op, rs );
                        goto done;
                }
 
                if ( (a = attr_find( e->e_attrs, password )) == NULL ) {
                        rs->sr_err = LDAP_INAPPROPRIATE_AUTH;
-                       send_ldap_result( op, rs );
                        goto done;
                }
 
                if ( slap_passwd_check( op->o_conn, a, &op->oq_bind.rb_cred, &rs->sr_text ) != 0 ) {
                        rs->sr_err = LDAP_INVALID_CREDENTIALS;
-                       send_ldap_result( op, rs );
                        goto done;
                }
 
@@ -214,7 +202,6 @@ dn2entry_retry:
        case LDAP_AUTH_KRBV41:
                if ( krbv4_ldap_auth( op->o_bd, &op->oq_bind.rb_cred, &ad ) != LDAP_SUCCESS ) {
                        rs->sr_err = LDAP_INVALID_CREDENTIALS,
-                       send_ldap_result( op );
                        goto done;
                }
 
@@ -222,7 +209,6 @@ dn2entry_retry:
                        krbattr, NULL, ACL_AUTH, NULL );
                if ( ! rs->sr_err ) {
                        rs->sr_err = LDAP_INSUFFICIENT_ACCESS,
-                       send_ldap_result( op );
                        goto done;
                }
 
@@ -238,7 +224,6 @@ dn2entry_retry:
                                break;
                        }
                        rs->sr_err = LDAP_INAPPROPRIATE_AUTH,
-                       send_ldap_result( op );
                        goto done;
 
                } else {        /* look for krbname match */
@@ -246,7 +231,6 @@ dn2entry_retry:
 
                        if ( value_find( a->a_desc, a->a_vals, &krbval ) != 0 ) {
                                rs->sr_err = LDAP_INVALID_CREDENTIALS;
-                               send_ldap_result( op );
                                goto done;
                        }
                }
@@ -254,15 +238,14 @@ dn2entry_retry:
                break;
 
        case LDAP_AUTH_KRBV42:
-               send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
-                       "Kerberos bind step 2 not supported" );
+               rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
+               rs->sr_text = "Kerberos bind step 2 not supported";
                goto done;
 #endif
 
        default:
-               send_ldap_error( op, rs, LDAP_STRONG_AUTH_NOT_SUPPORTED,
-                       "authentication method not supported" );
-               goto done;
+               rs->sr_err = LDAP_STRONG_AUTH_NOT_SUPPORTED;
+               rs->sr_text = "authentication method not supported";
        }
 
 done:
@@ -273,6 +256,13 @@ done:
 
        LOCK_ID_FREE(bdb->bi_dbenv, locker);
 
+       if ( rs->sr_err ) {
+               send_ldap_result( op, rs );
+               if ( rs->sr_ref ) {
+                       ber_bvarray_free( rs->sr_ref );
+                       rs->sr_ref = NULL;
+               }
+       }
        /* front end will send result on success (rs->sr_err==0) */
        return rs->sr_err;
 }
index 5ecae449778deeb0684e3cbb8c3b60b00ed4e9bf..d6a29083d641719cecf2c567ee33c91c6de4f58e 100644 (file)
@@ -59,7 +59,7 @@ bdb_idl_entry_cmp( const void *v_idl1, const void *v_idl2 )
        const bdb_idl_cache_entry_t *idl1 = v_idl1, *idl2 = v_idl2;
        int rc;
 
-       if ((rc = idl1->db - idl2->db )) return rc;
+       if ((rc = SLAP_PTRCMP( idl1->db, idl2->db ))) return rc;
        if ((rc = idl1->kstr.bv_len - idl2->kstr.bv_len )) return rc;
        return ( memcmp ( idl1->kstr.bv_val, idl2->kstr.bv_val , idl1->kstr.bv_len ) );
 }
index ca4b755e2cb26cc30123d2b5d883c2acd3336cc2..b63b953e59dc48ed31245d82cdd05661759aa80e 100644 (file)
@@ -399,8 +399,6 @@ bdb_do_search( Operation *op, SlapReply *rs, Operation *sop,
        int             entry_sync_state = -1;
        AttributeName   null_attr;
        int             no_sync_state_change = 0;
-       struct slap_limits_set *limit = NULL;
-       int isroot = 0;
 
        u_int32_t       locker = 0;
        DB_LOCK         lock;
@@ -651,82 +649,8 @@ dn2entry_retry:
                return 1;
        }
 
-       /* if not root, get appropriate limits */
-       if ( be_isroot( op->o_bd, &sop->o_ndn ) ) {
-               isroot = 1;
-       } else {
-               ( void ) get_limits( op, &sop->o_ndn, &limit );
-       }
-
-       /* The time/size limits come first because they require very little
-        * effort, so there's no chance the candidates are selected and then 
-        * the request is not honored only because of time/size constraints
-        */
-
-       /* if no time limit requested, use soft limit (unless root!) */
-       if ( isroot ) {
-               if ( sop->oq_search.rs_tlimit == 0 ) {
-                       sop->oq_search.rs_tlimit = -1;  /* allow root to set no limit */
-               }
-
-               if ( sop->oq_search.rs_slimit == 0 ) {
-                       sop->oq_search.rs_slimit = -1;
-               }
-
-       } else {
-               /* if no limit is required, use soft limit */
-               if ( sop->oq_search.rs_tlimit <= 0 ) {
-                       sop->oq_search.rs_tlimit = limit->lms_t_soft;
-
-               /* if requested limit higher than hard limit, abort */
-               } else if ( sop->oq_search.rs_tlimit > limit->lms_t_hard ) {
-                       /* no hard limit means use soft instead */
-                       if ( limit->lms_t_hard == 0
-                                       && limit->lms_t_soft > -1
-                                       && sop->oq_search.rs_tlimit > limit->lms_t_soft ) {
-                               sop->oq_search.rs_tlimit = limit->lms_t_soft;
-
-                       /* positive hard limit means abort */
-                       } else if ( limit->lms_t_hard > 0 ) {
-                               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                               send_ldap_result( sop, rs );
-                               rs->sr_err = LDAP_SUCCESS;
-                               goto done;
-                       }
-               
-                       /* negative hard limit means no limit */
-               }
-               
-               /* if no limit is required, use soft limit */
-               if ( sop->oq_search.rs_slimit <= 0 ) {
-                       if ( get_pagedresults(sop) && limit->lms_s_pr != 0 ) {
-                               sop->oq_search.rs_slimit = limit->lms_s_pr;
-                       } else {
-                               sop->oq_search.rs_slimit = limit->lms_s_soft;
-                       }
-
-               /* if requested limit higher than hard limit, abort */
-               } else if ( sop->oq_search.rs_slimit > limit->lms_s_hard ) {
-                       /* no hard limit means use soft instead */
-                       if ( limit->lms_s_hard == 0
-                                       && limit->lms_s_soft > -1
-                                       && sop->oq_search.rs_slimit > limit->lms_s_soft ) {
-                               sop->oq_search.rs_slimit = limit->lms_s_soft;
-
-                       /* positive hard limit means abort */
-                       } else if ( limit->lms_s_hard > 0 ) {
-                               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                               send_ldap_result( sop, rs );
-                               rs->sr_err = LDAP_SUCCESS;      
-                               goto done;
-                       }
-                       
-                       /* negative hard limit means no limit */
-               }
-       }
-
        /* compute it anyway; root does not use it */
-       stoptime = op->o_time + sop->oq_search.rs_tlimit;
+       stoptime = op->o_time + sop->ors_tlimit;
 
        /* need normalized dn below */
        ber_dupbv( &realbase, &e->e_nname );
@@ -813,16 +737,18 @@ dn2entry_retry:
        }
 
        /* if not root and candidates exceed to-be-checked entries, abort */
-       if ( !isroot && limit->lms_s_unchecked != -1 ) {
-               if ( BDB_IDL_N(candidates) > (unsigned) limit->lms_s_unchecked ) {
-                       rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                       send_ldap_result( sop, rs );
-                       rs->sr_err = LDAP_SUCCESS;
-                       goto done;
-               }
+       if ( sop->ors_limit     /* isroot == TRUE */
+                       && sop->ors_limit->lms_s_unchecked != -1
+                       && BDB_IDL_N(candidates) > (unsigned) sop->ors_limit->lms_s_unchecked )
+       {
+               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
+               send_ldap_result( sop, rs );
+               rs->sr_err = LDAP_SUCCESS;
+               goto done;
        }
 
-       if ( isroot || !limit->lms_s_pr_hide ) {
+       if ( sop->ors_limit == NULL     /* isroot == FALSE */
+                       || !sop->ors_limit->lms_s_pr_hide ) {
                tentries = BDB_IDL_N(candidates);
        }
 
@@ -947,7 +873,7 @@ loop_begin:
                }
 
                /* check time limit */
-               if ( sop->oq_search.rs_tlimit != -1 && slap_get_time() > stoptime ) {
+               if ( sop->ors_tlimit != -1 && slap_get_time() > stoptime ) {
                        rs->sr_err = LDAP_TIMELIMIT_EXCEEDED;
                        rs->sr_ref = rs->sr_v2ref;
                        send_ldap_result( sop, rs );
@@ -1177,7 +1103,7 @@ id2entry_retry:
 
                if ( rs->sr_err == LDAP_COMPARE_TRUE ) {
                        /* check size limit */
-            if ( --sop->oq_search.rs_slimit == -1 &&
+            if ( --sop->ors_slimit == -1 &&
                                sop->o_sync_slog_size == -1 )
                        {
                                if (!IS_PSEARCH) {
index 4f521b2ccf3b3b78ab46d9658cc43f606bda21b0..226866431c33e1012c903aa968d3bcf77b7963d0 100644 (file)
@@ -218,6 +218,7 @@ static int bdb_tool_next_id(
                        dnParent( &dn, &pdn );
                        e->e_nname = pdn;
                        rc = bdb_tool_next_id( op, tid, e, text, 1 );
+                       e->e_nname = dn;
                        if ( rc ) {
                                return rc;
                        }
@@ -236,7 +237,6 @@ static int bdb_tool_next_id(
 #endif
                        return rc;
                }
-               e->e_nname = dn;
                rc = bdb_dn2id_add( op, tid, ei, e );
                if ( rc ) {
                        snprintf( text->bv_val, text->bv_len, 
@@ -252,10 +252,10 @@ static int bdb_tool_next_id(
                } else if ( hole ) {
                        if ( nholes == nhmax - 1 ) {
                                if ( holes == hbuf ) {
-                                       holes = ch_malloc( nhmax * sizeof(ID) * 2 );
+                                       holes = ch_malloc( nhmax * sizeof(dn_id) * 2 );
                                        AC_MEMCPY( holes, hbuf, sizeof(hbuf) );
                                } else {
-                                       holes = ch_realloc( holes, nhmax * sizeof(ID) * 2 );
+                                       holes = ch_realloc( holes, nhmax * sizeof(dn_id) * 2 );
                                }
                                nhmax *= 2;
                        }
index adf80638185f9d177f7e89177f9877160324cd27..a6d3d1fa3aec04bcc96b89f45ad9870898267b88 100644 (file)
@@ -69,7 +69,7 @@ ldap_back_add(
 #ifdef ENABLE_REWRITE
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "addDn";
+       dc.ctx = "addDN";
 #else
        dc.tofrom = 1;
        dc.normalized = 0;
@@ -87,7 +87,7 @@ ldap_back_add(
        attrs = (LDAPMod **)ch_malloc(sizeof(LDAPMod *)*i);
 
 #ifdef ENABLE_REWRITE
-       dc.ctx = "addDnAttr";
+       dc.ctx = "addAttrDN";
 #endif
 
        isupdate = be_isupdate( op->o_bd, &op->o_ndn );
index cfecc0362f26c71747460936b1696b54065b7c02..29bc8b24ab2c511f017d13642ad122b37c846efc 100644 (file)
@@ -62,7 +62,7 @@ ldap_back_bind(
 #ifdef ENABLE_REWRITE
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "bindDn";
+       dc.ctx = "bindDN";
 #else
        dc.tofrom = 1;
        dc.normalized = 0;
@@ -303,7 +303,7 @@ ldap_back_getconn(Operation *op, SlapReply *rs)
 #ifdef ENABLE_REWRITE
                                dc.conn = op->o_conn;
                                dc.rs = rs;
-                               dc.ctx = "bindDn";
+                               dc.ctx = "bindDN";
 #else
                                dc.tofrom = 1;
                                dc.normalized = 0;
@@ -532,7 +532,7 @@ ldap_back_op_result(struct ldapconn *lc, Operation *op, SlapReply *rs,
 #ifdef ENABLE_REWRITE
                        dc.conn = op->o_conn;
                        dc.rs = rs;
-                       dc.ctx = "matchedDn";
+                       dc.ctx = "matchedDN";
 #else
                        dc.tofrom = 0;
                        dc.normalized = 0;
index f1ee000e27c009c6de2704ce203e782aef320393..8af11742f5d3ccdb5642964ccc4953ab0761376a 100644 (file)
@@ -60,12 +60,12 @@ ldap_back_compare(
 #ifdef ENABLE_REWRITE
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "compareDn";
+       dc.ctx = "compareDN";
 #else
        dc.tofrom = 1;
        dc.normalized = 0;
 #endif
-       if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
+       if ( ldap_back_dn_massage( &dc, &op->o_req_ndn, &mdn ) ) {
                send_ldap_result( op, rs );
                return -1;
        }
@@ -124,7 +124,7 @@ cleanup:
        }
 #endif /* LDAP_BACK_PROXY_AUTHZ */
        
-       if ( mdn.bv_val != op->o_req_dn.bv_val ) {
+       if ( mdn.bv_val != op->o_req_ndn.bv_val ) {
                free( mdn.bv_val );
        }
        if ( freeval ) {
index ab35c0cb5d257ccd58bf67e0b1bc3fb81b488530..5baef7722d7a1b77bbeb7730d1fb2929af90f900 100644 (file)
@@ -586,96 +586,9 @@ suffix_massage_config(
        ch_free( rargv[ 1 ] );
        ch_free( rargv[ 2 ] );
 
-#if 0
-       /*
-        * FIXME: this is no longer required since now we map filters
-        * based on the parsed filter structure, so we can deal directly
-        * with attribute types and values.  The rewriteContext 
-        * "searchFilter" now refers to the value of attrbutes
-        * with DN syntax.
-        */
-
-       /*
-        * the filter should be rewritten as
-        * 
-        * rewriteRule
-        *      "(.*)member=([^)]+),o=Foo Bar,[ ]?c=US(.*)"
-        *      "%1member=%2,dc=example,dc=com%3"
-        *
-        * where "o=Foo Bar, c=US" is the virtual naming context,
-        * and "dc=example, dc=com" is the real naming context
-        */
-       rargv[ 0 ] = "rewriteContext";
-       rargv[ 1 ] = "searchFilter";
-       rargv[ 2 ] = NULL;
-       rewrite_parse( info, "<suffix massage>", ++line, 2, rargv );
-
-#if 1 /* rewrite filters */
-       {
-               /*
-                * Note: this is far more optimistic than desirable:
-                * for any AVA value ending with the virtual naming
-                * context the terminal part will be replaced by the
-                * real naming context; a better solution would be to
-                * walk the filter looking for DN-valued attributes,
-                * and only rewrite those that require rewriting
-                */
-               char    vbuf_[BUFSIZ], *vbuf = vbuf_,
-                       rbuf_[BUFSIZ], *rbuf = rbuf_;
-               int     len;
-
-               len = snprintf( vbuf, sizeof( vbuf_ ), 
-                               "(.*)%s\\)(.*)", nvnc->bv_val );
-               if ( len == -1 ) {
-                       /* 
-                        * traditional behavior: snprintf returns -1 
-                        * if buffer is insufficient
-                        */
-                       return -1;
-
-               } else if ( len >= (int)sizeof( vbuf_ ) ) {
-                       /* 
-                        * C99: snprintf returns the required size 
-                        */
-                       vbuf = ch_malloc( len + 1 );
-                       len = snprintf( vbuf, len,
-                                       "(.*)%s\\)(.*)", nvnc->bv_val );
-                       assert( len > 0 );
-               }
-
-               len = snprintf( rbuf, sizeof( rbuf_ ), "%%1%s)%%2", 
-                               nrnc->bv_val );
-               if ( len == -1 ) {
-                       return -1;
-
-               } else if ( len >= (int)sizeof( rbuf_ ) ) {
-                       rbuf = ch_malloc( len + 1 );
-                       len = snprintf( rbuf, sizeof( rbuf_ ), "%%1%s)%%2", 
-                                       nrnc->bv_val );
-                       assert( len > 0 );
-               }
-               
-               rargv[ 0 ] = "rewriteRule";
-               rargv[ 1 ] = vbuf;
-               rargv[ 2 ] = rbuf;
-               rargv[ 3 ] = ":";
-               rargv[ 4 ] = NULL;
-               rewrite_parse( info, "<suffix massage>", ++line, 4, rargv );
-
-               if ( vbuf != vbuf_ ) {
-                       ch_free( vbuf );
-               }
-
-               if ( rbuf != rbuf_ ) {
-                       ch_free( rbuf );
-               }
-       }
-#endif /* rewrite filters */
-#endif
-
 #if 0 /*  "matched" is not normalized */
        rargv[ 0 ] = "rewriteContext";
-       rargv[ 1 ] = "matchedDn";
+       rargv[ 1 ] = "matchedDN";
        rargv[ 2 ] = "alias";
        rargv[ 3 ] = "searchResult";
        rargv[ 4 ] = NULL;
index 1487870b7299430e48d29bbfec4964d3b9b3cb11..91a7b53f2c5ae92a74babad98640991c562b8801 100644 (file)
@@ -60,12 +60,12 @@ ldap_back_delete(
 #ifdef ENABLE_REWRITE
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "deleteDn";
+       dc.ctx = "deleteDN";
 #else
        dc.tofrom = 1;
        dc.normalized = 0;
 #endif
-       if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
+       if ( ldap_back_dn_massage( &dc, &op->o_req_ndn, &mdn ) ) {
                send_ldap_result( op, rs );
                return -1;
        }
@@ -93,7 +93,7 @@ cleanup:
        }
 #endif /* LDAP_BACK_PROXY_AUTHZ */
 
-       if ( mdn.bv_val != op->o_req_dn.bv_val ) {
+       if ( mdn.bv_val != op->o_req_ndn.bv_val ) {
                free( mdn.bv_val );
        }
 
index dde4c1ab2bee9f13e77a6fdf1bdd5a61a18fd1e1..4403fbaaf51dcc831385f385148284100b083002 100644 (file)
@@ -95,13 +95,11 @@ ldap_back_exop_passwd(
 {
        struct ldapinfo *li = (struct ldapinfo *) op->o_bd->be_private;
        struct ldapconn *lc;
-       struct berval id = { 0, NULL };
-       struct berval old = { 0, NULL };
-       struct berval new = { 0, NULL };
-       struct berval dn, mdn = { 0, NULL }, newpw;
+       req_pwdexop_s *qpw = &op->oq_pwdexop;
+       struct berval mdn = { 0, NULL }, newpw;
        LDAPMessage *res;
        ber_int_t msgid;
-       int rc;
+       int rc, isproxy;
        dncookie dc;
 
        lc = ldap_back_getconn(op, rs);
@@ -109,48 +107,37 @@ ldap_back_exop_passwd(
                return -1;
        }
 
-       rc = slap_passwd_parse( op->oq_extended.rs_reqdata, &id, &old, &new, &rs->sr_text );
-       if (rc != LDAP_SUCCESS)
-               return rc;
-       
-       if (id.bv_len) {
-               dn = id;
-       } else {
-               dn = op->o_dn;
-       }
+       isproxy = ber_bvcmp( &op->o_req_ndn, &op->o_ndn );
 
 #ifdef NEW_LOGGING
        LDAP_LOG ( ACL, DETAIL1, "ldap_back_exop_passwd: \"%s\"%s\"\n",
-               dn.bv_val, id.bv_len ? " (proxy)" : "", 0 );
+               op->o_req_dn.bv_val, isproxy ? " (proxy)" : "", 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "ldap_back_exop_passwd: \"%s\"%s\n",
-               dn.bv_val, id.bv_len ? " (proxy)" : "", 0 );
+               op->o_req_dn.bv_val, isproxy ? " (proxy)" : "", 0 );
 #endif
 
-       if (dn.bv_len == 0) {
-               rs->sr_text = "No password is associated with the Root DSE";
-               return LDAP_UNWILLING_TO_PERFORM;
-       }
-       if (id.bv_len) {
+       if ( isproxy ) {
                dc.rwmap = &li->rwmap;
 #ifdef ENABLE_REWRITE
                dc.conn = op->o_conn;
                dc.rs = rs;
-               dc.ctx = "modifyPwd";
+               dc.ctx = "exopPasswdDN";
 #else
                dc.tofrom = 1;
                dc.normalized = 0;
 #endif
-               if ( ldap_back_dn_massage( &dc, &dn, &mdn ) ) {
+               if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
                        send_ldap_result( op, rs );
                        return -1;
                }
        }
 
-       rc = ldap_passwd(lc->ld, id.bv_len ? &mdn : NULL, old.bv_len ? &old : NULL,
-               new.bv_len ? &new : NULL, op->o_ctrls, NULL, &msgid);
+       rc = ldap_passwd(lc->ld, isproxy ? &mdn : NULL,
+               qpw->rs_old.bv_len ? &qpw->rs_old : NULL,
+               qpw->rs_new.bv_len ? &qpw->rs_new : NULL, op->o_ctrls, NULL, &msgid);
 
-       if (mdn.bv_val != dn.bv_val) {
+       if (mdn.bv_val != op->o_req_dn.bv_val) {
                free(mdn.bv_val);
        }
 
index a36c77cfe62eebacb995c80a6652a9180d533450..83d8c90234c477ed351022beabc89e98d1be7ab3 100644 (file)
@@ -118,6 +118,27 @@ ldap_back_db_init(
                ch_free( li );
                return -1;
        }
+
+       {
+               char    *rargv[3];
+
+               /*
+                * the filter rewrite as a string must be disabled
+                * by default; it can be re-enabled by adding rules;
+                * this creates an empty rewriteContext
+                */
+               rargv[ 0 ] = "rewriteContext";
+               rargv[ 1 ] = "searchFilter";
+               rargv[ 2 ] = NULL;
+               rewrite_parse( li->rwmap.rwm_rw, "<suffix massage>", 
+                               1, 2, rargv );
+
+               rargv[ 0 ] = "rewriteContext";
+               rargv[ 1 ] = "default";
+               rargv[ 2 ] = NULL;
+               rewrite_parse( li->rwmap.rwm_rw, "<suffix massage>", 
+                               1, 2, rargv );
+       }
 #endif /* ENABLE_REWRITE */
 
        ldap_pvt_thread_mutex_init( &li->conn_mutex );
index 3f38ce6b4b698d71522603572ae9aa416da5c97b..1d91a21bbab9d407490c5f08b30e5cbda3564199 100644 (file)
@@ -180,7 +180,7 @@ map_attr_value(
                dncookie fdc = *dc;
 
 #ifdef ENABLE_REWRITE
-               fdc.ctx = "searchFilter";
+               fdc.ctx = "searchFilterAttrDN";
 #endif
 
                switch ( ldap_back_dn_massage( &fdc, value, &vtmp ) ) {
@@ -214,8 +214,8 @@ map_attr_value(
        return LDAP_SUCCESS;
 }
 
-int
-ldap_back_filter_map_rewrite(
+static int
+ldap_int_back_filter_map_rewrite(
                dncookie                *dc,
                Filter                  *f,
                struct berval           *fstr,
@@ -390,7 +390,7 @@ ldap_back_filter_map_rewrite(
                for ( p = f->f_list; p != NULL; p = p->f_next ) {
                        len = fstr->bv_len;
 
-                       rc = ldap_back_filter_map_rewrite( dc, p, &vtmp, remap );
+                       rc = ldap_int_back_filter_map_rewrite( dc, p, &vtmp, remap );
                        if ( rc != LDAP_SUCCESS ) {
                                return rc;
                        }
@@ -458,6 +458,73 @@ ldap_back_filter_map_rewrite(
        return LDAP_SUCCESS;
 }
 
+int
+ldap_back_filter_map_rewrite(
+               dncookie                *dc,
+               Filter                  *f,
+               struct berval           *fstr,
+               int                     remap )
+{
+       int             rc;
+       dncookie        fdc;
+       struct berval   ftmp;
+
+       rc = ldap_int_back_filter_map_rewrite( dc, f, fstr, remap );
+
+#ifdef ENABLE_REWRITE
+       if ( rc != LDAP_SUCCESS ) {
+               return rc;
+       }
+
+       fdc = *dc;
+       ftmp = *fstr;
+
+       fdc.ctx = "searchFilter";
+
+       switch ( rewrite_session( fdc.rwmap->rwm_rw, fdc.ctx, 
+                               ( ftmp.bv_len ? ftmp.bv_val : "" ), 
+                               fdc.conn, &fstr->bv_val )) {
+       case REWRITE_REGEXEC_OK:
+               if ( fstr->bv_val != NULL ) {
+                       fstr->bv_len = strlen( fstr->bv_val );
+                       free( ftmp.bv_val );
+               } else {
+                       *fstr = ftmp;
+               }
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] %s: \"%s\" -> \"%s\"\n",
+                       dc->ctx, ftmp.bv_val, fstr->bv_val );           
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS,
+                       "[rw] %s: \"%s\" -> \"%s\"\n",
+                       dc->ctx, ftmp.bv_val, fstr->bv_val );           
+#endif /* !NEW_LOGGING */
+               rc = LDAP_SUCCESS;
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               if ( fdc.rs ) {
+                       fdc.rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
+                       fdc.rs->sr_text = "Operation not allowed";
+               }
+               rc = LDAP_UNWILLING_TO_PERFORM;
+               break;
+               
+       case REWRITE_REGEXEC_ERR:
+               if ( fdc.rs ) {
+                       fdc.rs->sr_err = LDAP_OTHER;
+                       fdc.rs->sr_text = "Rewrite error";
+               }
+               rc = LDAP_OTHER;
+               break;
+       }
+
+#endif /* ENABLE_REWRITE */
+       return rc;
+}
+
 /*
  * I don't like this much, but we need two different
  * functions because different heap managers may be
index a11321b5710b15ee504c01f15c523f720b33a680..6da70a1536c77668915115435a7756a7b1a57e65 100644 (file)
@@ -63,12 +63,12 @@ ldap_back_modify(
 #ifdef ENABLE_REWRITE
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "modifyDn";
+       dc.ctx = "modifyDN";
 #else
        dc.tofrom = 1;
        dc.normalized = 0;
 #endif
-       if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
+       if ( ldap_back_dn_massage( &dc, &op->o_req_ndn, &mdn ) ) {
                send_ldap_result( op, rs );
                return -1;
        }
@@ -182,7 +182,7 @@ cleanup:;
        }
 #endif /* LDAP_BACK_PROXY_AUTHZ */
 
-       if ( mdn.bv_val != op->o_req_dn.bv_val ) {
+       if ( mdn.bv_val != op->o_req_ndn.bv_val ) {
                free( mdn.bv_val );
        }
        for (i=0; modv[i]; i++) {
index 6929c44039942f724fccb69cd9bcc2b345a5a404..a479131c86034cdca21a9890a27bfd22070b3e90 100644 (file)
@@ -68,7 +68,7 @@ ldap_back_modrdn(
                 * Rewrite the new superior, if defined and required
                 */
 #ifdef ENABLE_REWRITE
-               dc.ctx = "newSuperiorDn";
+               dc.ctx = "newSuperiorDN";
 #endif
                if ( ldap_back_dn_massage( &dc, op->orr_newSup,
                        &mnewSuperior ) ) {
@@ -81,9 +81,9 @@ ldap_back_modrdn(
         * Rewrite the modrdn dn, if required
         */
 #ifdef ENABLE_REWRITE
-       dc.ctx = "modrDn";
+       dc.ctx = "modrDN";
 #endif
-       if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
+       if ( ldap_back_dn_massage( &dc, &op->o_req_ndn, &mdn ) ) {
                send_ldap_result( op, rs );
                return -1;
        }
@@ -113,7 +113,7 @@ cleanup:
        }
 #endif /* LDAP_BACK_PROXY_AUTHZ */
 
-       if ( mdn.bv_val != op->o_req_dn.bv_val ) {
+       if ( mdn.bv_val != op->o_req_ndn.bv_val ) {
                free( mdn.bv_val );
        }
        if ( mnewSuperior.bv_val != NULL
index a3aa7a2cc3bf5f750ca764d1fff35018f2302314..986e4c5c7064ba6ad32493945458a76de22a939f 100644 (file)
@@ -58,8 +58,6 @@ ldap_back_search(
        char **mapped_attrs = NULL;
        struct berval mbase;
        struct berval mfilter = { 0, NULL };
-       struct slap_limits_set *limit = NULL;
-       int isroot = 0;
        int dontfreetext = 0;
        dncookie dc;
 #ifdef LDAP_BACK_PROXY_AUTHZ
@@ -79,56 +77,11 @@ ldap_back_search(
                return( -1 );
        }
 
-       /* if not root, get appropriate limits */
-       if ( be_isroot( op->o_bd, &op->o_ndn ) ) {
-               isroot = 1;
-       } else {
-               ( void ) get_limits( op, &op->o_ndn, &limit );
-       }
-       
-       /* if no time limit requested, rely on remote server limits */
-       /* if requested limit higher than hard limit, abort */
-       if ( !isroot && op->oq_search.rs_tlimit > limit->lms_t_hard ) {
-               /* no hard limit means use soft instead */
-               if ( limit->lms_t_hard == 0
-                               && limit->lms_t_soft > -1
-                               && op->oq_search.rs_tlimit > limit->lms_t_soft ) {
-                       op->oq_search.rs_tlimit = limit->lms_t_soft;
-                       
-               /* positive hard limit means abort */
-               } else if ( limit->lms_t_hard > 0 ) {
-                       rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                       rc = 0;
-                       goto finish;
-               }
-               
-               /* negative hard limit means no limit */
-       }
-       
-       /* if no size limit requested, rely on remote server limits */
-       /* if requested limit higher than hard limit, abort */
-       if ( !isroot && op->oq_search.rs_slimit > limit->lms_s_hard ) {
-               /* no hard limit means use soft instead */
-               if ( limit->lms_s_hard == 0
-                               && limit->lms_s_soft > -1
-                               && op->oq_search.rs_slimit > limit->lms_s_soft ) {
-                       op->oq_search.rs_slimit = limit->lms_s_soft;
-                       
-               /* positive hard limit means abort */
-               } else if ( limit->lms_s_hard > 0 ) {
-                       rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                       rc = 0;
-                       goto finish;
-               }
-               
-               /* negative hard limit means no limit */
-       }
-
        /* should we check return values? */
-       if (op->oq_search.rs_deref != -1)
-               ldap_set_option( lc->ld, LDAP_OPT_DEREF, (void *)&op->oq_search.rs_deref);
-       if (op->oq_search.rs_tlimit != -1) {
-               tv.tv_sec = op->oq_search.rs_tlimit;
+       if (op->ors_deref != -1)
+               ldap_set_option( lc->ld, LDAP_OPT_DEREF, (void *)&op->ors_deref);
+       if (op->ors_tlimit != -1) {
+               tv.tv_sec = op->ors_tlimit;
                tv.tv_usec = 0;
        } else {
                tv.tv_sec = 0;
@@ -151,7 +104,7 @@ ldap_back_search(
                return -1;
        }
 
-       rc = ldap_back_filter_map_rewrite( &dc, op->oq_search.rs_filter,
+       rc = ldap_back_filter_map_rewrite( &dc, op->ors_filter,
                        &mfilter, BACKLDAP_MAP );
 
        switch ( rc ) {
@@ -173,7 +126,7 @@ ldap_back_search(
        }
 
        rs->sr_err = ldap_back_map_attrs( &li->rwmap.rwm_at,
-                       op->oq_search.rs_attrs,
+                       op->ors_attrs,
                        BACKLDAP_MAP, &mapped_attrs );
        if ( rs->sr_err ) {
                rc = -1;
@@ -189,15 +142,15 @@ ldap_back_search(
 #endif /* LDAP_BACK_PROXY_AUTHZ */
        
        rs->sr_err = ldap_search_ext(lc->ld, mbase.bv_val,
-                       op->oq_search.rs_scope, mfilter.bv_val,
-                       mapped_attrs, op->oq_search.rs_attrsonly,
+                       op->ors_scope, mfilter.bv_val,
+                       mapped_attrs, op->ors_attrsonly,
 #ifdef LDAP_BACK_PROXY_AUTHZ
                        ctrls,
 #else /* ! LDAP_BACK_PROXY_AUTHZ */
                        op->o_ctrls,
 #endif /* ! LDAP_BACK_PROXY_AUTHZ */
                        NULL,
-                       tv.tv_sec ? &tv : NULL, op->oq_search.rs_slimit,
+                       tv.tv_sec ? &tv : NULL, op->ors_slimit,
                        &msgid );
 
        if ( rs->sr_err != LDAP_SUCCESS ) {
@@ -233,7 +186,7 @@ fail:;
                        if ( ( rc = ldap_build_entry(op, e, &ent, &bdn,
                                                LDAP_BUILD_ENTRY_PRIVATE)) == LDAP_SUCCESS ) {
                                rs->sr_entry = &ent;
-                               rs->sr_attrs = op->oq_search.rs_attrs;
+                               rs->sr_attrs = op->ors_attrs;
                                abort = send_search_entry( op, rs );
                                while (ent.e_attrs) {
                                        Attribute *a;
@@ -322,7 +275,7 @@ fail:;
                struct berval mdn;
 
 #ifdef ENABLE_REWRITE
-               dc.ctx = "matchedDn";
+               dc.ctx = "matchedDN";
 #else
                dc.tofrom = 0;
                dc.normalized = 0;
@@ -361,7 +314,7 @@ finish:;
        if ( mapped_attrs ) {
                ch_free( mapped_attrs );
        }
-       if ( mfilter.bv_val != op->oq_search.rs_filterstr.bv_val ) {
+       if ( mfilter.bv_val != op->ors_filterstr.bv_val ) {
                ch_free( mfilter.bv_val );
        }
        if ( mbase.bv_val != op->o_req_ndn.bv_val ) {
index 2cee6844516cddb1541d74be2ee36511328276bb..2ad3bafdf8a05fa50baa1d77b46f811596e4db75 100644 (file)
@@ -42,8 +42,11 @@ ldap_back_dn_massage(
 {
        int rc = 0;
 
-       switch (rewrite_session( dc->rwmap->rwm_rw, dc->ctx, (dn->bv_len ? dn->bv_val : ""), dc->conn, 
-                               &res->bv_val )) {
+       rc = rewrite_session( dc->rwmap->rwm_rw, dc->ctx,
+                       ( dn->bv_len ? dn->bv_val : "" ), dc->conn,
+                       &res->bv_val );
+
+       switch ( rc ) {
        case REWRITE_REGEXEC_OK:
                if ( res->bv_val != NULL ) {
                        res->bv_len = strlen( res->bv_val );
@@ -52,10 +55,12 @@ ldap_back_dn_massage(
                }
 #ifdef NEW_LOGGING
                LDAP_LOG( BACK_LDAP, DETAIL1, 
-                       "[rw] %s: \"%s\" -> \"%s\"\n", dc->ctx, dn->bv_val, res->bv_val );              
+                       "[rw] %s: \"%s\" -> \"%s\"\n",
+                       dc->ctx, dn->bv_val, res->bv_val );             
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS,
-                       "[rw] %s: \"%s\" -> \"%s\"\n", dc->ctx, dn->bv_val, res->bv_val );              
+                       "[rw] %s: \"%s\" -> \"%s\"\n",
+                       dc->ctx, dn->bv_val, res->bv_val );             
 #endif /* !NEW_LOGGING */
                rc = LDAP_SUCCESS;
                break;
index 2aefc84714d57872e9f52006b78dfb1fbe9eca91..2ff93defff4c4ee198f16c4a069591fc9ba3bf8f 100644 (file)
@@ -48,11 +48,7 @@ ldbm_back_search(
        Entry   *matched = NULL;
        struct berval   realbase = { 0, NULL };
        int             manageDSAit = get_manageDSAit( op );
-       int             cscope = LDAP_SCOPE_DEFAULT;
 
-       struct slap_limits_set *limit = NULL;
-       int isroot = 0;
-               
 #ifdef NEW_LOGGING
        LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_back_search: enter\n", 0, 0, 0 );
 #else
@@ -69,15 +65,16 @@ ldbm_back_search(
                /* need normalized dn below */
                ber_dupbv( &realbase, &e->e_nname );
 
-               candidates = search_candidates( op, e, op->oq_search.rs_filter,
-                               op->oq_search.rs_scope, op->oq_search.rs_deref,
-                               manageDSAit || get_domainScope(op) );
+               candidates = search_candidates( op, e, op->ors_filter,
+                       op->ors_scope, op->ors_deref,
+                       manageDSAit || get_domainScope(op) );
 
                goto searchit;
                
-       } else if ( op->oq_search.rs_deref & LDAP_DEREF_FINDING ) {
+       } else if ( op->ors_deref & LDAP_DEREF_FINDING ) {
                /* deref dn and get entry with reader lock */
-               e = deref_dn_r( op->o_bd, &op->o_req_ndn, &rs->sr_err, &matched, &rs->sr_text );
+               e = deref_dn_r( op->o_bd, &op->o_req_ndn,
+                       &rs->sr_err, &matched, &rs->sr_text );
 
                if( rs->sr_err == LDAP_NO_SUCH_OBJECT ) rs->sr_err = LDAP_REFERRAL;
 
@@ -103,14 +100,14 @@ ldbm_back_search(
 
                        if( erefs ) {
                                rs->sr_ref = referral_rewrite( erefs, &matched_dn,
-                                       &op->o_req_dn, op->oq_search.rs_scope );
+                                       &op->o_req_dn, op->ors_scope );
 
                                ber_bvarray_free( erefs );
                        }
 
                } else {
                        rs->sr_ref = referral_rewrite( default_referral,
-                               NULL, &op->o_req_dn, op->oq_search.rs_scope );
+                               NULL, &op->o_req_dn, op->ors_scope );
                }
 
                ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
@@ -149,7 +146,7 @@ ldbm_back_search(
 
                if( erefs ) {
                        rs->sr_ref = referral_rewrite( erefs, &matched_dn,
-                               &op->o_req_dn, op->oq_search.rs_scope );
+                               &op->o_req_dn, op->ors_scope );
 
                        ber_bvarray_free( erefs );
                }
@@ -173,18 +170,15 @@ ldbm_back_search(
 
        if ( is_entry_alias( e ) ) {
                /* don't deref */
-               op->oq_search.rs_deref = LDAP_DEREF_NEVER;
+               op->ors_deref = LDAP_DEREF_NEVER;
        }
 
-       if ( op->oq_search.rs_scope == LDAP_SCOPE_BASE ) {
-               cscope = LDAP_SCOPE_BASE;
+       if ( op->ors_scope == LDAP_SCOPE_BASE ) {
                candidates = base_candidate( op->o_bd, e );
 
        } else {
-               cscope = ( op->oq_search.rs_scope != LDAP_SCOPE_SUBTREE )
-                       ? LDAP_SCOPE_BASE : LDAP_SCOPE_SUBTREE;
-               candidates = search_candidates( op, e, op->oq_search.rs_filter,
-                   op->oq_search.rs_scope, op->oq_search.rs_deref, manageDSAit );
+               candidates = search_candidates( op, e, op->ors_filter,
+                   op->ors_scope, op->ors_deref, manageDSAit );
        }
 
        /* need normalized dn below */
@@ -210,91 +204,19 @@ searchit:
                goto done;
        }
 
-       /* if not root, get appropriate limits */
-       if ( be_isroot( op->o_bd, &op->o_ndn ) )
-       {
-               /*
-                * FIXME: I'd consider this dangerous if someone
-                * uses isroot for anything but handling limits
-                */
-               isroot = 1;
-       } else {
-               ( void ) get_limits( op, &op->o_ndn, &limit );
-       }
-
        /* if candidates exceed to-be-checked entries, abort */
-       if ( !isroot && limit->lms_s_unchecked != -1 ) {
-               if ( ID_BLOCK_NIDS( candidates ) > (unsigned) limit->lms_s_unchecked ) {
-                       send_ldap_error( op, rs, LDAP_ADMINLIMIT_EXCEEDED,
-                                       NULL );
-                       rc = LDAP_SUCCESS;
-                       goto done;
-               }
+       if ( op->ors_limit      /* isroot == TRUE */
+                       && op->ors_limit->lms_s_unchecked != -1
+                       && ID_BLOCK_NIDS( candidates ) > (unsigned) op->ors_limit->lms_s_unchecked )
+       {
+               send_ldap_error( op, rs, LDAP_ADMINLIMIT_EXCEEDED, NULL );
+               rc = LDAP_SUCCESS;
+               goto done;
        }
        
-       /* if root an no specific limit is required, allow unlimited search */
-       if ( isroot ) {
-               if ( op->oq_search.rs_tlimit == 0 ) {
-                       op->oq_search.rs_tlimit = -1;
-               }
-
-               if ( op->oq_search.rs_slimit == 0 ) {
-                       op->oq_search.rs_slimit = -1;
-               }
-
-       } else {
-               /* if no limit is required, use soft limit */
-               if ( op->oq_search.rs_tlimit <= 0 ) {
-                       op->oq_search.rs_tlimit = limit->lms_t_soft;
-               
-               /* if requested limit higher than hard limit, abort */
-               } else if ( op->oq_search.rs_tlimit > limit->lms_t_hard ) {
-                       /* no hard limit means use soft instead */
-                       if ( limit->lms_t_hard == 0
-                                       && limit->lms_t_soft > -1
-                                       && op->oq_search.rs_tlimit > limit->lms_t_soft ) {
-                               op->oq_search.rs_tlimit = limit->lms_t_soft;
-                       
-                       /* positive hard limit means abort */
-                       } else if ( limit->lms_t_hard > 0 ) {
-                               send_ldap_error( op, rs,
-                                               LDAP_ADMINLIMIT_EXCEEDED,
-                                               NULL );
-                               rc = LDAP_SUCCESS; 
-                               goto done;
-                       }
-
-                       /* negative hard limit means no limit */
-               }
-
-               /* if no limit is required, use soft limit */
-               if ( op->oq_search.rs_slimit <= 0 ) {
-                       op->oq_search.rs_slimit = limit->lms_s_soft;
-
-               /* if requested limit higher than hard limit, abort */
-               } else if ( op->oq_search.rs_slimit > limit->lms_s_hard ) {
-                       /* no hard limit means use soft instead */
-                       if ( limit->lms_s_hard == 0
-                                       && limit->lms_s_soft > -1
-                                       && op->oq_search.rs_slimit > limit->lms_s_soft ) {
-                               op->oq_search.rs_slimit = limit->lms_s_soft;
-
-                       /* positive hard limit means abort */
-                       } else if ( limit->lms_s_hard > 0 ) {
-                               send_ldap_error( op, rs,
-                                               LDAP_ADMINLIMIT_EXCEEDED,
-                                               NULL );
-                               rc = LDAP_SUCCESS;
-                               goto done;
-                       }
-
-                       /* negative hard limit means no limit */
-               }
-       }
-
        /* compute it anyway; root does not use it */
-       stoptime = op->o_time + op->oq_search.rs_tlimit;
-       rs->sr_attrs = op->oq_search.rs_attrs;
+       stoptime = op->o_time + op->ors_tlimit;
+       rs->sr_attrs = op->ors_attrs;
 
        for ( id = idl_firstid( candidates, &cursor ); id != NOID;
            id = idl_nextid( candidates, &cursor ) )
@@ -309,7 +231,7 @@ searchit:
                }
 
                /* check time limit */
-               if ( op->oq_search.rs_tlimit != -1 && slap_get_time() > stoptime ) {
+               if ( op->ors_tlimit != -1 && slap_get_time() > stoptime ) {
                        rs->sr_err = LDAP_TIMELIMIT_EXCEEDED;
                        send_ldap_result( op, rs );
                        rc = LDAP_SUCCESS;
@@ -335,25 +257,27 @@ searchit:
                rs->sr_entry = e;
 
 #ifdef LDBM_SUBENTRIES
-       if ( is_entry_subentry( e ) ) {
-               if( op->oq_search.rs_scope != LDAP_SCOPE_BASE ) {
-                       if(!get_subentries_visibility( op )) {
+               if ( is_entry_subentry( e ) ) {
+                       if( op->ors_scope != LDAP_SCOPE_BASE ) {
+                               if(!get_subentries_visibility( op )) {
+                                       /* only subentries are visible */
+                                       goto loop_continue;
+                               }
+                       } else if ( get_subentries( op ) &&
+                               !get_subentries_visibility( op ))
+                       {
                                /* only subentries are visible */
                                goto loop_continue;
                        }
-               } else if ( get_subentries( op ) &&
-                       !get_subentries_visibility( op ))
-               {
+               } else if ( get_subentries_visibility( op )) {
                        /* only subentries are visible */
                        goto loop_continue;
                }
-       } else if ( get_subentries_visibility( op )) {
-               /* only subentries are visible */
-               goto loop_continue;
-       }
 #endif
 
-               if ( op->oq_search.rs_deref & LDAP_DEREF_SEARCHING && is_entry_alias( e ) ) {
+               if ( op->ors_deref & LDAP_DEREF_SEARCHING &&
+                       is_entry_alias( e ) )
+               {
                        Entry *matched;
                        int err;
                        const char *text;
@@ -371,7 +295,7 @@ searchit:
                        }
 
                        /* need to skip alias which deref into scope */
-                       if( op->oq_search.rs_scope & LDAP_SCOPE_ONELEVEL ) {
+                       if( op->ors_scope == LDAP_SCOPE_ONELEVEL ) {
                                struct berval pdn;
                                dnParent( &e->e_nname, &pdn );
                                if ( ber_bvcmp( &pdn, &realbase ) ) {
@@ -382,7 +306,8 @@ searchit:
                                /* alias is within scope */
 #ifdef NEW_LOGGING
                                LDAP_LOG( BACK_LDBM, DETAIL1,
-                                       "ldbm_search: alias \"%s\" in subtree\n", e->e_dn, 0, 0 );
+                                       "ldbm_search: alias \"%s\" in subtree\n",
+                                       e->e_dn, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "ldbm_search: alias \"%s\" in subtree\n",
@@ -398,17 +323,18 @@ searchit:
                }
 
                /*
-                * if it's a referral, add it to the list of referrals. only do
-                * this for non-base searches, and don't check the filter
-                * explicitly here since it's only a candidate anyway.
+                * If it's a referral, add it to the list of referrals.
+                * Only do this for non-base searches, and don't check
+                * the filter explicitly here since it's only a candidate
+                * anyway.
                 */
-               if ( !manageDSAit && op->oq_search.rs_scope != LDAP_SCOPE_BASE &&
+               if ( !manageDSAit && op->ors_scope != LDAP_SCOPE_BASE &&
                        is_entry_referral( e ) )
                {
                        struct berval   dn;
 
                        /* check scope */
-                       if ( !scopeok && op->oq_search.rs_scope == LDAP_SCOPE_ONELEVEL ) {
+                       if ( !scopeok && op->ors_scope == LDAP_SCOPE_ONELEVEL ) {
                                if ( !be_issuffix( op->o_bd, &e->e_nname ) ) {
                                        dnParent( &e->e_nname, &dn );
                                        scopeok = dn_match( &dn, &realbase );
@@ -416,9 +342,17 @@ searchit:
                                        scopeok = (realbase.bv_len == 0);
                                }
 
-                       } else if ( !scopeok && op->oq_search.rs_scope == LDAP_SCOPE_SUBTREE ) {
+                       } else if ( !scopeok
+                               && op->ors_scope == LDAP_SCOPE_SUBTREE )
+                       {
                                scopeok = dnIsSuffix( &e->e_nname, &realbase );
 
+                       } else if ( !scopeok
+                               && op->ors_scope == LDAP_SCOPE_SUBORDINATE )
+                       {
+                               scopeok = !dn_match( &e->e_nname, &realbase )
+                                       && dnIsSuffix( &e->e_nname, &realbase );
+
                        } else {
                                scopeok = 1;
                        }
@@ -427,9 +361,9 @@ searchit:
                                BerVarray erefs = get_entry_referrals( op, e );
                                rs->sr_ref = referral_rewrite( erefs,
                                        &e->e_name, NULL,
-                                       op->oq_search.rs_scope == LDAP_SCOPE_SUBTREE
-                                               ? LDAP_SCOPE_SUBTREE
-                                               : LDAP_SCOPE_BASE );
+                                       op->ors_scope == LDAP_SCOPE_ONELEVEL
+                                               ? LDAP_SCOPE_BASE
+                                               : LDAP_SCOPE_SUBTREE );
 
                                send_search_reference( op, rs );
 
@@ -456,13 +390,13 @@ searchit:
                }
 
                /* if it matches the filter and scope, send it */
-               result = test_filter( op, e, op->oq_search.rs_filter );
+               result = test_filter( op, e, op->ors_filter );
 
                if ( result == LDAP_COMPARE_TRUE ) {
                        struct berval   dn;
 
                        /* check scope */
-                       if ( !scopeok && op->oq_search.rs_scope == LDAP_SCOPE_ONELEVEL ) {
+                       if ( !scopeok && op->ors_scope == LDAP_SCOPE_ONELEVEL ) {
                                if ( !be_issuffix( op->o_bd, &e->e_nname ) ) {
                                        dnParent( &e->e_nname, &dn );
                                        scopeok = dn_match( &dn, &realbase );
@@ -470,16 +404,24 @@ searchit:
                                        scopeok = (realbase.bv_len == 0);
                                }
 
-                       } else if ( !scopeok && op->oq_search.rs_scope == LDAP_SCOPE_SUBTREE ) {
+                       } else if ( !scopeok &&
+                               op->ors_scope == LDAP_SCOPE_SUBTREE )
+                       {
                                scopeok = dnIsSuffix( &e->e_nname, &realbase );
 
+                       } else if ( !scopeok &&
+                               op->ors_scope == LDAP_SCOPE_SUBORDINATE )
+                       {
+                               scopeok = !dn_match( &e->e_nname, &realbase )
+                                       && dnIsSuffix( &e->e_nname, &realbase );
+
                        } else {
                                scopeok = 1;
                        }
 
                        if ( scopeok ) {
                                /* check size limit */
-                               if ( --op->oq_search.rs_slimit == -1 ) {
+                               if ( --op->ors_slimit == -1 ) {
                                        cache_return_entry_r( &li->li_cache, e );
                                        rs->sr_err = LDAP_SIZELIMIT_EXCEEDED;
                                        send_ldap_result( op, rs );
@@ -488,7 +430,6 @@ searchit:
                                }
 
                                if (e) {
-
                                        result = send_search_entry( op, rs );
 
                                        switch (result) {
@@ -502,6 +443,7 @@ searchit:
                                                goto done;
                                        }
                                }
+
                        } else {
 #ifdef NEW_LOGGING
                                LDAP_LOG( BACK_LDBM, DETAIL2,
@@ -595,8 +537,8 @@ search_candidates(
 
 #ifdef NEW_LOGGING
        LDAP_LOG( BACK_LDBM, DETAIL1,
-                  "search_candidates: base (%s) scope %d deref %d\n",
-                  e->e_ndn, scope, deref );
+               "search_candidates: base (%s) scope %d deref %d\n",
+               e->e_ndn, scope, deref );
 #else
        Debug(LDAP_DEBUG_TRACE,
                "search_candidates: base=\"%s\" s=%d d=%d\n",
@@ -631,9 +573,9 @@ search_candidates(
        f.f_next = NULL;
        f.f_choice = LDAP_FILTER_AND;
        f.f_and = &fand;
-       fand.f_choice = scope == LDAP_SCOPE_SUBTREE
-               ? SLAPD_FILTER_DN_SUBTREE
-               : SLAPD_FILTER_DN_ONE;
+       fand.f_choice = scope == LDAP_SCOPE_ONELEVEL
+               ? SLAPD_FILTER_DN_ONE
+               : SLAPD_FILTER_DN_SUBTREE;
        fand.f_dn = &e->e_nname;
        fand.f_next = xf.f_or == filter ? filter : &xf ;
 
@@ -650,6 +592,5 @@ search_candidates(
 #endif
 
        candidates = filter_candidates( op, &f );
-
        return( candidates );
 }
index fa959ce8b24cc4e21dcf5e3fc32a9555bc6dfa1d..a65a38081212ac6d18f2cd71c96d01abe9dcee44 100644 (file)
@@ -73,7 +73,7 @@ meta_back_add( Operation *op, SlapReply *rs )
        dc.rwmap = &li->targets[ candidate ]->rwmap;
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "addDn";
+       dc.ctx = "addDN";
 
        if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
                send_ldap_result( op, rs );
index 730e1b3a3b6960a72ea62ed641b8e9fe55b64994..25430df987f7a5cfddeb8543b78715c97c65abf9 100644 (file)
@@ -195,6 +195,7 @@ meta_back_do_single_bind(
        ber_int_t       msgid;
        dncookie        dc;
        struct metasingleconn   *lsc = &lc->conns[ candidate ];
+       LDAPMessage     *res;
        
        /*
         * Rewrite the bind dn if needed
@@ -202,7 +203,7 @@ meta_back_do_single_bind(
        dc.rwmap = &li->targets[ candidate ]->rwmap;
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "bindDn";
+       dc.ctx = "bindDN";
 
        if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
                send_ldap_result( op, rs );
@@ -280,7 +281,8 @@ meta_back_dobind( struct metaconn *lc, Operation *op )
        }
 
        for ( i = 0, lsc = lc->conns; !META_LAST(lsc); ++i, ++lsc ) {
-               int rc;
+               int             rc;
+               struct berval   cred = BER_BVC("");
 
                /*
                 * Not a candidate or something wrong with this target ...
@@ -327,7 +329,8 @@ meta_back_dobind( struct metaconn *lc, Operation *op )
                        lsc->cred.bv_len = 0;
                }
 
-               rc = ldap_bind_s( lsc->ld, 0, NULL, LDAP_AUTH_SIMPLE );
+               rc = ldap_sasl_bind_s(lsc->ld, "", LDAP_SASL_SIMPLE, &cred,
+                               op->o_ctrls, NULL, NULL);
                if ( rc != LDAP_SUCCESS ) {
                        
 #ifdef NEW_LOGGING
@@ -413,6 +416,7 @@ meta_back_op_result( struct metaconn *lc, Operation *op, SlapReply *rs )
        struct metasingleconn *lsc;
        char *rmsg = NULL;
        char *rmatch = NULL;
+       int     free_rmsg = 0, free_rmatch = 0;
 
        for ( i = 0, lsc = lc->conns; !META_LAST(lsc); ++i, ++lsc ) {
                char *msg = NULL;
@@ -456,9 +460,17 @@ meta_back_op_result( struct metaconn *lc, Operation *op, SlapReply *rs )
                        switch ( rs->sr_err ) {
                        default:
                                rerr = rs->sr_err;
+                               if ( rmsg ) {
+                                       ber_memfree( rmsg );
+                               }
                                rmsg = msg;
+                               free_rmsg = 1;
                                msg = NULL;
+                               if ( rmatch ) {
+                                       ber_memfree( rmatch );
+                               }
                                rmatch = match;
+                               free_rmatch = 1;
                                match = NULL;
                                break;
                        }
@@ -477,6 +489,12 @@ meta_back_op_result( struct metaconn *lc, Operation *op, SlapReply *rs )
        rs->sr_text = rmsg;
        rs->sr_matched = rmatch;
        send_ldap_result( op, rs );
+       if ( free_rmsg ) {
+               ber_memfree( rmsg );
+       }
+       if ( free_rmatch ) {
+               ber_memfree( rmatch );
+       }
        rs->sr_text = NULL;
        rs->sr_matched = NULL;
 
index 6565e715ec51cdb4b67989f690655ab1975d7519..df2e87cefd5aad8ae823bbe1c23d7460fa75c19a 100644 (file)
@@ -204,6 +204,12 @@ meta_clear_one_candidate(
                lsc->bound_dn.bv_len = 0;
        }
 
+       if ( lsc->cred.bv_val != NULL ) {
+               ber_memfree( lsc->cred.bv_val );
+               lsc->cred.bv_val = NULL;
+               lsc->cred.bv_len = 0;
+       }
+
        return 0;
 }
 
index 3e0d8fd5d53c523ee30a3214ebccd68ea7f13fde..4f0d06548f7d9ee3e28280817c0f5a4d6dd35905 100644 (file)
@@ -67,7 +67,7 @@ meta_back_compare( Operation *op, SlapReply *rs )
         */
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "compareDn";
+       dc.ctx = "compareDN";
 
        for ( i = 0, lsc = lc->conns; !META_LAST(lsc); ++i, ++lsc ) {
                struct berval mdn = { 0, NULL };
@@ -254,7 +254,7 @@ finish:;
                matched.bv_val = match;
                matched.bv_len = strlen( match );
 
-               dc.ctx = "matchedDn";
+               dc.ctx = "matchedDN";
                ldap_back_dn_massage( &dc, &matched, &mmatch );
        }
 
index 6792b28ea3be36c9d30d9ce1f9655ae027f83b08..2234e601a01eb0a3ebee4be1472bdb0f96c65e0d 100644 (file)
@@ -50,6 +50,27 @@ new_target( void )
                 return NULL;
        }
 
+       {
+               char    *rargv[3];
+
+               /*
+                * the filter rewrite as a string must be disabled
+                * by default; it can be re-enabled by adding rules;
+                * this creates an empty rewriteContext
+                */
+               rargv[ 0 ] = "rewriteContext";
+               rargv[ 1 ] = "searchFilter";
+               rargv[ 2 ] = NULL;
+               rewrite_parse( lt->rwmap.rwm_rw, "<suffix massage>", 
+                               1, 2, rargv );
+
+               rargv[ 0 ] = "rewriteContext";
+               rargv[ 1 ] = "default";
+               rargv[ 2 ] = NULL;
+               rewrite_parse( lt->rwmap.rwm_rw, "<suffix massage>", 
+                               1, 2, rargv );
+       }
+
        ldap_back_map_init( &lt->rwmap.rwm_at, &mapping );
 
        return lt;
index b915a9cf11c26bc35d36047ebdf7cc7e31da93fd..0d3a4839ea23f001c0cc6d2df4dfc4de8476e9f0 100644 (file)
@@ -243,7 +243,7 @@ init_one_conn(
                dc.rwmap = &lt->rwmap;
                dc.conn = op->o_conn;
                dc.rs = rs;
-               dc.ctx = "bindDn";
+               dc.ctx = "bindDN";
                
                /*
                 * Rewrite the bind dn if needed
@@ -254,6 +254,11 @@ init_one_conn(
                        return rs->sr_err;
                }
 
+               /* copy the DN idf needed */
+               if ( lsc->bound_dn.bv_val == op->o_conn->c_dn.bv_val ) {
+                       ber_dupbv( &lsc->bound_dn, &op->o_conn->c_dn );
+               }
+
                assert( lsc->bound_dn.bv_val );
 
        } else {
index 9d9509007db976243d5638c234cc55b42995fd2f..0f557f52f64a0422a051f214400f3bef84979cdd 100644 (file)
@@ -61,6 +61,7 @@ rewriteContext        default
 rewriteRule    "(.*)o=Foo Bar,[ ]?c=US" "%1dc=example,dc=com"
 rewriteContext searchResult
 rewriteRule    "(.*)dc=example,[ ]?dc=com" "%1o=Foo Bar,c=US"
+rewriteContext searchAttrDN alias searchResult
 rewriteContext searchFilter
 rewriteRule    "(.*)member=([^)]+),o=Foo Bar,[ ]?c=US(.*)" "%1member=%2,dc=example,dc=com%3"
 
@@ -72,6 +73,7 @@ rewriteContext        default
 rewriteRule    "(.*)o=Foo Bar,[ ]?c=US" "%1dc=example,dc=com"
 rewriteContext searchResult
 rewriteRule    "(.*)dc=example,[ ]?dc=com" "%1o=Foo Bar,c=US"
+rewriteContext searchAttrDN alias searchResult
 rewriteContext searchFilter
 rewriteRule    "(.*)member=([^)]+),o=Foo Bar,[ ]?c=US(.*)" "%1member=%2,dc=example,dc=com%3"
 default-target
@@ -83,6 +85,7 @@ rewriteContext        default
 rewriteRule    "(.*)o=Foo Bar,[ ]?c=US" "%1dc=example,dc=com"
 rewriteContext searchResult
 rewriteRule    "(.*)dc=example,[ ]?dc=com" "%1o=Foo Bar,c=US"
+rewriteContext searchAttrDN alias searchResult
 rewriteContext searchFilter
 rewriteRule    "(.*)member=([^)]+),o=Foo Bar,[ ]?c=US(.*)" "%1member=%2,dc=example,dc=com%3"
 
index dd28e40279e5a8b2b86d0d0044de2f1fa3749fdf..c3c8ea8f5ff02f42d6e68521843b68b4ec743a9d 100644 (file)
@@ -60,7 +60,7 @@ meta_back_delete( Operation *op, SlapReply *rs )
        dc.rwmap = &li->targets[ candidate ]->rwmap;
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "deleteDn";
+       dc.ctx = "deleteDN";
 
        if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
                send_ldap_result( op, rs );
index d00c0f5e17312d411acedfa077aa20f3e3fc452d..c44a1f214cc036faa5800d9877647970e6688015 100644 (file)
@@ -65,7 +65,7 @@ meta_back_modify( Operation *op, SlapReply *rs )
        dc.rwmap = &li->targets[ candidate ]->rwmap;
        dc.conn = op->o_conn;
        dc.rs = rs;
-       dc.ctx = "modifyDn";
+       dc.ctx = "modifyDN";
 
        if ( ldap_back_dn_massage( &dc, &op->o_req_dn, &mdn ) ) {
                rc = -1;
index 8f38adaf4a5a26374e831ff2c617b63db40a0753..ecb5fcdafb44c6d17562d92297fba2bbd07e18e5 100644 (file)
@@ -58,7 +58,7 @@ meta_back_search( Operation *op, SlapReply *rs )
        struct metaconn *lc;
        struct metasingleconn *lsc;
        struct timeval  tv = { 0, 0 };
-       LDAPMessage     *res, *e;
+       LDAPMessage     *res = NULL, *e;
        int     rc = 0, *msgid, sres = LDAP_SUCCESS;
        char *err = NULL;
        struct berval match = { 0, NULL }, mmatch = { 0, NULL };
@@ -66,8 +66,6 @@ meta_back_search( Operation *op, SlapReply *rs )
                
        int i, last = 0, candidates = 0, initial_candidates = 0,
                        candidate_match = 0;
-       struct slap_limits_set *limit = NULL;
-       int isroot = 0;
        dncookie dc;
 
        int     is_scope = 0,
@@ -102,54 +100,6 @@ meta_back_search( Operation *op, SlapReply *rs )
                return -1;
        }
        
-       /* if not root, get appropriate limits */
-       if ( be_isroot( op->o_bd, &op->o_ndn ) ) {
-               isroot = 1;
-       } else {
-               ( void ) get_limits( op, &op->o_ndn, &limit );
-       }
-
-       /* if no time limit requested, rely on remote server limits */
-       /* if requested limit higher than hard limit, abort */
-       if ( !isroot && op->oq_search.rs_tlimit > limit->lms_t_hard ) {
-               /* no hard limit means use soft instead */
-               if ( limit->lms_t_hard == 0
-                               && limit->lms_t_soft > -1
-                               && op->oq_search.rs_tlimit > limit->lms_t_soft ) {
-                       op->oq_search.rs_tlimit = limit->lms_t_soft;
-                       
-               /* positive hard limit means abort */
-               } else if ( limit->lms_t_hard > 0 ) {
-                       rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                       send_ldap_result( op, rs );
-                       rc = 0;
-                       goto finish;
-               }
-               
-               /* negative hard limit means no limit */
-       }
-       
-       /* if no size limit requested, rely on remote server limits */
-       /* if requested limit higher than hard limit, abort */
-       if ( !isroot && op->oq_search.rs_slimit > limit->lms_s_hard ) {
-               /* no hard limit means use soft instead */
-               if ( limit->lms_s_hard == 0
-                               && limit->lms_s_soft > -1
-                               && op->oq_search.rs_slimit > limit->lms_s_soft ) {
-                       op->oq_search.rs_slimit = limit->lms_s_soft;
-                       
-               /* positive hard limit means abort */
-               } else if ( limit->lms_s_hard > 0 ) {
-                       rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                       send_ldap_result( op, rs );
-                       rc = 0;
-                       goto finish;
-               }
-               
-               /* negative hard limit means no limit */
-       }
-
-
        dc.conn = op->o_conn;
        dc.rs = rs;
 
@@ -158,7 +108,7 @@ meta_back_search( Operation *op, SlapReply *rs )
         */
        for ( i = 0, lsc = lc->conns; !META_LAST(lsc); ++i, ++lsc ) {
                struct berval   realbase = op->o_req_dn;
-               int             realscope = op->oq_search.rs_scope;
+               int             realscope = op->ors_scope;
                ber_len_t       suffixlen = 0;
                struct berval   mbase = { 0, NULL }; 
                struct berval   mfilter = { 0, NULL };
@@ -170,17 +120,17 @@ meta_back_search( Operation *op, SlapReply *rs )
                }
 
                /* should we check return values? */
-               if ( op->oq_search.rs_deref != -1 ) {
+               if ( op->ors_deref != -1 ) {
                        ldap_set_option( lsc->ld, LDAP_OPT_DEREF,
-                                       ( void * )&op->oq_search.rs_deref);
+                                       ( void * )&op->ors_deref);
                }
-               if ( op->oq_search.rs_tlimit != -1 ) {
+               if ( op->ors_tlimit != -1 ) {
                        ldap_set_option( lsc->ld, LDAP_OPT_TIMELIMIT,
-                                       ( void * )&op->oq_search.rs_tlimit);
+                                       ( void * )&op->ors_tlimit);
                }
-               if ( op->oq_search.rs_slimit != -1 ) {
+               if ( op->ors_slimit != -1 ) {
                        ldap_set_option( lsc->ld, LDAP_OPT_SIZELIMIT,
-                                       ( void * )&op->oq_search.rs_slimit);
+                                       ( void * )&op->ors_slimit);
                }
 
                dc.rwmap = &li->targets[ i ]->rwmap;
@@ -190,7 +140,7 @@ meta_back_search( Operation *op, SlapReply *rs )
                 */
                suffixlen = li->targets[ i ]->suffix.bv_len;
                if ( suffixlen > op->o_req_ndn.bv_len ) {
-                       switch ( op->oq_search.rs_scope ) {
+                       switch ( op->ors_scope ) {
                        case LDAP_SCOPE_SUBTREE:
                                /*
                                 * make the target suffix the new base
@@ -272,7 +222,7 @@ meta_back_search( Operation *op, SlapReply *rs )
                 * Maps filter
                 */
                rc = ldap_back_filter_map_rewrite( &dc,
-                               op->oq_search.rs_filter,
+                               op->ors_filter,
                                &mfilter, BACKLDAP_MAP );
                switch ( rc ) {
                case LDAP_SUCCESS:
@@ -294,7 +244,7 @@ meta_back_search( Operation *op, SlapReply *rs )
                 * Maps required attributes
                 */
                rc = ldap_back_map_attrs( &li->targets[ i ]->rwmap.rwm_at,
-                               op->oq_search.rs_attrs, BACKLDAP_MAP,
+                               op->ors_attrs, BACKLDAP_MAP,
                                &mapped_attrs );
                if ( rc != LDAP_SUCCESS ) {
                        /*
@@ -309,12 +259,12 @@ meta_back_search( Operation *op, SlapReply *rs )
                 */
                msgid[ i ] = ldap_search( lsc->ld, mbase.bv_val, realscope,
                                mfilter.bv_val, mapped_attrs,
-                               op->oq_search.rs_attrsonly ); 
+                               op->ors_attrsonly ); 
                if ( mapped_attrs ) {
                        free( mapped_attrs );
                        mapped_attrs = NULL;
                }
-               if ( mfilter.bv_val != op->oq_search.rs_filterstr.bv_val ) {
+               if ( mfilter.bv_val != op->ors_filterstr.bv_val ) {
                        free( mfilter.bv_val );
                        mfilter.bv_val = NULL;
                }
@@ -363,8 +313,8 @@ new_candidate:;
                                break;
                        }
 
-                       if ( op->oq_search.rs_slimit > 0
-                                       && rs->sr_nentries == op->oq_search.rs_slimit ) {
+                       if ( op->ors_slimit > 0
+                                       && rs->sr_nentries == op->ors_slimit ) {
                                rs->sr_err = LDAP_SIZELIMIT_EXCEEDED;
                                rs->sr_v2ref = v2refs;
                                send_ldap_result( op, rs );
@@ -382,6 +332,11 @@ new_candidate:;
                                        0, &tv, &res );
 
                        if ( rc == 0 ) {
+                               /* timeout exceeded */
+
+                               /* FIXME: res should not need to be freed */
+                               assert( res == NULL );
+
                                continue;
 
                        } else if ( rc == -1 ) {
@@ -393,12 +348,19 @@ new_candidate:;
                                send_ldap_result( op, rs );
                                
                                /* anything else needs be done? */
+
+                               /* FIXME: res should not need to be freed */
+                               assert( res == NULL );
+
                                goto finish;
 
                        } else if ( rc == LDAP_RES_SEARCH_ENTRY ) {
                                e = ldap_first_entry( lsc->ld, res );
                                meta_send_entry( op, rs, lc, i, e );
 
+                               ldap_msgfree( res );
+                               res = NULL;
+
                                /*
                                 * If scope is BASE, we need to jump out
                                 * as soon as one entry is found; if
@@ -406,13 +368,13 @@ new_candidate:;
                                 * this should correspond to the sole
                                 * entry that has the base DN
                                 */
-                               if ( op->oq_search.rs_scope == LDAP_SCOPE_BASE
+                               if ( op->ors_scope == LDAP_SCOPE_BASE
                                                && rs->sr_nentries > 0 ) {
                                        candidates = 0;
                                        sres = LDAP_SUCCESS;
                                        break;
                                }
-                               ldap_msgfree( res );
+
                                gotit = 1;
 
                        } else if ( rc == LDAP_RES_SEARCH_REFERENCE ) {
@@ -460,9 +422,14 @@ new_candidate:;
                                        rs->sr_ctrls = NULL;
                                }
 
+                               ldap_msgfree( res );
+                               res = NULL;
+
                        } else {
                                rs->sr_err = ldap_result2error( lsc->ld,
                                                res, 1 );
+                               res = NULL;
+
                                sres = ldap_back_map_result( rs );
                                if ( err != NULL ) {
                                        free( err );
@@ -528,7 +495,7 @@ new_candidate:;
         */
        if ( candidate_match == initial_candidates
                        && match.bv_val != NULL && *match.bv_val ) {
-               dc.ctx = "matchedDn";
+               dc.ctx = "matchedDN";
                dc.rwmap = &li->targets[ last ]->rwmap;
 
                if ( ldap_back_dn_massage( &dc, &match, &mmatch ) ) {
@@ -751,7 +718,7 @@ meta_send_entry(
                attrp = &attr->a_next;
        }
        rs->sr_entry = &ent;
-       rs->sr_attrs = op->oq_search.rs_attrs;
+       rs->sr_attrs = op->ors_attrs;
        send_search_entry( op, rs );
        rs->sr_entry = NULL;
        rs->sr_attrs = NULL;
index 3e02efd51064930bbeb1e7a99aa700ca50f6fa0b..1932583d17a1c5d2e0a2c7785159b9bd36ea331d 100644 (file)
@@ -69,11 +69,11 @@ passwd_back_search(
 
        AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass;
 
-       op->oq_search.rs_tlimit = (op->oq_search.rs_tlimit > op->o_bd->be_timelimit || op->oq_search.rs_tlimit < 1) ? op->o_bd->be_timelimit
-           : op->oq_search.rs_tlimit;
-       stoptime = op->o_time + op->oq_search.rs_tlimit;
-       op->oq_search.rs_slimit = (op->oq_search.rs_slimit > op->o_bd->be_sizelimit || op->oq_search.rs_slimit < 1) ? op->o_bd->be_sizelimit
-           : op->oq_search.rs_slimit;
+       op->ors_tlimit = (op->ors_tlimit > op->o_bd->be_timelimit || op->ors_tlimit < 1) ? op->o_bd->be_timelimit
+           : op->ors_tlimit;
+       stoptime = op->o_time + op->ors_tlimit;
+       op->ors_slimit = (op->ors_slimit > op->o_bd->be_sizelimit || op->ors_slimit < 1) ? op->o_bd->be_sizelimit
+           : op->ors_slimit;
 
        /* Handle a query for the base of this backend */
        if ( be_issuffix( op->o_bd, &op->o_req_ndn ) ) {
@@ -83,7 +83,7 @@ passwd_back_search(
 
                rs->sr_matched = op->o_req_dn.bv_val;
 
-               if( op->oq_search.rs_scope != LDAP_SCOPE_ONELEVEL ) {
+               if( op->ors_scope != LDAP_SCOPE_ONELEVEL ) {
                        AttributeDescription *desc = NULL;
 
                        /* Create an entry corresponding to the base DN */
@@ -128,14 +128,14 @@ passwd_back_search(
                        vals[0].bv_len = sizeof("organizationalUnit")-1;
                        attr_mergeit( e, ad_objectClass, vals );
        
-                       if ( test_filter( op, e, op->oq_search.rs_filter ) == LDAP_COMPARE_TRUE ) {
+                       if ( test_filter( op, e, op->ors_filter ) == LDAP_COMPARE_TRUE ) {
                                rs->sr_entry = e;
-                               rs->sr_attrs = op->oq_search.rs_attrs;
+                               rs->sr_attrs = op->ors_attrs;
                                send_search_entry( op, rs );
                        }
                }
 
-               if ( op->oq_search.rs_scope != LDAP_SCOPE_BASE ) {
+               if ( op->ors_scope != LDAP_SCOPE_BASE ) {
                        /* check all our "children" */
 
                        ldap_pvt_thread_mutex_lock( &passwd_mutex );
@@ -163,9 +163,9 @@ passwd_back_search(
                                        goto done;
                                }
 
-                               if ( test_filter( op, e, op->oq_search.rs_filter ) == LDAP_COMPARE_TRUE ) {
+                               if ( test_filter( op, e, op->ors_filter ) == LDAP_COMPARE_TRUE ) {
                                        /* check size limit */
-                                       if ( --op->oq_search.rs_slimit == -1 ) {
+                                       if ( --op->ors_slimit == -1 ) {
                                                send_ldap_error( op, rs, LDAP_SIZELIMIT_EXCEEDED, NULL );
                                                endpwent();
                                                ldap_pvt_thread_mutex_unlock( &passwd_mutex );
@@ -173,7 +173,7 @@ passwd_back_search(
                                        }
 
                                        rs->sr_entry = e;
-                                       rs->sr_attrs = op->oq_search.rs_attrs;
+                                       rs->sr_attrs = op->ors_attrs;
                                        send_search_entry( op, rs );
                                }
 
@@ -203,7 +203,7 @@ passwd_back_search(
                        goto done;
                }
 
-               if( op->oq_search.rs_scope == LDAP_SCOPE_ONELEVEL ) {
+               if( op->ors_scope == LDAP_SCOPE_ONELEVEL ) {
                        goto done;
                }
 
@@ -230,9 +230,9 @@ passwd_back_search(
                        goto done;
                }
 
-               if ( test_filter( op, e, op->oq_search.rs_filter ) == LDAP_COMPARE_TRUE ) {
+               if ( test_filter( op, e, op->ors_filter ) == LDAP_COMPARE_TRUE ) {
                        rs->sr_entry = e;
-                       rs->sr_attrs = op->oq_search.rs_attrs;
+                       rs->sr_attrs = op->ors_attrs;
                        send_search_entry( op, rs );
                }
 
index 4db3f1db151162b5c0c5ef71c83afec50992a982..a5cf70046209772251ebeb24e5b00bc1d5cab2f0 100644 (file)
@@ -115,6 +115,20 @@ backsql_delete( Operation *op, SlapReply *rs )
        }
 
        SQLAllocStmt( dbh, &sth );
+
+       rc = backsql_Prepare( dbh, &sth, oc->bom_delete_proc, 0 );
+       if ( rc != SQL_SUCCESS ) {
+               Debug( LDAP_DEBUG_TRACE,
+                       "   backsql_delete(): "
+                       "error preparing delete query\n", 
+                       0, 0, 0 );
+               backsql_PrintErrors( bi->db_env, dbh, sth, rc );
+
+               rs->sr_err = LDAP_OTHER;
+               rs->sr_text = "SQL-backend error";
+               goto done;
+       }
+
        if ( BACKSQL_IS_DEL( oc->bom_expect_return ) ) {
                pno = 1;
                SQLBindParameter( sth, 1, SQL_PARAM_OUTPUT, SQL_C_ULONG,
@@ -126,9 +140,7 @@ backsql_delete( Operation *op, SlapReply *rs )
        SQLBindParameter( sth, pno + 1, SQL_PARAM_INPUT, 
                        SQL_C_ULONG, SQL_INTEGER, 0, 0, &e_id.keyval, 0, 0 );
 
-       Debug( LDAP_DEBUG_TRACE, "   backsql_delete(): executing \"%s\"\n",
-                       oc->bom_delete_proc, 0, 0 );
-       rc = SQLExecDirect( sth, oc->bom_delete_proc, SQL_NTS );
+       rc = SQLExecute( sth );
        if ( rc != SQL_SUCCESS ) {
                Debug( LDAP_DEBUG_TRACE, "   backsql_delete(): "
                        "delete_proc execution failed\n", 0, 0, 0 );
@@ -145,9 +157,22 @@ backsql_delete( Operation *op, SlapReply *rs )
        SQLAllocStmt( dbh, &sth );
 #endif /* BACKSQL_REALLOC_STMT */
 
+       rc = backsql_Prepare( dbh, &sth, bi->delentry_query, 0 );
+       if ( rc != SQL_SUCCESS ) {
+               Debug( LDAP_DEBUG_TRACE,
+                       "   backsql_delete(): "
+                       "error preparing ldap_entries delete query\n", 
+                       0, 0, 0 );
+               backsql_PrintErrors( bi->db_env, dbh, sth, rc );
+
+               rs->sr_err = LDAP_OTHER;
+               rs->sr_text = "SQL-backend error";
+               goto done;
+       }
+
        SQLBindParameter( sth, 1, SQL_PARAM_INPUT, SQL_C_ULONG, SQL_INTEGER,
                        0, 0, &e_id.id, 0, 0 );
-       rc = SQLExecDirect( sth, bi->delentry_query, SQL_NTS );
+       rc = SQLExecute( sth );
        if ( rc != SQL_SUCCESS ) {
                Debug( LDAP_DEBUG_TRACE, "   backsql_delete(): "
                        "failed to delete record from ldap_entries\n", 
@@ -158,8 +183,6 @@ backsql_delete( Operation *op, SlapReply *rs )
                rs->sr_text = "SQL-backend error";
                goto done;
        }
-       
-       SQLFreeStmt( sth, SQL_DROP );
 
        /*
         * Commit only if all operations succeed
index 65257d0e0fa610d17e88325414d1f2b0a2bb3328..efbdcd9877b047f004fb94d4c4fcd284663c575c 100644 (file)
@@ -1146,21 +1146,19 @@ backsql_search( Operation *op, SlapReply *rs )
        time_t                  stoptime = 0;
        backsql_srch_info       srch_info;
        backsql_entryID         *eid = NULL;
-       struct slap_limits_set  *limit = NULL;
-       int                     isroot = 0;
 
        manageDSAit = get_manageDSAit( op );
 
        Debug( LDAP_DEBUG_TRACE, "==>backsql_search(): "
                "base='%s', filter='%s', scope=%d,", 
                op->o_req_ndn.bv_val,
-               op->oq_search.rs_filterstr.bv_val,
-               op->oq_search.rs_scope );
+               op->ors_filterstr.bv_val,
+               op->ors_scope );
        Debug( LDAP_DEBUG_TRACE, " deref=%d, attrsonly=%d, "
                "attributes to load: %s\n",
-               op->oq_search.rs_deref,
-               op->oq_search.rs_attrsonly,
-               op->oq_search.rs_attrs == NULL ? "all" : "custom list" );
+               op->ors_deref,
+               op->ors_attrsonly,
+               op->ors_attrs == NULL ? "all" : "custom list" );
 
        if ( op->o_req_ndn.bv_len > BACKSQL_MAX_DN_LEN ) {
                Debug( LDAP_DEBUG_TRACE, "backsql_search(): "
@@ -1187,97 +1185,33 @@ backsql_search( Operation *op, SlapReply *rs )
                return 1;
        }
 
-       /* if not root, get appropriate limits */
-       if ( be_isroot( op->o_bd, &op->o_ndn ) ) {
-               isroot = 1;
-       } else {
-               ( void ) get_limits( op, &op->o_ndn, &limit );
-       }
-
-       /* The time/size limits come first because they require very little
-        * effort, so there's no chance the candidates are selected and then 
-        * the request is not honored only because of time/size constraints */
-
-       /* if no time limit requested, use soft limit (unless root!) */
-       if ( isroot ) {
-               if ( op->oq_search.rs_tlimit == 0 ) {
-                       op->oq_search.rs_tlimit = -1;   /* allow root to set no limit */
-               }
-
-               if ( op->oq_search.rs_slimit == 0 ) {
-                       op->oq_search.rs_slimit = -1;
-               }
-
-       } else {
-               /* if no limit is required, use soft limit */
-               if ( op->oq_search.rs_tlimit <= 0 ) {
-                       op->oq_search.rs_tlimit = limit->lms_t_soft;
-
-               /* if requested limit higher than hard limit, abort */
-               } else if ( op->oq_search.rs_tlimit > limit->lms_t_hard ) {
-                       /* no hard limit means use soft instead */
-                       if ( limit->lms_t_hard == 0
-                                       && limit->lms_t_soft > -1
-                                       && op->oq_search.rs_tlimit > limit->lms_t_soft ) {
-                               op->oq_search.rs_tlimit = limit->lms_t_soft;
-
-                       /* positive hard limit means abort */
-                       } else if ( limit->lms_t_hard > 0 ) {
-                               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                               send_ldap_result( op, rs );
-                               return 0;
-                       }
-               
-                       /* negative hard limit means no limit */
-               }
-               
-               /* if no limit is required, use soft limit */
-               if ( op->oq_search.rs_slimit <= 0 ) {
-                       op->oq_search.rs_slimit = limit->lms_s_soft;
-
-               /* if requested limit higher than hard limit, abort */
-               } else if ( op->oq_search.rs_slimit > limit->lms_s_hard ) {
-                       /* no hard limit means use soft instead */
-                       if ( limit->lms_s_hard == 0
-                                       && limit->lms_s_soft > -1
-                                       && op->oq_search.rs_slimit > limit->lms_s_soft ) {
-                               op->oq_search.rs_slimit = limit->lms_s_soft;
-
-                       /* positive hard limit means abort */
-                       } else if ( limit->lms_s_hard > 0 ) {
-                               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                               send_ldap_result( op, rs );
-                               return 0;
-                       }
-                       
-                       /* negative hard limit means no limit */
-               }
-       }
-
        /* compute it anyway; root does not use it */
-       stoptime = op->o_time + op->oq_search.rs_tlimit;
+       stoptime = op->o_time + op->ors_tlimit;
 
        backsql_init_search( &srch_info, &op->o_req_dn,
-                       op->oq_search.rs_scope,
-                       op->oq_search.rs_slimit, op->oq_search.rs_tlimit,
-                       stoptime, op->oq_search.rs_filter,
-                       dbh, op, op->oq_search.rs_attrs );
+                       op->ors_scope,
+                       op->ors_slimit, op->ors_tlimit,
+                       stoptime, op->ors_filter,
+                       dbh, op, op->ors_attrs );
 
        /*
         * for each objectclass we try to construct query which gets IDs
         * of entries matching LDAP query filter and scope (or at least 
         * candidates), and get the IDs
         */
-       srch_info.bsi_n_candidates = ( isroot ? -2 : limit->lms_s_unchecked == -1 
-                       ? -2 : limit->lms_s_unchecked );
+       srch_info.bsi_n_candidates =
+               ( op->ors_limit == NULL /* isroot == FALSE */ ? -2 : 
+               ( op->ors_limit->lms_s_unchecked == -1 ? -2 :
+               ( op->ors_limit->lms_s_unchecked ) ) );
        avl_apply( bi->oc_by_oc, backsql_oc_get_candidates,
                        &srch_info, BACKSQL_STOP, AVL_INORDER );
-       if ( !isroot && limit->lms_s_unchecked != -1 ) {
-               if ( srch_info.bsi_n_candidates == -1 ) {
-                       rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
-                       send_ldap_result( op, rs );
-                       goto done;
-               }
+       if ( op->ors_limit != NULL      /* isroot == TRUE */
+                       && op->ors_limit->lms_s_unchecked != -1
+                       && srch_info.bsi_n_candidates == -1 )
+       {
+               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
+               send_ldap_result( op, rs );
+               goto done;
        }
        
        /*
@@ -1296,7 +1230,7 @@ backsql_search( Operation *op, SlapReply *rs )
                }
 
                /* check time limit */
-               if ( op->oq_search.rs_tlimit != -1 && slap_get_time() > stoptime ) {
+               if ( op->ors_tlimit != -1 && slap_get_time() > stoptime ) {
                        rs->sr_err = LDAP_TIMELIMIT_EXCEEDED;
                        rs->sr_ctrls = NULL;
                        rs->sr_ref = rs->sr_v2ref;
@@ -1320,7 +1254,7 @@ backsql_search( Operation *op, SlapReply *rs )
                }
 
                if ( !manageDSAit &&
-                               op->oq_search.rs_scope != LDAP_SCOPE_BASE &&
+                               op->ors_scope != LDAP_SCOPE_BASE &&
                                is_entry_referral( entry ) ) {
                        BerVarray refs;
                        struct berval matched_dn;
@@ -1330,7 +1264,7 @@ backsql_search( Operation *op, SlapReply *rs )
                        if ( refs ) {
                                rs->sr_ref = referral_rewrite( refs,
                                                &matched_dn, &op->o_req_dn,
-                                               op->oq_search.rs_scope );
+                                               op->ors_scope );
                                ber_bvarray_free( refs );
                        }
 
@@ -1388,10 +1322,10 @@ backsql_search( Operation *op, SlapReply *rs )
                        }
                }
 
-               if ( test_filter( op, entry, op->oq_search.rs_filter )
+               if ( test_filter( op, entry, op->ors_filter )
                                == LDAP_COMPARE_TRUE ) {
                        if ( hasSubordinate && !( srch_info.bsi_flags & BSQL_SF_ALL_OPER ) 
-                                       && !ad_inlist( slap_schema.si_ad_hasSubordinates, op->oq_search.rs_attrs ) ) {
+                                       && !ad_inlist( slap_schema.si_ad_hasSubordinates, op->ors_attrs ) ) {
                                a->a_next = NULL;
                                attr_free( hasSubordinate );
                                hasSubordinate = NULL;
@@ -1403,7 +1337,7 @@ backsql_search( Operation *op, SlapReply *rs )
                        } else
 #endif
                        {
-                               rs->sr_attrs = op->oq_search.rs_attrs;
+                               rs->sr_attrs = op->ors_attrs;
                                rs->sr_entry = entry;
                                sres = send_search_entry( op, rs );
                                rs->sr_entry = NULL;
@@ -1429,8 +1363,8 @@ backsql_search( Operation *op, SlapReply *rs )
                }
                entry_free( entry );
 
-               if ( op->oq_search.rs_slimit != -1 
-                               && rs->sr_nentries >= op->oq_search.rs_slimit ) {
+               if ( op->ors_slimit != -1 
+                               && rs->sr_nentries >= op->ors_slimit ) {
                        rs->sr_err = LDAP_SIZELIMIT_EXCEEDED;
                        send_ldap_result( op, rs );
                        goto end_of_search;
index 31176a9e26c5da7a9162cf76e8e40939f85ba378..d34d89ee77560d8f3c35f95f8c6d25587fe75932 100644 (file)
@@ -409,6 +409,21 @@ int backend_startup(Backend *be)
 
                if ( !LDAP_STAILQ_EMPTY( &backendDB[i].be_syncinfo )) {
                        syncinfo_t *si;
+
+                       if ( !( backendDB[i].be_search && backendDB[i].be_add &&
+                               backendDB[i].be_modify && backendDB[i].be_delete )) {
+#ifdef NEW_LOGGING
+                               LDAP_LOG( BACKEND, CRIT, 
+                                       "backend_startup: database(%d) does not support "
+                                       "operations required for syncrepl", i, 0, 0 );
+#else
+                               Debug( LDAP_DEBUG_ANY,
+                                       "backend_startup: database(%d) does not support "
+                                       "operations required for syncrepl", i, 0, 0 );
+#endif
+                               continue;
+                       }
+
                        LDAP_STAILQ_FOREACH( si, &backendDB[i].be_syncinfo, si_next ) {
                                si->si_be = &backendDB[i];
                                init_syncrepl( si );
index b1e565493fe6c88f0f101df53bd9c722eed7e3fd..38d36b79a3d62781da8a6362cbd3e9e773f4b898 100644 (file)
@@ -314,9 +314,7 @@ glue_back_search ( Operation *op, SlapReply *rs )
                         * check for abandon 
                         */
                        if (op->o_abandon) {
-                               op->o_req_dn = dn;
-                               op->o_req_ndn = ndn;
-                               goto done;
+                               goto end_of_loop;
                        }
                        op->o_bd = gi->n[i].be;
 
@@ -366,14 +364,15 @@ end_of_loop:;
 
                break;
        }
-       op->o_callback = cb.sc_next;
-       rs->sr_err = gs.err;
-       rs->sr_matched = gs.matched;
-       rs->sr_ref = gs.refs;
+       if ( !op->o_abandon ) {
+               op->o_callback = cb.sc_next;
+               rs->sr_err = gs.err;
+               rs->sr_matched = gs.matched;
+               rs->sr_ref = gs.refs;
 
-       send_ldap_result( op, rs );
+               send_ldap_result( op, rs );
+       }
 
-done:
        op->o_bd = b0;
        if (gs.matched)
                free (gs.matched);
index 461c83f1513afead3181bbe9c1d34b1c0809fbc7..5c9552825e7e7de506767efd7cb3092749994c86 100644 (file)
@@ -46,7 +46,6 @@ do_bind(
 {
        BerElement *ber = op->o_ber;
        ber_int_t version;
-       ber_tag_t method;
        struct berval mech = { 0, NULL };
        struct berval dn = { 0, NULL };
        ber_tag_t tag;
@@ -107,7 +106,7 @@ do_bind(
         *      }
         */
 
-       tag = ber_scanf( ber, "{imt" /*}*/, &version, &dn, &method );
+       tag = ber_scanf( ber, "{imt" /*}*/, &version, &dn, &op->orb_method );
 
        if ( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
@@ -123,7 +122,7 @@ do_bind(
 
        op->o_protocol = version;
 
-       if( method != LDAP_AUTH_SASL ) {
+       if( op->orb_method != LDAP_AUTH_SASL ) {
                tag = ber_scanf( ber, /*{*/ "m}", &op->orb_cred );
 
        } else {
@@ -182,7 +181,7 @@ do_bind(
                goto cleanup;
        }
 
-       if( method == LDAP_AUTH_SASL ) {
+       if( op->orb_method == LDAP_AUTH_SASL ) {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION,     DETAIL1, 
                        "do_sasl_bind: conn %d  dn (%s) mech %s\n", 
@@ -197,17 +196,17 @@ do_bind(
                LDAP_LOG( OPERATION, DETAIL1, 
                        "do_bind: version=%ld dn=\"%s\" method=%ld\n",
                        (unsigned long) version, op->o_req_dn.bv_val,
-                       (unsigned long) method );
+                       (unsigned long) op->orb_method );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "do_bind: version=%ld dn=\"%s\" method=%ld\n",
                        (unsigned long) version, op->o_req_dn.bv_val,
-                       (unsigned long) method );
+                       (unsigned long) op->orb_method );
 #endif
        }
 
        Statslog( LDAP_DEBUG_STATS, "conn=%lu op=%lu BIND dn=\"%s\" method=%ld\n",
-           op->o_connid, op->o_opid, op->o_req_dn.bv_val, (unsigned long) method,
+           op->o_connid, op->o_opid, op->o_req_dn.bv_val, (unsigned long) op->orb_method,
                0 );
 
        if ( version < LDAP_VERSION_MIN || version > LDAP_VERSION_MAX ) {
@@ -249,7 +248,7 @@ do_bind(
        /* Set the bindop for the benefit of in-directory SASL lookups */
        op->o_conn->c_sasl_bindop = op;
 
-       if ( method == LDAP_AUTH_SASL ) {
+       if ( op->orb_method == LDAP_AUTH_SASL ) {
                if ( version < LDAP_VERSION3 ) {
 #ifdef NEW_LOGGING
                        LDAP_LOG( OPERATION, INFO, 
@@ -370,7 +369,7 @@ do_bind(
                if ( pb ) {
                        slapi_int_pblock_set_operation( pb, op );
                        slapi_pblock_set( pb, SLAPI_BIND_TARGET, (void *)dn.bv_val );
-                       slapi_pblock_set( pb, SLAPI_BIND_METHOD, (void *)method );
+                       slapi_pblock_set( pb, SLAPI_BIND_METHOD, (void *)op->orb_method );
                        slapi_pblock_set( pb, SLAPI_BIND_CREDENTIALS, (void *)&op->orb_cred );
                        slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)(0) );
                        (void) slapi_int_call_plugins( op->o_bd, SLAPI_PLUGIN_POST_BIND_FN, pb );
@@ -396,7 +395,7 @@ do_bind(
                ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
        }
 
-       if ( method == LDAP_AUTH_SIMPLE ) {
+       if ( op->orb_method == LDAP_AUTH_SIMPLE ) {
                ber_str2bv( "SIMPLE", sizeof("SIMPLE")-1, 0, &mech );
                /* accept "anonymous" binds */
                if ( op->orb_cred.bv_len == 0 || op->o_req_ndn.bv_len == 0 ) {
@@ -459,7 +458,7 @@ do_bind(
                }
 
 #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
-       } else if ( method == LDAP_AUTH_KRBV41 || method == LDAP_AUTH_KRBV42 ) {
+       } else if ( op->orb_method == LDAP_AUTH_KRBV41 || op->orb_method == LDAP_AUTH_KRBV42 ) {
                if ( global_disallows & SLAP_DISALLOW_BIND_KRBV4 ) {
                        /* disallow simple authentication */
                        rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
@@ -487,11 +486,11 @@ do_bind(
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, INFO, 
                        "do_bind: conn %ld  v%d unknown authentication method (%ld)\n",
-                       op->o_connid, version, method );
+                       op->o_connid, version, op->orb_method );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "do_bind: v%d unknown authentication method (%ld)\n",
-                       version, method, 0 );
+                       version, op->orb_method, 0 );
 #endif
                goto cleanup;
        }
@@ -533,7 +532,7 @@ do_bind(
                int rc;
                slapi_int_pblock_set_operation( pb, op );
                slapi_pblock_set( pb, SLAPI_BIND_TARGET, (void *)dn.bv_val );
-               slapi_pblock_set( pb, SLAPI_BIND_METHOD, (void *)method );
+               slapi_pblock_set( pb, SLAPI_BIND_METHOD, (void *)op->orb_method );
                slapi_pblock_set( pb, SLAPI_BIND_CREDENTIALS, (void *)&op->orb_cred );
                slapi_pblock_set( pb, SLAPI_MANAGEDSAIT, (void *)(0) );
                slapi_pblock_set( pb, SLAPI_CONN_DN, (void *)(0) );
@@ -614,7 +613,6 @@ do_bind(
 #endif /* defined( LDAP_SLAPI ) */
 
        if( op->o_bd->be_bind ) {
-               op->orb_method = method;
                rs->sr_err = (op->o_bd->be_bind)( op, rs );
 
                if ( rs->sr_err == 0 ) {
@@ -685,10 +683,10 @@ do_bind(
 
 cleanup:
        if ( rs->sr_err == LDAP_SUCCESS ) {
-               if ( method != LDAP_AUTH_SASL ) {
+               if ( op->orb_method != LDAP_AUTH_SASL ) {
                        ber_dupbv( &op->o_conn->c_authmech, &mech );
                }
-               op->o_conn->c_authtype = method;
+               op->o_conn->c_authtype = op->orb_method;
        }
 
        op->o_conn->c_sasl_bindop = NULL;
index 2366118e90a55076ba2d6ee76d12d8578edae927..5e4bf1b80c589418a588de40d4819c069979de00 100644 (file)
@@ -70,7 +70,7 @@ int           global_idletimeout = 0;
 char   *global_host = NULL;
 char   *global_realm = NULL;
 char           *ldap_srvtab = "";
-char           *default_passwd_hash = NULL;
+char           **default_passwd_hash = NULL;
 int            cargc = 0, cargv_size = 0;
 char   **cargv;
 struct berval default_search_base = { 0, NULL };
@@ -635,22 +635,34 @@ read_config( const char *fname, int depth )
                                return 1;
 
                        }
-
-                       if ( lutil_passwd_scheme( cargv[1] ) == 0 ) {
+                       for(i = 1; i < cargc; i++) {
+                               if ( lutil_passwd_scheme( cargv[i] ) == 0 ) {
+#ifdef NEW_LOGGING
+                                       LDAP_LOG( CONFIG, CRIT, 
+                                               "%s: line %d: password scheme \"%s\" not available\n",
+                                               fname, lineno, cargv[i] );
+#else
+                                       Debug( LDAP_DEBUG_ANY,
+                                               "%s: line %d: password scheme \"%s\" not available\n",
+                                               fname, lineno, cargv[i] );
+#endif
+                               } else {
+                                       ldap_charray_add( &default_passwd_hash, cargv[i] );
+                               }
+                       }
+                       if( !default_passwd_hash ) {
 #ifdef NEW_LOGGING
                                LDAP_LOG( CONFIG, CRIT, 
-                                          "%s: line %d: password scheme \"%s\" not available\n",
-                                          fname, lineno, cargv[1] );
+                                       "%s: line %d: no valid hashes found\n",
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
-                                       "%s: line %d: password scheme \"%s\" not available\n",
-                                       fname, lineno, cargv[1] );
-#endif
+                                       "%s: line %d: no valid hashes found\n",
+                                       fname, lineno, 0 );
                                return 1;
+#endif
                        }
 
-                       default_passwd_hash = ch_strdup( cargv[1] );
-
                } else if ( strcasecmp( cargv[0], "password-crypt-salt-format" ) == 0 ) 
                {
                        if ( cargc < 2 ) {
@@ -674,6 +686,15 @@ read_config( const char *fname, int depth )
                } else if ( strncasecmp( cargv[0], "sasl", 4 ) == 0 ) {
                        if ( slap_sasl_config( cargc, cargv, line, fname, lineno ) )
                                return 1;
+#ifdef SLAP_X_SASL_REWRITE
+               /* use authid rewrite instead of sasl regexp */
+               } else if ( strncasecmp( cargv[0], "authid-rewrite", sizeof("authid-rewrite") - 1 ) == 0 ) {
+                       int rc = slap_sasl_rewrite_config( fname, lineno,
+                                       cargc, cargv );
+                       if ( rc ) {
+                               return rc;
+                       }
+#endif /* SLAP_X_SASL_REWRITE */
 
                } else if ( strcasecmp( cargv[0], "schemadn" ) == 0 ) {
                        struct berval dn;
@@ -772,7 +793,7 @@ read_config( const char *fname, int depth )
 
                        for ( i = 1; i < cargc; i++ ) {
                                if ( strncasecmp( cargv[i], "size", 4 ) == 0 ) {
-                                       rc = parse_limit( cargv[i], lim );
+                                       rc = limits_parse_one( cargv[i], lim );
                                        if ( rc ) {
 #ifdef NEW_LOGGING
                                                LDAP_LOG( CONFIG, CRIT, 
@@ -852,7 +873,7 @@ read_config( const char *fname, int depth )
 
                        for ( i = 1; i < cargc; i++ ) {
                                if ( strncasecmp( cargv[i], "time", 4 ) == 0 ) {
-                                       rc = parse_limit( cargv[i], lim );
+                                       rc = limits_parse_one( cargv[i], lim );
                                        if ( rc ) {
 #ifdef NEW_LOGGING
                                                LDAP_LOG( CONFIG, CRIT, 
@@ -920,7 +941,7 @@ read_config( const char *fname, int depth )
                                return( 1 );
                        }
 
-                       if ( parse_limits( be, fname, lineno, cargc, cargv ) ) {
+                       if ( limits_parse( be, fname, lineno, cargc, cargv ) ) {
                                return( 1 );
                        }
 
@@ -2774,7 +2795,7 @@ config_destroy( )
        if ( slapd_pid_file )
                free ( slapd_pid_file );
        if ( default_passwd_hash )
-               free( default_passwd_hash );
+               ldap_charray_free( default_passwd_hash );
        acl_destroy( global_acl, NULL );
 }
 
index 6e2c934847980ae44c92d2f1a0a85e9045a3a991..0ce75ba9af94e1a4939849a101a03973a1d513a0 100644 (file)
@@ -92,6 +92,8 @@ static ldap_pvt_thread_start_t connection_operation;
  */
 int connections_init(void)
 {
+       int i;
+
        assert( connections == NULL );
 
        if( connections != NULL) {
@@ -126,6 +128,8 @@ int connections_init(void)
        assert( connections[0].c_struct_state == SLAP_C_UNINITIALIZED );
        assert( connections[dtblsize-1].c_struct_state == SLAP_C_UNINITIALIZED );
 
+       for (i=0; i<dtblsize; i++) connections[i].c_conn_idx = i;
+
        /*
         * per entry initialization of the Connection array initialization
         * will be done by connection_init()
@@ -1626,7 +1630,7 @@ connection_input(
                defer = "awaiting write";
        } else if (conn->c_n_ops_executing >= connection_pool_max/2) {
                defer = "too many executing";
-       } else if (conn->c_conn_state == SLAP_C_BINDING ) {
+       } else if (conn->c_conn_state == SLAP_C_BINDING) {
                defer = "binding";
        } else if (tag != LDAP_REQ_ABANDON && conn->c_n_ops_pending) {
                defer = "pending operations";
index 1900312250e856026279a1b2e7cc95c3ee3255e9..7818eab0745d7143806d9a03918fc71e5fc24def 100644 (file)
@@ -35,6 +35,8 @@ static SLAP_CTRL_PARSE_FN parsePagedResults;
 static SLAP_CTRL_PARSE_FN parseValuesReturnFilter;
 static SLAP_CTRL_PARSE_FN parsePermissiveModify;
 static SLAP_CTRL_PARSE_FN parseDomainScope;
+static SLAP_CTRL_PARSE_FN parseTreeDelete;
+static SLAP_CTRL_PARSE_FN parseSearchOptions;
 
 #ifdef LDAP_CONTROL_SUBENTRIES
 static SLAP_CTRL_PARSE_FN parseSubentries;
@@ -102,6 +104,16 @@ static struct slap_control control_defs[] = {
                SLAP_CTRL_MODIFY, NULL,
                parsePermissiveModify, LDAP_SLIST_ENTRY_INITIALIZER(next) },
 #endif
+#ifdef LDAP_CONTROL_X_TREE_DELETE
+       { LDAP_CONTROL_X_TREE_DELETE,
+               SLAP_CTRL_DELETE, NULL,
+               parseTreeDelete, LDAP_SLIST_ENTRY_INITIALIZER(next) },
+#endif
+#ifdef LDAP_CONTORL_X_SEARCH_OPTIONS
+       { LDAP_CONTORL_X_SEARCH_OPTIONS,
+               SLAP_CTRL_FRONTEND|SLAP_CTRL_SEARCH, NULL,
+               parseSearchOptions, LDAP_SLIST_ENTRY_INITIALIZER(next) },
+#endif
 #ifdef LDAP_CONTROL_SUBENTRIES
        { LDAP_CONTROL_SUBENTRIES,
                SLAP_CTRL_SEARCH, NULL,
@@ -1215,6 +1227,78 @@ static int parseDomainScope (
 }
 #endif
 
+#ifdef LDAP_CONTROL_X_TREE_DELETE
+static int parseTreeDelete (
+       Operation *op,
+       SlapReply *rs,
+       LDAPControl *ctrl )
+{
+       if ( op->o_tree_delete != SLAP_NO_CONTROL ) {
+               rs->sr_text = "treeDelete control specified multiple times";
+               return LDAP_PROTOCOL_ERROR;
+       }
+
+       if ( ctrl->ldctl_value.bv_len ) {
+               rs->sr_text = "treeDelete control value not empty";
+               return LDAP_PROTOCOL_ERROR;
+       }
+
+       op->o_tree_delete = ctrl->ldctl_iscritical
+               ? SLAP_CRITICAL_CONTROL
+               : SLAP_NONCRITICAL_CONTROL;
+
+       return LDAP_SUCCESS;
+}
+#endif
+
+#ifdef LDAP_CONTORL_X_SEARCH_OPTIONS
+static int parseSearchOptions (
+       Operation *op,
+       SlapReply *rs,
+       LDAPControl *ctrl )
+{
+       BerElement *ber;
+       ber_int_t search_flags;
+
+       if ( ctrl->ldctl_value.bv_len == 0 ) {
+               rs->sr_text = "searchOptions control value not empty";
+               return LDAP_PROTOCOL_ERROR;
+       }
+
+       ber = ber_init( &ctrl->ldctl_value );
+       if( ber == NULL ) {
+               rs->sr_text = "internal error";
+               return LDAP_OTHER;
+       }
+
+       if ( (tag = ber_scanf( ber, "{i}", &search_flags )) == LBER_ERROR ) {
+               rs->sr_text = "searchOptions control decoding error";
+               return LDAP_PROTOCOL_ERROR;
+       }
+
+       (void) ber_free( ber, 1 );
+
+       if ( search_flags & LDAP_SEARCH_FLAG_DOMAIN_SCOPE ) {
+               if ( op->o_domain_scope != SLAP_NO_CONTROL ) {
+                       rs->sr_text = "searchOptions control specified multiple times or with domainScope control";
+                       return LDAP_PROTOCOL_ERROR;
+               }
+
+               op->o_domain_scope = ctrl->ldctl_iscritical
+                       ? SLAP_CRITICAL_CONTROL
+                       : SLAP_NONCRITICAL_CONTROL;
+       }
+
+       if ( search_flags & ~(LDAP_SEARCH_FLAG_DOMAIN_SCOPE) ) {
+               /* Other search flags not recognised so far */
+               rs->sr_text = "searchOptions contained invalid flag";
+               return LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+       }
+
+       return LDAP_SUCCESS;
+}
+#endif
+
 static int parseLDAPsync (
        Operation *op,
        SlapReply *rs,
index d9a6c913b02dfb4ceafa8bf5a96fab7ba5121476..a1b881bf1a4b52c23c127b0c55cea3bf8ef810f9 100644 (file)
@@ -843,7 +843,7 @@ build_new_dn( struct berval * new_dn,
 {
        char *ptr;
 
-       if ( parent_dn == NULL ) {
+       if ( parent_dn == NULL || parent_dn->bv_len == 0 ) {
                ber_dupbv( new_dn, newrdn );
                return;
        }
index c258ca7e33063c643e57caf2c6b36e0623bdbb6d..5d671ab77cb1d8f98b6bbdac94641632b8e0b62c 100644 (file)
@@ -691,16 +691,18 @@ filter2bv_x( Operation *op, Filter *f, struct berval *fstr )
 {
        int             i;
        Filter          *p;
-       struct berval   tmp,
+       struct berval   tmp;
+       static struct berval
                        ber_bvfalse = BER_BVC( "(?=false)" ),
                        ber_bvtrue = BER_BVC( "(?=true)" ),
                        ber_bvundefined = BER_BVC( "(?=undefined)" ),
                        ber_bverror = BER_BVC( "(?=error)" ),
-                       ber_bvunknown = BER_BVC( "(?=unknown)" );
+                       ber_bvunknown = BER_BVC( "(?=unknown)" ),
+                       ber_bvnone = BER_BVC( "(?=none)" );
        ber_len_t       len;
 
        if ( f == NULL ) {
-               ber_str2bv_x( "No filter!", sizeof("No filter!")-1, 1, fstr, op->o_tmpmemctx );
+               ber_dupbv_x( fstr, &ber_bvnone, op->o_tmpmemctx );
                return;
        }
 
index 1ba44b81bac7e6282ce5c21b8b3a15bca4db572e..d1dd42f25bc1ebd3db49822ac2acf04a1a3ea39b 100644 (file)
@@ -24,7 +24,7 @@
 #include "slap.h"
 
 int
-get_limits
+limits_get
        Operation               *op,
        struct berval           *ndn, 
        struct slap_limits_set  **limit
@@ -165,7 +165,7 @@ get_limits(
 }
 
 static int
-add_limits(
+limits_add(
        Backend                 *be,
        unsigned                flags,
        const char              *pattern,
@@ -267,7 +267,7 @@ add_limits(
 }
 
 int
-parse_limits(
+limits_parse(
        Backend     *be,
        const char  *fname,
        int         lineno,
@@ -310,18 +310,19 @@ parse_limits(
         * 
         * "anonymous"
         * "users"
-        * [ "dn" [ "." { "exact" | "base" | "one" | "sub" | children" 
+        * [ "dn" [ "." { "exact" | "base" | "onelevel" | "subtree" | children"
         *      | "regex" | "anonymous" } ] "=" ] <dn pattern>
         *
         * Note:
         *      "exact" and "base" are the same (exact match);
-        *      "one" means exactly one rdn below, NOT including the pattern
-        *      "sub" means any rdn below, including the pattern
-        *      "children" means any rdn below, NOT including the pattern
+        *      "onelevel" means exactly one rdn below, NOT including pattern
+        *      "subtree" means any rdn below, including pattern
+        *      "children" means any rdn below, NOT including pattern
         *      
         *      "anonymous" may be deprecated in favour 
         *      of the pattern = "anonymous" form
         *
+        * "group[/objectClass[/attributeType]]" "=" "<dn pattern>"
         *
         * <limit>:
         *
@@ -355,10 +356,42 @@ parse_limits(
                        } else if ( strncasecmp( pattern, "one", sizeof( "one" ) - 1 ) == 0 ) {
                                flags = SLAP_LIMITS_ONE;
                                pattern += sizeof( "one" ) - 1;
+                               if ( strncasecmp( pattern, "level", sizeof( "level" ) - 1 ) == 0 ) {
+                                       pattern += sizeof( "level" ) - 1;
 
-                       } else if ( strncasecmp( pattern, "subtree", sizeof( "subtree" ) - 1 ) == 0 ) {
+                               } else {
+#ifdef NEW_LOGGING
+                                       LDAP_LOG( CONFIG, WARNING , 
+                                               "%s : line %d: deprecated \"one\" style "
+                                               "\"limits <pattern> <limits>\" line; "
+                                               "use \"onelevel\" instead.\n", fname, lineno, 0 );
+#else
+                                       Debug( LDAP_DEBUG_ANY,
+                                               "%s : line %d: deprecated \"one\" style "
+                                               "\"limits <pattern> <limits>\" line; "
+                                               "use \"onelevel\" instead.\n", fname, lineno, 0 );
+#endif
+                               }
+
+                       } else if ( strncasecmp( pattern, "sub", sizeof( "sub" ) - 1 ) == 0 ) {
                                flags = SLAP_LIMITS_SUBTREE;
-                               pattern += sizeof( "subtree" ) - 1;
+                               pattern += sizeof( "sub" ) - 1;
+                               if ( strncasecmp( pattern, "tree", sizeof( "tree" ) - 1 ) == 0 ) {
+                                       pattern += sizeof( "tree" ) - 1;
+
+                               } else {
+#ifdef NEW_LOGGING
+                                       LDAP_LOG( CONFIG, WARNING , 
+                                               "%s : line %d: deprecated \"sub\" style "
+                                               "\"limits <pattern> <limits>\" line; "
+                                               "use \"subtree\" instead.\n", fname, lineno, 0 );
+#else
+                                       Debug( LDAP_DEBUG_ANY,
+                                               "%s : line %d: deprecated \"sub\" style "
+                                               "\"limits <pattern> <limits>\" line; "
+                                               "use \"subtree\" instead.\n", fname, lineno, 0 );
+#endif
+                               }
 
                        } else if ( strncasecmp( pattern, "children", sizeof( "children" ) - 1 ) == 0 ) {
                                flags = SLAP_LIMITS_CHILDREN;
@@ -392,13 +425,13 @@ parse_limits(
 #ifdef NEW_LOGGING
                                LDAP_LOG( CONFIG, CRIT, 
                                        "%s : line %d: missing '=' in "
-                                       "\"dn[.{exact|base|one|subtree"
+                                       "\"dn[.{exact|base|onelevel|subtree"
                                        "|children|regex|anonymous}]" "=<pattern>\" in "
                                        "\"limits <pattern> <limits>\" line.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s : line %d: missing '=' in "
-                                       "\"dn[.{exact|base|one|subtree"
+                                       "\"dn[.{exact|base|onelevel|subtree"
                                        "|children|regex|anonymous}]"
                                        "=<pattern>\" in "
                                        "\"limits <pattern> <limits>\" "
@@ -506,7 +539,7 @@ no_ad:;
 
        /* get the limits */
        for ( i = 2; i < argc; i++ ) {
-               if ( parse_limit( argv[i], &limit ) ) {
+               if ( limits_parse_one( argv[i], &limit ) ) {
 
 #ifdef NEW_LOGGING
                        LDAP_LOG( CONFIG, CRIT, 
@@ -539,7 +572,7 @@ no_ad:;
                limit.lms_s_hard = limit.lms_s_soft;
        }
        
-       rc = add_limits( be, flags, pattern, group_oc, group_ad, &limit );
+       rc = limits_add( be, flags, pattern, group_oc, group_ad, &limit );
        if ( rc ) {
 
 #ifdef NEW_LOGGING
@@ -559,7 +592,7 @@ no_ad:;
 }
 
 int
-parse_limit(
+limits_parse_one(
        const char              *arg,
        struct slap_limits_set  *limit
 )
@@ -737,3 +770,84 @@ parse_limit(
        return 0;
 }
 
+
+int
+limits_check( Operation *op, SlapReply *rs )
+{
+       assert( op );
+       assert( rs );
+       /* FIXME: should this be always true? */
+       assert( op->o_tag == LDAP_REQ_SEARCH);
+       
+       /* allow root to set no limit */
+       if ( be_isroot( op->o_bd, &op->o_ndn ) ) {
+               op->ors_limit = NULL;
+
+               if ( op->ors_tlimit == 0 ) {
+                       op->ors_tlimit = -1;
+               }
+
+               if ( op->ors_slimit == 0 ) {
+                       op->ors_slimit = -1;
+               }
+
+       /* if not root, get appropriate limits */
+       } else {
+               ( void ) limits_get( op, &op->o_ndn, &op->ors_limit );
+
+               assert( op->ors_limit != NULL );
+
+               /* if no limit is required, use soft limit */
+               if ( op->ors_tlimit <= 0 ) {
+                       op->ors_tlimit = op->ors_limit->lms_t_soft;
+
+               /* if requested limit higher than hard limit, abort */
+               } else if ( op->ors_tlimit > op->ors_limit->lms_t_hard ) {
+                       /* no hard limit means use soft instead */
+                       if ( op->ors_limit->lms_t_hard == 0
+                                       && op->ors_limit->lms_t_soft > -1
+                                       && op->ors_tlimit > op->ors_limit->lms_t_soft ) {
+                               op->ors_tlimit = op->ors_limit->lms_t_soft;
+
+                       /* positive hard limit means abort */
+                       } else if ( op->ors_limit->lms_t_hard > 0 ) {
+                               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
+                               send_ldap_result( op, rs );
+                               rs->sr_err = LDAP_SUCCESS;
+                               return -1;
+                       }
+       
+                       /* negative hard limit means no limit */
+               }
+       
+               /* if no limit is required, use soft limit */
+               if ( op->ors_slimit <= 0 ) {
+                       if ( get_pagedresults( op ) && op->ors_limit->lms_s_pr != 0 ) {
+                               op->ors_slimit = op->ors_limit->lms_s_pr;
+                       } else {
+                               op->ors_slimit = op->ors_limit->lms_s_soft;
+                       }
+
+               /* if requested limit higher than hard limit, abort */
+               } else if ( op->ors_slimit > op->ors_limit->lms_s_hard ) {
+                       /* no hard limit means use soft instead */
+                       if ( op->ors_limit->lms_s_hard == 0
+                                       && op->ors_limit->lms_s_soft > -1
+                                       && op->ors_slimit > op->ors_limit->lms_s_soft ) {
+                               op->ors_slimit = op->ors_limit->lms_s_soft;
+
+                       /* positive hard limit means abort */
+                       } else if ( op->ors_limit->lms_s_hard > 0 ) {
+                               rs->sr_err = LDAP_ADMINLIMIT_EXCEEDED;
+                               send_ldap_result( op, rs );
+                               rs->sr_err = LDAP_SUCCESS;      
+                               return -1;
+                       }
+               
+                       /* negative hard limit means no limit */
+               }
+       }
+
+       return 0;
+}
+
index 04e0c981f1d9f68223826f6471ff6e3f91788f1a..497d40868161bcc3f2b7b8cf6e82aa1e442d6c65 100644 (file)
@@ -64,6 +64,20 @@ static struct sockaddr_in    bind_addr;
 #define MAIN_RETURN(x) return(x)
 #endif
 
+typedef int (MainFunc) LDAP_P(( int argc, char *argv[] ));
+extern MainFunc slapadd, slapcat, slapindex, slappasswd;
+
+static struct {
+       char *name;
+       MainFunc *func;
+} tools[] = {
+       {"slapadd", slapadd},
+       {"slapcat", slapcat},
+       {"slapindex", slapindex},
+       {"slappasswd", slappasswd},
+       {NULL, NULL}
+};
+
 /*
  * when more than one slapd is running on one machine, each one might have
  * it's own LOCAL for syslogging and must have its own pid/args files
@@ -113,6 +127,7 @@ usage( char *name )
        fprintf( stderr,
                "\t-4\t\tIPv4 only\n"
                "\t-6\t\tIPv6 only\n"
+               "\t-T (a|c|i|p)\tRun in Tool mode\n"
                "\t-c cookie\tSync cookie of consumer\n"
                "\t-d level\tDebug level" "\n"
                "\t-f filename\tConfiguration file\n"
@@ -164,7 +179,7 @@ int main( int argc, char **argv )
 #else
        char            *configfile = SLAPD_DEFAULT_CONFIGFILE;
 #endif
-       char        *serverName = NULL;
+       char        *serverName;
        int         serverMode = SLAP_SERVER_MODE;
 
        struct berval cookie = { 0, NULL };
@@ -180,6 +195,17 @@ int main( int argc, char **argv )
 
        sl_mem_init();
 
+       serverName = lutil_progname( "slapd", argc, argv );
+
+       if ( strcmp( serverName, "slapd" ) ) {
+               for (i=0; tools[i].name; i++) {
+                       if ( !strcmp( serverName, tools[i].name ) ) {
+                               rc = tools[i].func(argc, argv);
+                               MAIN_RETURN(rc);
+                       }
+               }
+       }
+
 #ifdef HAVE_NT_SERVICE_MANAGER
        {
                int *i;
@@ -188,7 +214,6 @@ int main( int argc, char **argv )
                char *regService = NULL;
 
                if ( is_NT_Service ) {
-                       serverName = argv[0];
                        lutil_CommenceStartupProcessing( serverName, slap_sig_shutdown );
                        if ( strcmp(serverName, SERVICE_NAME) )
                            regService = serverName;
@@ -241,7 +266,7 @@ int main( int argc, char **argv )
 #endif
 
        while ( (i = getopt( argc, argv,
-                            "c:d:f:h:s:n:t:V"
+                            "c:d:f:h:s:n:t:T:V"
 #if LDAP_PF_INET6
                                "46"
 #endif
@@ -341,7 +366,6 @@ int main( int argc, char **argv )
 #endif /* SETUID && GETUID */
 
                case 'n':  /* NT service name */
-                       if( serverName != NULL ) free( serverName );
                        serverName = ch_strdup( optarg );
                        break;
 
@@ -352,6 +376,14 @@ int main( int argc, char **argv )
                        version++;
                        break;
 
+               case 'T':
+                       for (i=0; tools[i].name; i++) {
+                               if ( optarg[0] == tools[i].name[4] ) {
+                                       rc = tools[i].func(argc, argv);
+                                       MAIN_RETURN(rc);
+                               }
+                       }
+                       /* FALLTHRU */
                default:
                        usage( argv[0] );
                        rc = 1;
@@ -374,14 +406,6 @@ int main( int argc, char **argv )
                if ( version > 1 ) goto stop;
        }
 
-       if( serverName == NULL ) {
-               if ( (serverName = strrchr( argv[0], *LDAP_DIRSEP )) == NULL ) {
-                       serverName = argv[0];
-               } else {
-                       serverName = serverName + 1;
-               }
-       }
-
        {
                char *logName;
 #ifdef HAVE_EBCDIC
index 6b0bba4545d47d3bad13556d6845d09297491a0c..fde6514a417cd47ea8440ae61b81c48e7427e835 100644 (file)
 #include <lber_pvt.h>
 #include <lutil.h>
 
+static const char *defhash[] = {
+#ifdef LUTIL_SHA1_BYTES
+       "{SSHA}",
+#else
+       "{SMD5}",
+#endif
+       NULL
+};
+
 int passwd_extop(
        Operation *op,
        SlapReply *rs )
 {
-       struct berval id = {0, NULL}, old = {0, NULL}, new = {0, NULL},
-               dn, ndn, hash, vals[2], tmpbv, *rsp = NULL;
-       Modifications ml, **modtail;
+       struct berval id = {0, NULL}, hash, *rsp = NULL;
+       req_pwdexop_s *qpw = &op->oq_pwdexop;
+       Modifications *ml;
        Operation op2;
        slap_callback cb = { NULL, slap_null_cb, NULL, NULL };
        slap_callback cb2 = { NULL, slap_replog_cb, NULL, NULL };
+       int i, nhash;
+       char **hashes;
+
        cb2.sc_next = &cb;
 
        assert( ber_bvcmp( &slap_EXOP_MODIFY_PASSWD, &op->ore_reqoid ) == 0 );
@@ -47,29 +59,30 @@ int passwd_extop(
                return LDAP_STRONG_AUTH_REQUIRED;
        }
 
-       if( op->oq_extended.rs_reqdata ) {
-               ber_dupbv_x( &tmpbv, op->oq_extended.rs_reqdata, op->o_tmpmemctx );
-       }
-       rs->sr_err = slap_passwd_parse(
-               op->oq_extended.rs_reqdata ? &tmpbv : NULL,
-               &id, &old, &new, &rs->sr_text );
+       qpw->rs_old.bv_val = NULL;
+       qpw->rs_new.bv_val = NULL;
+       qpw->rs_mods = NULL;
+       qpw->rs_modtail = NULL;
+
+       rs->sr_err = slap_passwd_parse( op->ore_reqdata, &id, &qpw->rs_old,
+               &qpw->rs_new, &rs->sr_text );
 
        if ( rs->sr_err != LDAP_SUCCESS ) {
                return rs->sr_err;
        }
 
        if ( id.bv_len ) {
-               dn = id;
+               op->o_req_dn = id;
                /* ndn is in tmpmem, so we don't need to free it */
-               rs->sr_err = dnNormalize( 0, NULL, NULL, &dn, &ndn, op->o_tmpmemctx );
+               rs->sr_err = dnNormalize( 0, NULL, NULL, &id, &op->o_req_ndn, op->o_tmpmemctx );
                if ( rs->sr_err != LDAP_SUCCESS ) {
                        rs->sr_text = "Invalid DN";
                        return rs->sr_err;
                }
-               op->o_bd = select_backend( &ndn, 0, 0 );
+               op->o_bd = select_backend( &op->o_req_ndn, 0, 0 );
        } else {
-               dn = op->o_dn;
-               ndn = op->o_ndn;
+               op->o_req_dn = op->o_dn;
+               op->o_req_ndn = op->o_ndn;
                ldap_pvt_thread_mutex_lock( &op->o_conn->c_mutex );
                op->o_bd = op->o_conn->c_authz_backend;
                ldap_pvt_thread_mutex_unlock( &op->o_conn->c_mutex );
@@ -84,7 +97,7 @@ int passwd_extop(
 #endif
        }
 
-       if ( ndn.bv_len == 0 ) {
+       if ( op->o_req_ndn.bv_len == 0 ) {
                rs->sr_text = "no password is associated with the Root DSE";
                return LDAP_UNWILLING_TO_PERFORM;
        }
@@ -116,10 +129,23 @@ int passwd_extop(
        }
 #endif /* !SLAPD_MULTIMASTER */
 
+       /* generate a new password if none was provided */
+       if ( qpw->rs_new.bv_len == 0 ) {
+               slap_passwd_generate( &qpw->rs_new );
+               if ( qpw->rs_new.bv_len ) {
+                       rsp = slap_passwd_return( &qpw->rs_new );
+               }
+       }
+       if ( qpw->rs_new.bv_len == 0 ) {
+               rs->sr_text = "password generation failed";
+               return LDAP_OTHER;
+       }
+
        /* Give the backend a chance to handle this itself */
        if ( op->o_bd->be_extended ) {
                rs->sr_err = op->o_bd->be_extended( op, rs );
-               if ( rs->sr_err != LDAP_UNWILLING_TO_PERFORM ) {
+               if ( rs->sr_err != LDAP_UNWILLING_TO_PERFORM &&
+                       rs->sr_err != SLAP_CB_CONTINUE ) {
                        return rs->sr_err;
                }
        }
@@ -130,53 +156,58 @@ int passwd_extop(
                return LDAP_UNWILLING_TO_PERFORM;
        }
 
-       if ( new.bv_len == 0 ) {
-               slap_passwd_generate( &new );
-               rsp = slap_passwd_return( &new );
+       ml = ch_malloc( sizeof(Modifications) );
+       if ( !qpw->rs_modtail ) qpw->rs_modtail = &ml->sml_next;
+
+       if ( default_passwd_hash ) {
+               for ( nhash = 0; default_passwd_hash[nhash]; nhash++ );
+               hashes = default_passwd_hash;
+       } else {
+               nhash = 1;
+               hashes = (char **)defhash;
        }
-       if ( new.bv_len == 0 ) {
-               rs->sr_text = "password generation failed";
-               return LDAP_OTHER;
+       ml->sml_values = ch_malloc( (nhash+1)*sizeof(struct berval) );
+       for ( i=0; hashes[i]; i++ ) {
+               slap_passwd_hash( hashes[i], &qpw->rs_new, &hash, &rs->sr_text );
+               if ( hash.bv_len == 0 ) {
+                       if ( !rs->sr_text ) {
+                               rs->sr_text = "password hash failed";
+                       }
+                       break;
+               }
+               ml->sml_values[i] = hash;
        }
-       slap_passwd_hash( &new, &hash, &rs->sr_text );
+       ml->sml_values[i].bv_val = NULL;
+       ml->sml_nvalues = NULL;
+       ml->sml_desc = slap_schema.si_ad_userPassword;
+       ml->sml_op = LDAP_MOD_REPLACE;
+       ml->sml_next = qpw->rs_mods;
+       qpw->rs_mods = ml;
        if ( rsp ) {
-               free( new.bv_val );
+               free( qpw->rs_new.bv_val );
        }
-       if ( hash.bv_len == 0 ) {
-               if ( !rs->sr_text ) {
-                       rs->sr_text = "password hash failed";
+       if ( hashes[i] ) {
+               rs->sr_err = LDAP_OTHER;
+       } else {
+
+               op2 = *op;
+               op2.o_tag = LDAP_REQ_MODIFY;
+               op2.o_callback = &cb2;
+               op2.orm_modlist = qpw->rs_mods;
+
+               rs->sr_err = slap_mods_opattrs( &op2, ml, qpw->rs_modtail, &rs->sr_text,
+                       NULL, 0 );
+               
+               if ( rs->sr_err == LDAP_SUCCESS ) {
+                       rs->sr_err = op2.o_bd->be_modify( &op2, rs );
+               }
+               if ( rs->sr_err == LDAP_SUCCESS ) {
+                       rs->sr_rspdata = rsp;
+               } else if ( rsp ) {
+                       ber_bvfree( rsp );
                }
-               return LDAP_OTHER;
-       }
-       vals[0] = hash;
-       vals[1].bv_val = NULL;
-       ml.sml_desc = slap_schema.si_ad_userPassword;
-       ml.sml_values = vals;
-       ml.sml_nvalues = NULL;
-       ml.sml_op = LDAP_MOD_REPLACE;
-       ml.sml_next = NULL;
-
-       op2 = *op;
-       op2.o_tag = LDAP_REQ_MODIFY;
-       op2.o_callback = &cb2;
-       op2.o_req_dn = dn;
-       op2.o_req_ndn = ndn;
-       op2.orm_modlist = &ml;
-
-       modtail = &ml.sml_next;
-       rs->sr_err = slap_mods_opattrs( &op2, &ml, modtail, &rs->sr_text,
-               NULL, 0 );
-       
-       if ( rs->sr_err == LDAP_SUCCESS ) {
-               rs->sr_err = op2.o_bd->be_modify( &op2, rs );
-       }
-       if ( rs->sr_err == LDAP_SUCCESS ) {
-               rs->sr_rspdata = rsp;
-       } else if ( rsp ) {
-               ber_bvfree( rsp );
        }
-       slap_mods_free( ml.sml_next );
-       free( hash.bv_val );
+       slap_mods_free( qpw->rs_mods );
 
        return rs->sr_err;
 }
@@ -405,56 +436,39 @@ slap_passwd_check(
 void
 slap_passwd_generate( struct berval *pass )
 {
-       struct berval *tmp;
 #ifdef NEW_LOGGING
        LDAP_LOG( OPERATION, ENTRY, "slap_passwd_generate: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "slap_passwd_generate\n", 0, 0, 0 );
 #endif
+       pass->bv_val = NULL;
+       pass->bv_len = 0;
+
        /*
         * generate passwords of only 8 characters as some getpass(3)
         * implementations truncate at 8 characters.
         */
-       tmp = lutil_passwd_generate( 8 );
-       if (tmp) {
-               *pass = *tmp;
-               free(tmp);
-       } else {
-               pass->bv_val = NULL;
-               pass->bv_len = 0;
-       }
+       lutil_passwd_generate( pass, 8 );
 }
 
 void
 slap_passwd_hash(
+       char *hash,
        struct berval * cred,
        struct berval * new,
        const char **text )
 {
-       struct berval *tmp;
-#ifdef LUTIL_SHA1_BYTES
-       char* hash = default_passwd_hash ?  default_passwd_hash : "{SSHA}";
-#else
-       char* hash = default_passwd_hash ?  default_passwd_hash : "{SMD5}";
-#endif
-       
+       new->bv_len = 0;
+       new->bv_val = NULL;
 
 #if defined( SLAPD_CRYPT ) || defined( SLAPD_SPASSWD )
        ldap_pvt_thread_mutex_lock( &passwd_mutex );
 #endif
 
-       tmp = lutil_passwd_hash( cred , hash, text );
+       lutil_passwd_hash( cred , hash, new, text );
        
 #if defined( SLAPD_CRYPT ) || defined( SLAPD_SPASSWD )
        ldap_pvt_thread_mutex_unlock( &passwd_mutex );
 #endif
 
-       if( tmp == NULL ) {
-               new->bv_len = 0;
-               new->bv_val = NULL;
-       }
-
-       *new = *tmp;
-       free( tmp );
-       return;
 }
index 5e30e730e11bae36a31f5ab66dfd8ad1d8cb80d2..f58c1d2487299b28bcbdbd0452bd50c179fa5284 100644 (file)
@@ -627,14 +627,16 @@ LDAP_SLAPD_F (int) slap_build_syncUUID_set LDAP_P((
 /*
  * limits.c
  */
-LDAP_SLAPD_F (int) get_limits LDAP_P((
+LDAP_SLAPD_F (int) limits_get LDAP_P((
        Operation *op, struct berval *ndn,
        struct slap_limits_set **limit ));
-LDAP_SLAPD_F (int) parse_limits LDAP_P((
+LDAP_SLAPD_F (int) limits_parse LDAP_P((
        Backend *be, const char *fname, int lineno,
        int argc, char **argv ));
-LDAP_SLAPD_F (int) parse_limit LDAP_P(( const char *arg, 
+LDAP_SLAPD_F (int) limits_parse_one LDAP_P(( const char *arg, 
        struct slap_limits_set *limit ));
+LDAP_SLAPD_F (int) limits_check LDAP_P((
+       Operation *op, SlapReply *rs ));
 
 /*
  * lock.c
@@ -862,6 +864,7 @@ LDAP_SLAPD_F (int) slap_passwd_check(
 LDAP_SLAPD_F (void) slap_passwd_generate( struct berval * );
 
 LDAP_SLAPD_F (void) slap_passwd_hash(
+       char                    *type,
        struct berval           *cred,
        struct berval           *hash,
        const char              **text );
@@ -1210,7 +1213,7 @@ LDAP_SLAPD_V (int)                global_idletimeout;
 LDAP_SLAPD_V (int)             global_schemacheck;
 LDAP_SLAPD_V (char *)  global_host;
 LDAP_SLAPD_V (char *)  global_realm;
-LDAP_SLAPD_V (char * default_passwd_hash;
+LDAP_SLAPD_V (char **) default_passwd_hash;
 LDAP_SLAPD_V (int)             lber_debug;
 LDAP_SLAPD_V (int)             ldap_syslog;
 LDAP_SLAPD_V (struct berval)   default_search_base;
index 63408450132681c643fbf811fafe7ce49614b7aa..2f97e13ab40cbafeef42b0daefbef6f165ae9732 100644 (file)
@@ -888,6 +888,7 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
 
        for ( a = rs->sr_entry->e_attrs, j = 0; a != NULL; a = a->a_next, j++ ) {
                AttributeDescription *desc = a->a_desc;
+               int finish = 0;
 
                if ( rs->sr_attrs == NULL ) {
                        /* all attrs request, skip operational attributes */
@@ -909,39 +910,42 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
                        }
                }
 
-               if ( ! access_allowed( op, rs->sr_entry, desc, NULL,
-                       ACL_READ, &acl_state ) )
-               {
+               if ( op->ors_attrsonly ) {
+                       if ( ! access_allowed( op, rs->sr_entry, desc, NULL,
+                               ACL_READ, &acl_state ) )
+                       {
 #ifdef NEW_LOGGING
-                       LDAP_LOG( ACL, INFO, 
-                               "send_search_entry: conn %lu  access to attribute %s not "
-                               "allowed\n", op->o_connid, desc->ad_cname.bv_val, 0 );
+                               LDAP_LOG( ACL, INFO, 
+                                       "send_search_entry: conn %lu  access to attribute %s not "
+                                       "allowed\n", op->o_connid, desc->ad_cname.bv_val, 0 );
 #else
-                       Debug( LDAP_DEBUG_ACL, "acl: "
-                               "access to attribute %s not allowed\n",
-                           desc->ad_cname.bv_val, 0, 0 );
+                               Debug( LDAP_DEBUG_ACL, "acl: "
+                                       "access to attribute %s not allowed\n",
+                                   desc->ad_cname.bv_val, 0, 0 );
 #endif
-                       continue;
-               }
+                               continue;
+                       }
 
-               if (( rc = ber_printf( ber, "{O[" /*]}*/ , &desc->ad_cname )) == -1 ) {
+                       if (( rc = ber_printf( ber, "{O[" /*]}*/ , &desc->ad_cname )) == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG( OPERATION, ERR, 
-                               "send_search_entry: conn %lu  ber_printf failed\n", 
-                               op->o_connid, 0, 0 );
+                               LDAP_LOG( OPERATION, ERR, 
+                                       "send_search_entry: conn %lu  ber_printf failed\n", 
+                                       op->o_connid, 0, 0 );
 #else
-                       Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
+                               Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
 
-                       if ( op->o_res_ber == NULL ) ber_free_buf( ber );
-                       send_ldap_error( op, rs, LDAP_OTHER, "encoding description error");
-                       goto error_return;
-               }
+                               if ( op->o_res_ber == NULL ) ber_free_buf( ber );
+                               send_ldap_error( op, rs, LDAP_OTHER, "encoding description error");
+                               goto error_return;
+                       }
+                       finish = 1;
 
-               if ( ! op->ors_attrsonly ) {
-                       for ( i = 0; a->a_vals[i].bv_val != NULL; i++ ) {
+               } else {
+                       int first = 1;
+                       for ( i = 0; a->a_nvals[i].bv_val != NULL; i++ ) {
                                if ( ! access_allowed( op, rs->sr_entry,
-                                       desc, &a->a_vals[i], ACL_READ, &acl_state ) )
+                                       desc, &a->a_nvals[i], ACL_READ, &acl_state ) )
                                {
 #ifdef NEW_LOGGING
                                        LDAP_LOG( ACL, INFO, 
@@ -962,6 +966,23 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
                                        continue;
                                }
 
+                               if ( first ) {
+                                       first = 0;
+                                       finish = 1;
+                                       if (( rc = ber_printf( ber, "{O[" /*]}*/ , &desc->ad_cname )) == -1 ) {
+#ifdef NEW_LOGGING
+                                               LDAP_LOG( OPERATION, ERR, 
+                                                       "send_search_entry: conn %lu  ber_printf failed\n", 
+                                                       op->o_connid, 0, 0 );
+#else
+                                               Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
+#endif
+
+                                               if ( op->o_res_ber == NULL ) ber_free_buf( ber );
+                                               send_ldap_error( op, rs, LDAP_OTHER, "encoding description error");
+                                               goto error_return;
+                                       }
+                               }
                                if (( rc = ber_printf( ber, "O", &a->a_vals[i] )) == -1 ) {
 #ifdef NEW_LOGGING
                                        LDAP_LOG( OPERATION, ERR, 
@@ -980,7 +1001,7 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
                        }
                }
 
-               if (( rc = ber_printf( ber, /*{[*/ "]N}" )) == -1 ) {
+               if ( finish && ( rc = ber_printf( ber, /*{[*/ "]N}" )) == -1 ) {
 #ifdef NEW_LOGGING
                        LDAP_LOG( OPERATION, ERR, 
                                "send_search_entry: conn %lu ber_printf failed\n", 
index e266b0e4063b18ea9e8e7b6090a2d01aa2c1175a..61d9234a1d22c155ba3795669f7c7793d1a56010 100644 (file)
@@ -773,6 +773,14 @@ slap_sasl_canonicalize(
        if ( inlen > out_max )
                inlen = out_max-1;
 
+       /* This is a Simple Bind using SPASSWD. That means the in-directory
+        * userPassword of the Binding user already points at SASL, so it
+        * cannot be used to actually satisfy a password comparison. Just
+        * ignore it, some other mech will process it.
+        */
+       if ( !conn->c_sasl_bindop ||
+               conn->c_sasl_bindop->orb_method != LDAP_AUTH_SASL ) goto done;
+
        /* See if we need to add request, can only do it once */
        prop_getnames( props, slap_propnames, auxvals );
        if ( !auxvals[0].name )
@@ -867,6 +875,10 @@ slap_sasl_authorize(
        struct berval authcDN, authzDN;
        int rc;
 
+       /* Simple Binds don't support proxy authorization, ignore it */
+       if ( !conn->c_sasl_bindop ||
+               conn->c_sasl_bindop->orb_method != LDAP_AUTH_SASL ) return SASL_OK;
+
 #ifdef NEW_LOGGING
        LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl_authorize: conn %d authcid=\"%s\" authzid=\"%s\"\n",
@@ -885,6 +897,12 @@ slap_sasl_authorize(
        /* Skip PROP_CONN */
        prop_getnames( props, slap_propnames+1, auxvals );
        
+       /* Should not happen */
+       if ( !auxvals[0].values ) {
+               sasl_seterror( sconn, 0, "invalid authcid" );
+               return SASL_NOAUTHZ;
+       }
+
        AC_MEMCPY( &authcDN, auxvals[0].values[0], sizeof(authcDN) );
 
        /* Nothing to do if no authzID was given */
index b689d6435e43c31658eb9f10f141289099304e57..cffba781dc87ba34dc400f1aff47ae7d727189aa 100644 (file)
@@ -33,6 +33,7 @@
 #define LDAP_X_SCOPE_REGEX     ((ber_int_t) 0x0020)
 #define LDAP_X_SCOPE_CHILDREN  ((ber_int_t) 0x0030)
 #define LDAP_X_SCOPE_SUBTREE   ((ber_int_t) 0x0040)
+#define LDAP_X_SCOPE_ONELEVEL  ((ber_int_t) 0x0050)
 
 /*
  * IDs in DNauthzid form can now have a type specifier, that
@@ -225,6 +226,10 @@ static int slap_parseURI( Operation *op, struct berval *uri,
                                bv.bv_val += sizeof( "subtree" ) - 1;
                                *scope = LDAP_X_SCOPE_SUBTREE;
 
+                       } else if ( !strncasecmp( bv.bv_val, "onelevel:", sizeof( "onelevel:" ) - 1 ) ) {
+                               bv.bv_val += sizeof( "onelevel" ) - 1;
+                               *scope = LDAP_X_SCOPE_ONELEVEL;
+
                        } else {
                                return LDAP_PROTOCOL_ERROR;
                        }
@@ -244,6 +249,7 @@ is_dn:              bv.bv_len = uri->bv_len - (bv.bv_val - uri->bv_val);
                case LDAP_X_SCOPE_EXACT:
                case LDAP_X_SCOPE_CHILDREN:
                case LDAP_X_SCOPE_SUBTREE:
+               case LDAP_X_SCOPE_ONELEVEL:
                        rc = dnNormalize( 0, NULL, NULL, &bv, nbase, op->o_tmpmemctx );
                        if( rc != LDAP_SUCCESS ) {
                                *scope = -1;
@@ -639,6 +645,7 @@ exact_match:
 
        case LDAP_X_SCOPE_CHILDREN:
        case LDAP_X_SCOPE_SUBTREE:
+       case LDAP_X_SCOPE_ONELEVEL:
        {
                int     d = assertDN->bv_len - op.o_req_ndn.bv_len;
 
@@ -654,7 +661,29 @@ exact_match:
                        bv.bv_val = assertDN->bv_val + d;
 
                        if ( bv.bv_val[ -1 ] == ',' && dn_match( &op.o_req_ndn, &bv ) ) {
-                               rc = LDAP_SUCCESS;
+                               switch ( op.oq_search.rs_scope ) {
+                               case LDAP_X_SCOPE_CHILDREN:
+                                       rc = LDAP_SUCCESS;
+                                       break;
+
+                               case LDAP_X_SCOPE_ONELEVEL:
+                               {
+                                       struct berval   pdn;
+
+                                       dnParent( assertDN, &pdn );
+                                       /* the common portion of the DN
+                                        * already matches, so only check
+                                        * if parent DN of assertedDN 
+                                        * is all the pattern */
+                                       if ( pdn.bv_len == op.o_req_ndn.bv_len ) {
+                                               rc = LDAP_SUCCESS;
+                                       }
+                                       break;
+                               }
+                               default:
+                                       /* at present, impossible */
+                                       assert( 0 );
+                               }
                        }
                }
                goto CONCLUDED;
@@ -863,6 +892,7 @@ void slap_sasl2dn( Operation *opx,
        case LDAP_X_SCOPE_REGEX:
        case LDAP_X_SCOPE_SUBTREE:
        case LDAP_X_SCOPE_CHILDREN:
+       case LDAP_X_SCOPE_ONELEVEL:
                /* correctly parsed, but illegal */
                goto FINISHED;
 
index 830795f30fb8e808f6eaec8c4f860be171f04146..6fff9791d71b007933a423545679d41bb83a6149 100644 (file)
@@ -396,7 +396,7 @@ do_search(
 #endif /* LDAP_SLAPI */
 
        /* actually do the search and send the result(s) */
-       if ( op->o_bd->be_search ) {
+       if ( op->o_bd->be_search && limits_check( op, rs ) == 0 ) {
                (op->o_bd->be_search)( op, rs );
        } else {
                send_ldap_error( op, rs, LDAP_UNWILLING_TO_PERFORM,
index 0854980bfd338c59ed2042ab460f9e4798b95066..9e6c6c250cd184e40f62548ba9c0225b5f64420e 100644 (file)
@@ -1076,11 +1076,14 @@ typedef enum slap_control_e {
 
 typedef enum slap_style_e {
        ACL_STYLE_REGEX = 0,
+       ACL_STYLE_EXPAND,
        ACL_STYLE_BASE,
        ACL_STYLE_ONE,
        ACL_STYLE_SUBTREE,
        ACL_STYLE_CHILDREN,
-       ACL_STYLE_ATTROF
+       ACL_STYLE_ATTROF,
+       ACL_STYLE_IP,
+       ACL_STYLE_PATH
 } slap_style_t;
 
 typedef struct slap_authz_info {
@@ -1169,6 +1172,10 @@ typedef struct slap_access {
 
        slap_style_t a_peername_style;
        struct berval   a_peername_pat;
+       unsigned long   a_peername_addr,
+                       a_peername_mask;
+       int             a_peername_port;
+
        slap_style_t a_sockname_style;
        struct berval   a_sockname_pat;
 
@@ -1529,7 +1536,7 @@ struct slap_backend_db {
        void    *be_private;    /* anything the backend database needs     */
 
        void    *be_pb;         /* Netscape plugin */
-       LDAP_TAILQ_HEAD( pcl, slap_csn_entry )  be_pending_csn_list;
+       LDAP_TAILQ_HEAD( be_pcl, slap_csn_entry )       be_pending_csn_list;
        ldap_pvt_thread_mutex_t                                 be_pcl_mutex;
        struct berval                                                   be_context_csn;
        ldap_pvt_thread_mutex_t                                 be_context_csn_mutex;
@@ -1568,6 +1575,8 @@ typedef struct req_search_s {
        int rs_deref;
        int rs_slimit;
        int rs_tlimit;
+       /* NULL means be_isroot evaluated to TRUE */
+       struct slap_limits_set *rs_limit;
        int rs_attrsonly;
        AttributeName *rs_attrs;
        Filter *rs_filter;
@@ -1603,6 +1612,14 @@ typedef struct req_extended_s {
        struct berval *rs_reqdata;
 } req_extended_s;
 
+typedef struct req_pwdexop_s {
+       struct berval rs_reqoid;
+       struct berval rs_old;
+       struct berval rs_new;
+       Modifications *rs_mods;
+       Modifications **rs_modtail;
+} req_pwdexop_s;
+
 typedef enum slap_reply_e {
        REP_RESULT,
        REP_SASL,
@@ -1930,6 +1947,7 @@ typedef struct slap_op {
                req_abandon_s oq_abandon;
                req_abandon_s oq_cancel;
                req_extended_s oq_extended;
+               req_pwdexop_s oq_pwdexop;
        } o_request;
 
 /* short hands for union members */
@@ -1942,6 +1960,7 @@ typedef struct slap_op {
 #define oq_abandon o_request.oq_abandon
 #define oq_cancel o_request.oq_cancel
 #define oq_extended o_request.oq_extended
+#define oq_pwdexop o_request.oq_pwdexop
 
 /* short hands for inner request members */
 #define orb_method oq_bind.rb_method
@@ -1953,6 +1972,7 @@ typedef struct slap_op {
 #define ors_deref oq_search.rs_deref
 #define ors_slimit oq_search.rs_slimit
 #define ors_tlimit oq_search.rs_tlimit
+#define ors_limit oq_search.rs_limit
 #define ors_attrsonly oq_search.rs_attrsonly
 #define ors_attrs oq_search.rs_attrs
 #define ors_filter oq_search.rs_filter
@@ -2016,6 +2036,13 @@ typedef struct slap_op {
 #define get_domainScope(op)                            ((int)(op)->o_domain_scope)
 #else
 #define get_domainScope(op)                            (0)
+#endif
+
+#ifdef LDAP_CONTROL_X_TREE_DELETE
+       char o_tree_delete;
+#define get_treeDelete(op)                             ((int)(op)->o_tree_delete)
+#else
+#define get_treeDelete(op)                             (0)
 #endif
 
        char o_preread;
@@ -2119,6 +2146,7 @@ typedef struct slap_listener Listener;
 typedef struct slap_conn {
        int                     c_struct_state; /* structure management state */
        int                     c_conn_state;   /* connection state */
+       int                     c_conn_idx;             /* slot in connections array */
 
        ldap_pvt_thread_mutex_t c_mutex; /* protect the connection */
        Sockbuf         *c_sb;                  /* ber connection stuff           */
diff --git a/servers/slapd/slapadd.c b/servers/slapd/slapadd.c
new file mode 100644 (file)
index 0000000..4dd5957
--- /dev/null
@@ -0,0 +1,698 @@
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Portions Copyright 1998-2003 Kurt D. Zeilenga.
+ * Portions Copyright 2003 IBM Corporation.
+ * 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 in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Kurt Zeilenga for inclusion
+ * in OpenLDAP Software.  Additional signficant contributors include
+ *    Jong Hyuk Choi
+ *    Pierangelo Masarati
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/stdlib.h>
+
+#include <ac/ctype.h>
+#include <ac/string.h>
+#include <ac/socket.h>
+#include <ac/unistd.h>
+
+#include <lber.h>
+#include <ldif.h>
+#include <lutil.h>
+
+#include "slapcommon.h"
+
+static char csnbuf[ LDAP_LUTIL_CSNSTR_BUFSIZE ];
+static const struct berval slap_syncrepl_bvc = BER_BVC("syncreplxxx");
+static const struct berval slap_syncrepl_cn_bvc = BER_BVC("cn=syncreplxxx");
+static struct berval slap_syncrepl_bv = BER_BVNULL;
+static struct berval slap_syncrepl_cn_bv = BER_BVNULL;
+
+struct subentryinfo {
+       struct berval cn;
+       struct berval ndn;
+       struct berval rdn;
+       struct berval cookie;
+       LDAP_SLIST_ENTRY( subentryinfo ) sei_next;
+};
+
+int
+slapadd( int argc, char **argv )
+{
+       char            *buf = NULL;
+       int         lineno;
+       int         lmax;
+       int                     rc = EXIT_SUCCESS;
+
+       const char *text;
+       char textbuf[SLAP_TEXT_BUFLEN] = { '\0' };
+       size_t textlen = sizeof textbuf;
+       const char *progname = "slapadd";
+
+       struct berval csn;
+       struct berval maxcsn = { 0, NULL };
+       struct berval ldifcsn = { 0, NULL };
+       int match;
+       int     provider_subentry = 0;
+       struct subentryinfo *sei;
+       LDAP_SLIST_HEAD( consumer_subentry_slist, subentryinfo ) consumer_subentry;
+       Attribute *attr;
+       Entry *ctxcsn_e;
+       ID      ctxcsn_id;
+       struct berval   ctxcsn_ndn = { 0, NULL };
+       int ret;
+       struct berval bvtext;
+       int i;
+       struct berval mc;
+       struct sync_cookie sc;
+#ifdef NEW_LOGGING
+       lutil_log_initialize(argc, argv );
+#endif
+       slap_tool_init( progname, SLAPADD, argc, argv );
+
+       LDAP_SLIST_INIT( &consumer_subentry );
+
+       if( !be->be_entry_open ||
+               !be->be_entry_close ||
+               !be->be_entry_put )
+       {
+               fprintf( stderr, "%s: database doesn't support necessary operations.\n",
+                       progname );
+               exit( EXIT_FAILURE );
+       }
+
+       lmax = 0;
+       lineno = 0;
+
+       if( be->be_entry_open( be, 1 ) != 0 ) {
+               fprintf( stderr, "%s: could not open database.\n",
+                       progname );
+               exit( EXIT_FAILURE );
+       }
+
+       while( ldif_read_record( ldiffp, &lineno, &buf, &lmax ) ) {
+               Entry *e = str2entry( buf );
+
+               /*
+                * Initialize text buffer
+                */
+               bvtext.bv_len = textlen;
+               bvtext.bv_val = textbuf;
+               bvtext.bv_val[0] = '\0';
+
+               if( e == NULL ) {
+                       fprintf( stderr, "%s: could not parse entry (line=%d)\n",
+                               progname, lineno );
+                       rc = EXIT_FAILURE;
+                       if( continuemode ) continue;
+                       break;
+               }
+
+               /* make sure the DN is not empty */
+               if( !e->e_nname.bv_len ) {
+                       fprintf( stderr, "%s: empty dn=\"%s\" (line=%d)\n",
+                               progname, e->e_dn, lineno );
+                       rc = EXIT_FAILURE;
+                       entry_free( e );
+                       if( continuemode ) continue;
+                       break;
+               }
+
+               /* check backend */
+               if( select_backend( &e->e_nname, is_entry_referral(e), nosubordinates )
+                       != be )
+               {
+                       fprintf( stderr, "%s: line %d: "
+                               "database (%s) not configured to hold \"%s\"\n",
+                               progname, lineno,
+                               be ? be->be_suffix[0].bv_val : "<none>",
+                               e->e_dn );
+                       fprintf( stderr, "%s: line %d: "
+                               "database (%s) not configured to hold \"%s\"\n",
+                               progname, lineno,
+                               be ? be->be_nsuffix[0].bv_val : "<none>",
+                               e->e_ndn );
+                       rc = EXIT_FAILURE;
+                       entry_free( e );
+                       if( continuemode ) continue;
+                       break;
+               }
+
+               if( global_schemacheck ) {
+                       Attribute *sc = attr_find( e->e_attrs,
+                               slap_schema.si_ad_structuralObjectClass );
+                       Attribute *oc = attr_find( e->e_attrs,
+                               slap_schema.si_ad_objectClass );
+
+                       if( oc == NULL ) {
+                               fprintf( stderr, "%s: dn=\"%s\" (line=%d): %s\n",
+                                       progname, e->e_dn, lineno,
+                                       "no objectClass attribute");
+                               rc = EXIT_FAILURE;
+                               entry_free( e );
+                               if( continuemode ) continue;
+                               break;
+                       }
+
+                       if( sc == NULL ) {
+                               struct berval vals[2];
+
+                               rc = structural_class( oc->a_vals, vals,
+                                       NULL, &text, textbuf, textlen );
+
+                               if( rc != LDAP_SUCCESS ) {
+                                       fprintf( stderr, "%s: dn=\"%s\" (line=%d): (%d) %s\n",
+                                               progname, e->e_dn, lineno, rc, text );
+                                       rc = EXIT_FAILURE;
+                                       entry_free( e );
+                                       if( continuemode ) continue;
+                                       break;
+                               }
+
+                               vals[1].bv_len = 0;
+                               vals[1].bv_val = NULL;
+
+                               attr_merge( e, slap_schema.si_ad_structuralObjectClass,
+                                       vals, NULL /* FIXME */ );
+                       }
+
+                       /* check schema */
+                       rc = entry_schema_check( be, e, NULL, &text, textbuf, textlen );
+
+                       if( rc != LDAP_SUCCESS ) {
+                               fprintf( stderr, "%s: dn=\"%s\" (line=%d): (%d) %s\n",
+                                       progname, e->e_dn, lineno, rc, text );
+                               rc = EXIT_FAILURE;
+                               entry_free( e );
+                               if( continuemode ) continue;
+                               break;
+                       }
+               }
+
+               if ( SLAP_LASTMOD(be) ) {
+                       struct tm *ltm;
+                       time_t now = slap_get_time();
+                       char uuidbuf[ LDAP_LUTIL_UUIDSTR_BUFSIZE ];
+                       struct berval vals[ 2 ];
+
+                       struct berval name, timestamp;
+
+                       struct berval nvals[ 2 ];
+                       struct berval nname;
+                       char timebuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
+
+                       vals[1].bv_len = 0;
+                       vals[1].bv_val = NULL;
+
+                       nvals[1].bv_len = 0;
+                       nvals[1].bv_val = NULL;
+
+                       ltm = gmtime(&now);
+                       lutil_gentime( timebuf, sizeof(timebuf), ltm );
+
+                       csn.bv_len = lutil_csnstr( csnbuf, sizeof( csnbuf ), 0, 0 );
+                       csn.bv_val = csnbuf;
+
+                       timestamp.bv_val = timebuf;
+                       timestamp.bv_len = strlen(timebuf);
+
+                       if ( be->be_rootndn.bv_len == 0 ) {
+                               name.bv_val = SLAPD_ANONYMOUS;
+                               name.bv_len = sizeof(SLAPD_ANONYMOUS) - 1;
+                               nname.bv_val = SLAPD_ANONYMOUS;
+                               nname.bv_len = sizeof(SLAPD_ANONYMOUS) - 1;
+                       } else {
+                               name = be->be_rootdn;
+                               nname = be->be_rootndn;
+                       }
+
+                       if( attr_find( e->e_attrs, slap_schema.si_ad_entryUUID )
+                               == NULL )
+                       {
+                               vals[0].bv_len = lutil_uuidstr( uuidbuf, sizeof( uuidbuf ) );
+                               vals[0].bv_val = uuidbuf;
+                               attr_merge_normalize_one( e,
+                                                       slap_schema.si_ad_entryUUID, vals, NULL );
+                       }
+
+                       if( attr_find( e->e_attrs, slap_schema.si_ad_creatorsName )
+                               == NULL )
+                       {
+                               vals[0] = name;
+                               nvals[0] = nname;
+                               attr_merge( e, slap_schema.si_ad_creatorsName, vals, nvals );
+                       }
+
+                       if( attr_find( e->e_attrs, slap_schema.si_ad_modifiersName )
+                               == NULL )
+                       {
+                               vals[0] = name;
+                               nvals[0] = nname;
+                               attr_merge( e, slap_schema.si_ad_modifiersName, vals, nvals );
+                       }
+
+                       if( attr_find( e->e_attrs, slap_schema.si_ad_createTimestamp )
+                               == NULL )
+                       {
+                               vals[0] = timestamp;
+                               attr_merge( e, slap_schema.si_ad_createTimestamp, vals, NULL );
+                       }
+
+                       if( attr_find( e->e_attrs, slap_schema.si_ad_modifyTimestamp )
+                               == NULL )
+                       {
+                               vals[0] = timestamp;
+                               attr_merge( e, slap_schema.si_ad_modifyTimestamp, vals, NULL );
+                       }
+
+                       if( attr_find( e->e_attrs, slap_schema.si_ad_entryCSN )
+                               == NULL )
+                       {
+                               vals[0] = csn;
+                               attr_merge( e, slap_schema.si_ad_entryCSN, vals, NULL );
+                       }
+
+                       if ( !is_entry_syncProviderSubentry( e ) &&
+                                !is_entry_syncConsumerSubentry( e ) &&
+                                update_ctxcsn != SLAP_TOOL_CTXCSN_KEEP ) {
+                               attr = attr_find( e->e_attrs, slap_schema.si_ad_entryCSN );
+                               if ( maxcsn.bv_len != 0 ) {
+                                       value_match( &match, slap_schema.si_ad_entryCSN,
+                                               slap_schema.si_ad_entryCSN->ad_type->sat_ordering,
+                                               SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
+                                               &maxcsn, &attr->a_nvals[0], &text );
+                               } else {
+                                       match = -1;
+                               }
+                               if ( match < 0 ) {
+                                       if ( maxcsn.bv_val )
+                                               ch_free( maxcsn.bv_val );
+                                       ber_dupbv( &maxcsn, &attr->a_nvals[0] );
+                               }
+                       }
+               }
+
+               if ( update_ctxcsn == SLAP_TOOL_CTXCSN_KEEP ) {
+                       if ( is_entry_syncProviderSubentry( e )) { 
+                               if ( !LDAP_SLIST_EMPTY( &consumer_subentry )) {
+                                       fprintf( stderr, "%s: consumer and provider subentries "
+                                                                        "are both present\n", progname );
+                                       rc = EXIT_FAILURE;
+                                       entry_free( e );
+                                       sei = LDAP_SLIST_FIRST( &consumer_subentry );
+                                       while ( sei ) {
+                                               ch_free( sei->cn.bv_val );
+                                               ch_free( sei->ndn.bv_val );
+                                               ch_free( sei->rdn.bv_val );
+                                               ch_free( sei->cookie.bv_val );
+                                               LDAP_SLIST_REMOVE_HEAD( &consumer_subentry, sei_next );
+                                               ch_free( sei );
+                                               sei = LDAP_SLIST_FIRST( &consumer_subentry );
+                                       }
+                                       break;
+                               }
+                               if ( provider_subentry ) {
+                                       fprintf( stderr, "%s: multiple provider subentries are "
+                                                       "present : add -w flag to refresh\n", progname );
+                                       rc = EXIT_FAILURE;
+                                       entry_free( e );
+                                       break;
+                               }
+                               attr = attr_find( e->e_attrs, slap_schema.si_ad_contextCSN );
+                               if ( attr == NULL ) {
+                                       entry_free( e );
+                                       continue;
+                               }
+                               provider_subentry = 1;
+                               ber_dupbv( &maxcsn, &attr->a_nvals[0] );
+                       } else if ( is_entry_syncConsumerSubentry( e )) {
+                               if ( provider_subentry ) {
+                                       fprintf( stderr, "%s: consumer and provider subentries "
+                                                                        "are both present\n", progname );
+                                       rc = EXIT_FAILURE;
+                                       entry_free( e );
+                                       break;
+                               }
+
+                               attr = attr_find( e->e_attrs, slap_schema.si_ad_cn );
+
+                               if ( attr == NULL ) {
+                                       entry_free( e );
+                                       continue;
+                               }
+
+                               if ( !LDAP_SLIST_EMPTY( &consumer_subentry )) {
+                                       LDAP_SLIST_FOREACH( sei, &consumer_subentry, sei_next ) {
+                                               value_match( &match, slap_schema.si_ad_cn,
+                                                       slap_schema.si_ad_cn->ad_type->sat_equality,
+                                                       SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
+                                                       &sei->cn, &attr->a_nvals[0], &text );
+                                       }
+                                       if ( !match ) {
+                                               fprintf( stderr, "%s: multiple consumer subentries "
+                                                               "have the same id : add -w flag to refresh\n",
+                                                               progname );
+                                               rc = EXIT_FAILURE;
+                                               entry_free( e );
+                                               sei = LDAP_SLIST_FIRST( &consumer_subentry );
+                                               while ( sei ) {
+                                                       ch_free( sei->cn.bv_val );
+                                                       ch_free( sei->ndn.bv_val );
+                                                       ch_free( sei->rdn.bv_val );
+                                                       ch_free( sei->cookie.bv_val );
+                                                       LDAP_SLIST_REMOVE_HEAD( &consumer_subentry, sei_next );
+                                                       ch_free( sei );
+                                                       sei = LDAP_SLIST_FIRST( &consumer_subentry );
+                                               }
+                                               break;
+                                       }
+                               }
+                               sei = ch_calloc( 1, sizeof( struct subentryinfo ));
+                               ber_dupbv( &sei->cn, &attr->a_nvals[0] );
+                               ber_dupbv( &sei->ndn, &e->e_nname );
+                               dnExtractRdn( &sei->ndn, &sei->rdn, NULL );
+                               attr = attr_find( e->e_attrs, slap_schema.si_ad_syncreplCookie );
+                               if ( attr == NULL ) {
+                                       ch_free( sei->cn.bv_val );
+                                       ch_free( sei->ndn.bv_val );
+                                       ch_free( sei->rdn.bv_val );
+                                       ch_free( sei->cookie.bv_val );
+                                       ch_free( sei );
+                                       entry_free( e );
+                                       continue;
+                               }
+                               ber_dupbv( &sei->cookie, &attr->a_nvals[0] );
+                               LDAP_SLIST_INSERT_HEAD( &consumer_subentry, sei, sei_next );
+                       }
+               }
+
+               if ( !is_entry_syncProviderSubentry( e ) &&
+                        !is_entry_syncConsumerSubentry( e )) {
+                       if (!dryrun) {
+                               ID id = be->be_entry_put( be, e, &bvtext );
+                               if( id == NOID ) {
+                                       fprintf( stderr, "%s: could not add entry dn=\"%s\" "
+                                                                        "(line=%d): %s\n", progname, e->e_dn,
+                                                                        lineno, bvtext.bv_val );
+                                       rc = EXIT_FAILURE;
+                                       entry_free( e );
+                                       if( continuemode ) continue;
+                                       break;
+                               }
+       
+                               if ( verbose ) {
+                                       fprintf( stderr, "added: \"%s\" (%08lx)\n",
+                                               e->e_dn, (long) id );
+                               }
+                       } else {
+                               if ( verbose ) {
+                                       fprintf( stderr, "(dry) added: \"%s\"\n", e->e_dn );
+                               }
+                       }
+               }
+
+               entry_free( e );
+       }
+
+       bvtext.bv_len = textlen;
+       bvtext.bv_val = textbuf;
+       bvtext.bv_val[0] = '\0';
+
+       if ( !LDAP_SLIST_EMPTY( &consumer_subentry )) {
+               maxcsn.bv_len = 0;
+               maxcsn.bv_val = NULL;
+               LDAP_SLIST_FOREACH( sei, &consumer_subentry, sei_next ) {
+                       sc.octet_str = &sei->cookie;
+                       slap_parse_sync_cookie( &sc );
+                       if ( maxcsn.bv_len != 0 ) {
+                               value_match( &match, slap_schema.si_ad_syncreplCookie,
+                                       slap_schema.si_ad_syncreplCookie->ad_type->sat_ordering,
+                                       SLAP_MR_VALUE_OF_ATTRIBUTE_SYNTAX,
+                                       &maxcsn, &sc.ctxcsn[0], &text );
+                       } else {
+                               match = -1;
+                       }
+                       if ( match < 0 ) {
+                               if ( maxcsn.bv_val )
+                                       ch_free( maxcsn.bv_val );
+                               ber_dupbv( &maxcsn, &sc.ctxcsn[0] );
+                       }
+                       sc.octet_str = NULL;
+                       slap_sync_cookie_free( &sc, 0 );
+               }
+       }
+
+       slap_compose_sync_cookie( NULL, &mc, &maxcsn, -1, -1 );
+
+       if ( SLAP_LASTMOD(be) && replica_promotion ) {
+               if ( provider_subentry || update_ctxcsn == SLAP_TOOL_CTXCSN_BATCH ||
+                        !LDAP_SLIST_EMPTY( &consumer_subentry )) {
+                       build_new_dn( &ctxcsn_ndn, &be->be_nsuffix[0],
+                                                 (struct berval *)&slap_ldapsync_cn_bv, NULL );
+                       ctxcsn_id = be->be_dn2id_get( be, &ctxcsn_ndn );
+               
+                       if ( ctxcsn_id == NOID ) {
+                               ctxcsn_e = slap_create_context_csn_entry( be, &maxcsn );
+                               if ( !dryrun ) {
+                                       ctxcsn_id = be->be_entry_put( be, ctxcsn_e, &bvtext );
+                                       if( ctxcsn_id == NOID ) {
+                                               fprintf( stderr, "%s: could not add ctxcsn subentry\n",
+                                                                                progname);
+                                               rc = EXIT_FAILURE;
+                                       }
+                                       if ( verbose ) {
+                                               fprintf( stderr, "added: \"%s\" (%08lx)\n",
+                                                                                ctxcsn_e->e_dn, (long) ctxcsn_id );
+                                       }
+                               } else {
+                                       if ( verbose ) {
+                                               fprintf( stderr, "(dry) added: \"%s\"\n", ctxcsn_e->e_dn );
+                                       }
+                               }
+                               entry_free( ctxcsn_e );
+                       } else {
+                               ret = be->be_id2entry_get( be, ctxcsn_id, &ctxcsn_e );
+                               if ( ret == LDAP_SUCCESS ) {
+                                       attr = attr_find( ctxcsn_e->e_attrs,
+                                                                               slap_schema.si_ad_contextCSN );
+                                       AC_MEMCPY( attr->a_vals[0].bv_val, maxcsn.bv_val, maxcsn.bv_len );
+                                       attr->a_vals[0].bv_val[maxcsn.bv_len] = '\0';
+                                       attr->a_vals[0].bv_len = maxcsn.bv_len;
+                                       if ( !dryrun ) {
+                                               ctxcsn_id = be->be_entry_modify( be, ctxcsn_e, &bvtext );
+                                               if( ctxcsn_id == NOID ) {
+                                                       fprintf( stderr, "%s: could not modify ctxcsn "
+                                                                                        "subentry\n", progname);
+                                                       rc = EXIT_FAILURE;
+                                               }
+                                               if ( verbose ) {
+                                                       fprintf( stderr, "modified: \"%s\" (%08lx)\n",
+                                                                                        ctxcsn_e->e_dn, (long) ctxcsn_id );
+                                               }
+                                       } else {
+                                               if ( verbose ) {
+                                                       fprintf( stderr, "(dry) modified: \"%s\"\n",
+                                                                                        ctxcsn_e->e_dn );
+                                               }
+                                       }
+                               } else {
+                                       fprintf( stderr, "%s: could not modify ctxcsn subentry\n",
+                                                                        progname);
+                                       rc = EXIT_FAILURE;
+                               }
+                       }
+               } 
+       } else if ( SLAP_LASTMOD(be) && replica_demotion &&
+                               ( update_ctxcsn == SLAP_TOOL_CTXCSN_BATCH ||
+                               provider_subentry )) {
+
+               ber_dupbv( &slap_syncrepl_bv, (struct berval *) &slap_syncrepl_bvc );
+               ber_dupbv( &slap_syncrepl_cn_bv,
+                                       (struct berval *) &slap_syncrepl_cn_bvc );
+
+               if ( replica_id_list == NULL ) {
+                       replica_id_list = ch_calloc( 2, sizeof( int ));
+                       replica_id_list[0] = 0;
+                       replica_id_list[1] = -1;
+               }
+
+               for ( i = 0; replica_id_list[i] > -1 ; i++ ) {
+                       slap_syncrepl_bv.bv_len = snprintf( slap_syncrepl_bv.bv_val,
+                                                                       slap_syncrepl_bvc.bv_len,
+                                                                       "syncrepl%d", replica_id_list[i] );
+                       slap_syncrepl_cn_bv.bv_len = snprintf( slap_syncrepl_cn_bv.bv_val,
+                                                                               slap_syncrepl_cn_bvc.bv_len,
+                                                                               "cn=syncrepl%d", replica_id_list[i] );
+                       build_new_dn( &ctxcsn_ndn, &be->be_nsuffix[0],
+                                                 (struct berval *)&slap_syncrepl_cn_bv, NULL );
+                       ctxcsn_id = be->be_dn2id_get( be, &ctxcsn_ndn );
+
+                       if ( ctxcsn_id == NOID ) {
+                               ctxcsn_e = slap_create_syncrepl_entry( be, &mc,
+                                                                                               &slap_syncrepl_cn_bv,
+                                                                                               &slap_syncrepl_bv );
+                               if ( !dryrun ) {
+                                       ctxcsn_id = be->be_entry_put( be, ctxcsn_e, &bvtext );
+                                       if( ctxcsn_id == NOID ) {
+                                               fprintf( stderr, "%s: could not add ctxcsn subentry\n",
+                                                                                progname);
+                                               rc = EXIT_FAILURE;
+                                       }
+                                       if ( verbose ) {
+                                               fprintf( stderr, "added: \"%s\" (%08lx)\n",
+                                                                                ctxcsn_e->e_dn, (long) ctxcsn_id );
+                                       }
+                               } else {
+                                       if ( verbose ) {
+                                               fprintf( stderr, "(dry) added: \"%s\"\n",
+                                                                                       ctxcsn_e->e_dn );
+                                       }
+                               }
+                               entry_free( ctxcsn_e );
+                       } else {
+                               ret = be->be_id2entry_get( be, ctxcsn_id, &ctxcsn_e );
+                               if ( ret == LDAP_SUCCESS ) {
+                                       attr = attr_find( ctxcsn_e->e_attrs,
+                                                                         slap_schema.si_ad_syncreplCookie );
+                                       AC_MEMCPY( attr->a_vals[0].bv_val, mc.bv_val, mc.bv_len );
+                                       attr->a_vals[0].bv_val[maxcsn.bv_len] = '\0';
+                                       attr->a_vals[0].bv_len = maxcsn.bv_len;
+                                       if ( !dryrun ) {
+                                               ctxcsn_id = be->be_entry_modify( be,
+                                                                                       ctxcsn_e, &bvtext );
+                                               if( ctxcsn_id == NOID ) {
+                                                       fprintf( stderr, "%s: could not modify ctxcsn "
+                                                                                        "subentry\n", progname);
+                                                       rc = EXIT_FAILURE;
+                                               }
+                                               if ( verbose ) {
+                                                       fprintf( stderr, "modified: \"%s\" (%08lx)\n",
+                                                                                        ctxcsn_e->e_dn, (long) ctxcsn_id );
+                                               }
+                                       } else {
+                                               if ( verbose ) {
+                                                       fprintf( stderr, "(dry) modified: \"%s\"\n",
+                                                                                        ctxcsn_e->e_dn );
+                                               }
+                                       }
+                               } else {
+                                       fprintf( stderr, "%s: could not modify ctxcsn subentry\n",
+                                                                        progname);
+                                       rc = EXIT_FAILURE;
+                               }
+                       }
+               }
+               
+               if ( slap_syncrepl_bv.bv_val ) {
+                       ch_free( slap_syncrepl_bv.bv_val );
+               }
+               if ( slap_syncrepl_cn_bv.bv_val ) {
+                       ch_free( slap_syncrepl_cn_bv.bv_val );
+               }
+       } else if ( SLAP_LASTMOD(be) && replica_demotion &&
+                               !LDAP_SLIST_EMPTY( &consumer_subentry )) {
+
+               LDAP_SLIST_FOREACH( sei, &consumer_subentry, sei_next ) {
+                       ctxcsn_id = be->be_dn2id_get( be, &sei->ndn );
+
+                       if ( ctxcsn_id == NOID ) {
+                               ctxcsn_e = slap_create_syncrepl_entry( be, &sei->cookie,
+                                                                                               &sei->rdn, &sei->cn );
+                               if ( !dryrun ) {
+                                       ctxcsn_id = be->be_entry_put( be, ctxcsn_e, &bvtext );
+                                       if( ctxcsn_id == NOID ) {
+                                               fprintf( stderr, "%s: could not add ctxcsn subentry\n",
+                                                                                progname);
+                                               rc = EXIT_FAILURE;
+                                       }
+                                       if ( verbose ) {
+                                               fprintf( stderr, "added: \"%s\" (%08lx)\n",
+                                                                                ctxcsn_e->e_dn, (long) ctxcsn_id );
+                                       }
+                               } else {
+                                       if ( verbose ) {
+                                               fprintf( stderr, "(dry) added: \"%s\"\n",
+                                                                                       ctxcsn_e->e_dn );
+                                       }
+                               }
+                               entry_free( ctxcsn_e );
+                       } else {
+                               ret = be->be_id2entry_get( be, ctxcsn_id, &ctxcsn_e );
+                               if ( ret == LDAP_SUCCESS ) {
+                                       attr = attr_find( ctxcsn_e->e_attrs,
+                                                                         slap_schema.si_ad_syncreplCookie );
+                                       AC_MEMCPY( attr->a_vals[0].bv_val, sei->cookie.bv_val, sei->cookie.bv_len );
+                                       attr->a_vals[0].bv_val[sei->cookie.bv_len] = '\0';
+                                       attr->a_vals[0].bv_len = sei->cookie.bv_len;
+                                       if ( !dryrun ) {
+                                               ctxcsn_id = be->be_entry_modify( be,
+                                                                                       ctxcsn_e, &bvtext );
+                                               if( ctxcsn_id == NOID ) {
+                                                       fprintf( stderr, "%s: could not modify ctxcsn "
+                                                                                        "subentry\n", progname);
+                                                       rc = EXIT_FAILURE;
+                                               }
+                                               if ( verbose ) {
+                                                       fprintf( stderr, "modified: \"%s\" (%08lx)\n",
+                                                                                        ctxcsn_e->e_dn, (long) ctxcsn_id );
+                                               }
+                                       } else {
+                                               if ( verbose ) {
+                                                       fprintf( stderr, "(dry) modified: \"%s\"\n",
+                                                                                        ctxcsn_e->e_dn );
+                                               }
+                                       }
+                               } else {
+                                       fprintf( stderr, "%s: could not modify ctxcsn subentry\n",
+                                                                        progname);
+                                       rc = EXIT_FAILURE;
+                               }
+                       }
+               }
+               
+               if ( slap_syncrepl_bv.bv_val ) {
+                       ch_free( slap_syncrepl_bv.bv_val );
+               }
+               if ( slap_syncrepl_cn_bv.bv_val ) {
+                       ch_free( slap_syncrepl_cn_bv.bv_val );
+               }
+       }
+
+       sei = LDAP_SLIST_FIRST( &consumer_subentry );
+       while ( sei ) {
+               ch_free( sei->cn.bv_val );
+               ch_free( sei->ndn.bv_val );
+               ch_free( sei->rdn.bv_val );
+               ch_free( sei->cookie.bv_val );
+               LDAP_SLIST_REMOVE_HEAD( &consumer_subentry, sei_next );
+               ch_free( sei );
+               sei = LDAP_SLIST_FIRST( &consumer_subentry );
+       }
+
+       ch_free( buf );
+
+       if( be->be_entry_close( be )) rc = EXIT_FAILURE;
+
+       if( be->be_sync ) {
+               be->be_sync( be );
+       }
+
+       slap_tool_destroy();
+       return rc;
+}
diff --git a/servers/slapd/slapcat.c b/servers/slapd/slapcat.c
new file mode 100644 (file)
index 0000000..665ee15
--- /dev/null
@@ -0,0 +1,118 @@
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Portions Copyright 1998-2003 Kurt D. Zeilenga.
+ * Portions Copyright 2003 IBM Corporation.
+ * 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 in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Kurt Zeilenga for inclusion
+ * in OpenLDAP Software.  Additional signficant contributors include
+ *    Jong Hyuk Choi
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/stdlib.h>
+#include <ac/ctype.h>
+#include <ac/socket.h>
+#include <ac/string.h>
+
+#include "slapcommon.h"
+
+int
+slapcat( int argc, char **argv )
+{
+       ID id;
+       int rc = EXIT_SUCCESS;
+       Operation op = {0};
+       const char *progname = "slapcat";
+
+       slap_tool_init( progname, SLAPCAT, argc, argv );
+
+       if( !be->be_entry_open ||
+               !be->be_entry_close ||
+               !be->be_entry_first ||
+               !be->be_entry_next ||
+               !be->be_entry_get )
+       {
+               fprintf( stderr, "%s: database doesn't support necessary operations.\n",
+                       progname );
+               exit( EXIT_FAILURE );
+       }
+
+       if( be->be_entry_open( be, 0 ) != 0 ) {
+               fprintf( stderr, "%s: could not open database.\n",
+                       progname );
+               exit( EXIT_FAILURE );
+       }
+
+       for ( id = be->be_entry_first( be );
+               id != NOID;
+               id = be->be_entry_next( be ) )
+       {
+               char *data;
+               int len;
+               Entry* e = be->be_entry_get( be, id );
+               op.o_bd = be;
+
+               if ( e == NULL ) {
+                       printf("# no data for entry id=%08lx\n\n", (long) id );
+                       rc = EXIT_FAILURE;
+                       if( continuemode ) continue;
+                       break;
+               }
+
+               if( sub_ndn.bv_len && !dnIsSuffix( &e->e_nname, &sub_ndn ) ) {
+                       be_entry_release_r( &op, e );
+                       continue;
+               }
+
+               if ( retrieve_ctxcsn == 0 ) {
+                       if ( is_entry_syncProviderSubentry( e ) ) {
+                               be_entry_release_r( &op, e );
+                               continue;
+                       }
+               }
+
+               if ( retrieve_synccookie == 0 ) {
+                       if ( is_entry_syncConsumerSubentry( e ) ) {
+                               be_entry_release_r( &op, e );
+                               continue;
+                       }
+               }
+
+               if( verbose ) {
+                       printf( "# id=%08lx\n", (long) id );
+               }
+
+               data = entry2str( e, &len );
+               be_entry_release_r( &op, e );
+
+               if ( data == NULL ) {
+                       printf("# bad data for entry id=%08lx\n\n", (long) id );
+                       rc = EXIT_FAILURE;
+                       if( continuemode ) continue;
+                       break;
+               }
+
+               fputs( data, ldiffp );
+               fputs( "\n", ldiffp );
+       }
+
+       be->be_entry_close( be );
+
+       slap_tool_destroy();
+       return rc;
+}
diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c
new file mode 100644 (file)
index 0000000..9db0214
--- /dev/null
@@ -0,0 +1,421 @@
+/* slapcommon.c - common routine for the slap tools */
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Portions Copyright 1998-2003 Kurt D. Zeilenga.
+ * Portions Copyright 2003 IBM Corporation.
+ * 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 in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Kurt Zeilenga for inclusion
+ * in OpenLDAP Software.  Additional signficant contributors include
+ *    Jong Hyuk Choi
+ *    Hallvard B. Furuseth
+ *    Howard Chu
+ *    Pierangelo Masarati
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/stdlib.h>
+#include <ac/ctype.h>
+#include <ac/string.h>
+#include <ac/socket.h>
+#include <ac/unistd.h>
+
+#include "slapcommon.h"
+#include "lutil.h"
+
+tool_vars tool_globals;
+
+#ifdef CSRIMALLOC
+static char *leakfilename;
+static FILE *leakfile;
+#endif
+
+static void
+usage( int tool, const char *progname )
+{
+       char *options = NULL;
+       fprintf( stderr,
+               "usage: %s [-v] [-c] [-d debuglevel] [-f configfile]\n"
+                       "\t[-n databasenumber | -b suffix]", progname );
+
+       switch( tool ) {
+       case SLAPADD:
+               options = "\n\t[-l ldiffile] [-u] [-p [-w] | -r [-i syncreplidlist] [-w]]\n";
+               break;
+
+       case SLAPCAT:
+               options = "\t[-l ldiffile] [-m] [-k]\n";
+               break;
+
+       case SLAPINDEX:
+               options = "\n";
+               break;
+       }
+
+       if( options != NULL ) {
+               fputs( options, stderr );
+       }
+       exit( EXIT_FAILURE );
+}
+
+
+/*
+ * slap_tool_init - initialize slap utility, handle program options.
+ * arguments:
+ *     name            program name
+ *     tool            tool code
+ *     argc, argv      command line arguments
+ */
+
+void
+slap_tool_init(
+       const char* progname,
+       int tool,
+       int argc, char **argv )
+{
+       char *options;
+       char *conffile = SLAPD_DEFAULT_CONFIGFILE;
+       struct berval base = { 0, NULL };
+       char *subtree = NULL;
+       char *ldiffile  = NULL;
+       int rc, i, dbnum;
+       int mode = SLAP_TOOL_MODE;
+       int truncatemode = 0;
+
+#ifdef CSRIMALLOC
+       leakfilename = malloc( strlen( progname ) + sizeof(".leak") );
+       sprintf( leakfilename, "%s.leak", progname );
+       if( ( leakfile = fopen( leakfilename, "w" )) == NULL ) {
+               leakfile = stderr;
+       }
+       free( leakfilename );
+#endif
+
+       switch( tool ) {
+       case SLAPADD:
+               options = "b:cd:f:i:l:n:prtuvWw";
+               break;
+
+       case SLAPINDEX:
+               options = "b:cd:f:n:v";
+               mode |= SLAP_TOOL_READMAIN;
+               break;
+
+       case SLAPCAT:
+               options = "b:cd:f:kl:mn:s:v";
+               mode |= SLAP_TOOL_READMAIN | SLAP_TOOL_READONLY;
+               break;
+
+       default:
+               fprintf( stderr, "%s: unknown tool mode (%d)\n",
+                        progname, tool );
+               exit( EXIT_FAILURE );
+       }
+
+       dbnum = -1;
+       while ( (i = getopt( argc, argv, options )) != EOF ) {
+               switch ( i ) {
+               case 'b':
+                       base.bv_val = strdup( optarg );
+                       base.bv_len = strlen( base.bv_val );
+                       break;
+
+               case 'c':       /* enable continue mode */
+                       continuemode++;
+                       break;
+
+               case 'd':       /* turn on debugging */
+                       ldap_debug += atoi( optarg );
+                       break;
+
+               case 'f':       /* specify a conf file */
+                       conffile = strdup( optarg );
+                       break;
+
+               case 'i': /* specify syncrepl id list */
+                       replica_id_string = strdup( optarg );
+                       if ( !isdigit( (unsigned char) *replica_id_string )) {
+                               usage( tool, progname );
+                               exit( EXIT_FAILURE );
+                       }
+                       str2clist( &replica_id_strlist, replica_id_string, "," );
+                       for ( i = 0; replica_id_strlist && replica_id_strlist[i]; i++ ) ;
+                       replica_id_list = ch_calloc( i + 1, sizeof( int ) );
+                       for ( i = 0; replica_id_strlist && replica_id_strlist[i]; i++ ) {
+                               replica_id_list[i] = atoi( replica_id_strlist[i] );
+                               if ( replica_id_list[i] >= 1000 ) {
+                                       fprintf(stderr,
+                                               "%s: syncrepl id %d is out of range [0..999]\n",
+                                               progname, replica_id_list[i] );
+                                       exit( EXIT_FAILURE );
+                               }
+                       }
+                       replica_id_list[i] = -1;
+                       break;
+
+               case 'k':       /* Retrieve sync cookie entry */
+                       retrieve_synccookie = 1;
+                       break;
+
+               case 'l':       /* LDIF file */
+                       ldiffile = strdup( optarg );
+                       break;
+
+               case 'm':       /* Retrieve ldapsync entry */
+                       retrieve_ctxcsn = 1;
+                       break;
+
+               case 'n':       /* which config file db to index */
+                       dbnum = atoi( optarg ) - 1;
+                       break;
+
+               case 'p':       /* replica promotion */
+                       replica_promotion = 1;          
+                       break;
+
+               case 'r':       /* replica demotion */
+                       replica_demotion = 1;           
+                       break;
+
+               case 's':       /* dump subtree */
+                       subtree = strdup( optarg );
+                       break;
+
+               case 't':       /* turn on truncate */
+                       truncatemode++;
+                       mode |= SLAP_TRUNCATE_MODE;
+                       break;
+
+               case 'u':       /* dry run */
+                       dryrun++;
+                       break;
+
+               case 'v':       /* turn on verbose */
+                       verbose++;
+                       break;
+
+               case 'W':       /* write context csn on every entry add */
+                       update_ctxcsn = SLAP_TOOL_CTXCSN_BATCH;
+                       /* FIXME : update_ctxcsn = SLAP_TOOL_CTXCSN_ENTRY; */
+                       break;
+
+               case 'w':       /* write context csn on at the end */
+                       update_ctxcsn = SLAP_TOOL_CTXCSN_BATCH;
+                       break;
+
+               default:
+                       usage( tool, progname );
+                       break;
+               }
+       }
+
+       if ( ( argc != optind ) || (dbnum >= 0 && base.bv_val != NULL ) ) {
+               usage( tool, progname );
+       }
+
+       if ( replica_promotion && replica_demotion ) {
+               usage( tool, progname );
+       } else if ( !replica_promotion && !replica_demotion ) {
+               if ( update_ctxcsn != SLAP_TOOL_CTXCSN_KEEP ) {
+                       usage( tool, progname );
+               }
+       }
+
+       if ( ldiffile == NULL ) {
+               ldiffp = tool == SLAPCAT ? stdout : stdin;
+
+       } else if( (ldiffp = fopen( ldiffile, tool == SLAPCAT ? "w" : "r" ))
+               == NULL )
+       {
+               perror( ldiffile );
+               exit( EXIT_FAILURE );
+       }
+
+       /*
+        * initialize stuff and figure out which backend we're dealing with
+        */
+
+#ifdef SLAPD_MODULES
+       if ( module_init() != 0 ) {
+               fprintf( stderr, "%s: module_init failed!\n", progname );
+               exit( EXIT_FAILURE );
+       }
+#endif
+               
+       rc = slap_init( mode, progname );
+
+       if ( rc != 0 ) {
+               fprintf( stderr, "%s: slap_init failed!\n", progname );
+               exit( EXIT_FAILURE );
+       }
+
+       rc = slap_schema_init();
+
+       if ( rc != 0 ) {
+               fprintf( stderr, "%s: slap_schema_init failed!\n", progname );
+               exit( EXIT_FAILURE );
+       }
+
+       rc = read_config( conffile, 0 );
+
+       if ( rc != 0 ) {
+               fprintf( stderr, "%s: bad configuration file!\n", progname );
+               exit( EXIT_FAILURE );
+       }
+
+       ldap_syslog = 0;
+
+       if ( !nbackends ) {
+               fprintf( stderr, "No databases found in config file\n" );
+               exit( EXIT_FAILURE );
+       }
+
+       rc = glue_sub_init();
+
+       if ( rc != 0 ) {
+               fprintf( stderr, "Subordinate configuration error\n" );
+               exit( EXIT_FAILURE );
+       }
+
+       rc = slap_schema_check();
+
+       if ( rc != 0 ) {
+               fprintf( stderr, "%s: slap_schema_prep failed!\n", progname );
+               exit( EXIT_FAILURE );
+       }
+
+       if( subtree ) {
+               struct berval val;
+               val.bv_val = subtree;
+               val.bv_len = strlen( subtree );
+               rc = dnNormalize( 0, NULL, NULL, &val, &sub_ndn, NULL );
+               if( rc != LDAP_SUCCESS ) {
+                       fprintf( stderr, "Invalid subtree DN '%s'\n", optarg );
+                       exit( EXIT_FAILURE );
+               }
+
+               if( base.bv_val == NULL && dbnum == -1 )
+                       base = val;
+               else
+                       free( subtree );
+       }
+
+       if( base.bv_val != NULL ) {
+               struct berval nbase;
+
+               rc = dnNormalize( 0, NULL, NULL, &base, &nbase, NULL );
+               if( rc != LDAP_SUCCESS ) {
+                       fprintf( stderr, "%s: slap_init invalid suffix (\"%s\")\n",
+                               progname, base.bv_val );
+                       exit( EXIT_FAILURE );
+               }
+
+               be = select_backend( &nbase, 0, 0 );
+               ber_memfree( nbase.bv_val );
+
+               if( be == NULL ) {
+                       fprintf( stderr, "%s: slap_init no backend for \"%s\"\n",
+                               progname, base.bv_val );
+                       exit( EXIT_FAILURE );
+               }
+               /* If the named base is a glue master, operate on the
+                * entire context
+                */
+               if (SLAP_GLUE_INSTANCE(be)) {
+                       nosubordinates = 1;
+               }
+
+       } else if ( dbnum == -1 ) {
+               if ( nbackends <= 0 ) {
+                       fprintf( stderr, "No available databases\n" );
+                       exit( EXIT_FAILURE );
+               }
+               
+               be = &backends[dbnum=0];
+               /* If just doing the first by default and it is a
+                * glue subordinate, find the master.
+                */
+               while (SLAP_GLUE_SUBORDINATE(be) || SLAP_MONITOR(be)) {
+                       if (SLAP_GLUE_SUBORDINATE(be)) {
+                               nosubordinates = 1;
+                       }
+                       be++;
+                       dbnum++;
+               }
+
+
+               if ( dbnum >= nbackends ) {
+                       fprintf( stderr, "Available database(s) "
+                                       "do not allow %s\n", progname );
+                       exit( EXIT_FAILURE );
+               }
+               
+               if ( nosubordinates == 0 && dbnum > 0 ) {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACKEND, ERR, 
+"The first database does not allow %s; using the first available one (%d)\n",
+                               progname, dbnum + 1, 0 );
+#else
+                       Debug( LDAP_DEBUG_ANY,
+"The first database does not allow %s; using the first available one (%d)\n",
+                               progname, dbnum + 1, 0 );
+#endif
+               }
+
+       } else if ( dbnum < 0 || dbnum > (nbackends-1) ) {
+               fprintf( stderr,
+                       "Database number selected via -n is out of range\n"
+                       "Must be in the range 1 to %d"
+                               " (number of databases in the config file)\n",
+                       nbackends );
+               exit( EXIT_FAILURE );
+
+       } else {
+               be = &backends[dbnum];
+       }
+
+#ifdef CSRIMALLOC
+       mal_leaktrace(1);
+#endif
+
+       if ( slap_startup( be ) ) {
+               fprintf( stderr, "slap_startup failed\n" );
+               exit( EXIT_FAILURE );
+       }
+}
+
+void slap_tool_destroy( void )
+{
+       slap_shutdown( be );
+       slap_destroy();
+#ifdef SLAPD_MODULES
+       if ( slapMode == SLAP_SERVER_MODE ) {
+       /* always false. just pulls in necessary symbol references. */
+               lutil_uuidstr(NULL, 0);
+       }
+       module_kill();
+#endif
+       schema_destroy();
+#ifdef HAVE_TLS
+       ldap_pvt_tls_destroy();
+#endif
+       config_destroy();
+
+#ifdef CSRIMALLOC
+       mal_dumpleaktrace( leakfile );
+#endif
+}
diff --git a/servers/slapd/slapcommon.h b/servers/slapd/slapcommon.h
new file mode 100644 (file)
index 0000000..fdeb68a
--- /dev/null
@@ -0,0 +1,77 @@
+/* slapcommon.h - common definitions for the slap tools */
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 The OpenLDAP Foundation.
+ * 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 in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+
+#ifndef SLAPCOMMON_H_
+#define SLAPCOMMON_H_ 1
+
+#define SLAPD_TOOLS 1
+#include "slap.h"
+
+enum slaptool {
+       SLAPADD=1,      /* LDIF -> database tool */
+       SLAPCAT,        /* database -> LDIF tool */
+       SLAPINDEX,      /* database index tool */
+       SLAPPASSWD      /* password generation tool */
+};
+
+#define SLAP_TOOL_CTXCSN_KEEP  0
+#define SLAP_TOOL_CTXCSN_ENTRY 1
+#define SLAP_TOOL_CTXCSN_BATCH 2
+
+typedef struct tool_vars {
+       Backend *tv_be;
+       int tv_verbose;
+       int tv_update_ctxcsn;
+       int tv_retrieve_ctxcsn;
+       int tv_retrieve_synccookie;
+       int tv_replica_promotion;
+       int tv_replica_demotion;
+       char    *tv_replica_id_string;
+       char    **tv_replica_id_strlist;
+       int     *tv_replica_id_list;
+       int tv_continuemode;
+       int tv_nosubordinates;
+       int tv_dryrun;
+       struct berval tv_sub_ndn;
+       FILE    *tv_ldiffp;
+} tool_vars;
+
+extern tool_vars tool_globals;
+
+#define        be tool_globals.tv_be
+#define verbose tool_globals.tv_verbose
+#define update_ctxcsn tool_globals.tv_update_ctxcsn
+#define retrieve_ctxcsn tool_globals.tv_retrieve_ctxcsn
+#define retrieve_synccookie tool_globals.tv_retrieve_synccookie
+#define replica_promotion tool_globals.tv_replica_promotion
+#define replica_demotion tool_globals.tv_replica_demotion
+#define replica_id_string tool_globals.tv_replica_id_string
+#define replica_id_strlist tool_globals.tv_replica_id_strlist
+#define replica_id_list tool_globals.tv_replica_id_list
+#define continuemode tool_globals.tv_continuemode
+#define nosubordinates tool_globals.tv_nosubordinates
+#define dryrun tool_globals.tv_dryrun
+#define sub_ndn tool_globals.tv_sub_ndn
+#define ldiffp tool_globals.tv_ldiffp
+
+void slap_tool_init LDAP_P((
+       const char* name,
+       int tool,
+       int argc, char **argv ));
+
+void slap_tool_destroy LDAP_P((void));
+
+#endif /* SLAPCOMMON_H_ */
index 08fde3f45d59a8fd6729d597162854632e8ffc37..33db0b1f66e4ec830b3a15ef2dc452bc777ee6a9 100644 (file)
@@ -25,7 +25,7 @@
 #ifndef _SLAPI_H
 #define _SLAPI_H
 
-#include <ibm_pblock_params.h> 
+#include "ibm_pblock_params.h"
 
 LDAP_BEGIN_DECL
 
index da0a017d9337303fd5e8b908cd66b862ea5c242d..503c2c014944a45d6b0293cfd01548992761324b 100644 (file)
@@ -321,8 +321,13 @@ set( Slapi_PBlock *pb, int param, void *val )
                LDAPControl **ctrls = pb->curVals[i];
                int j;
 
-               for (j=0; ctrls[j]; j++);
-               ctrls = ch_realloc( ctrls, (j+2)*sizeof(LDAPControl *) );
+               if ( ctrls ) {
+                       for (j=0; ctrls[j]; j++);
+                       ctrls = ch_realloc( ctrls, (j+2)*sizeof(LDAPControl *) );
+               } else {
+                       ctrls = ch_malloc( 2 * sizeof(LDAPControl *) );
+                       j = 0;
+               }
                ctrls[j] = val;
                ctrls[j+1] = NULL;
                pb->curVals[i] = ctrls;
diff --git a/servers/slapd/slapindex.c b/servers/slapd/slapindex.c
new file mode 100644 (file)
index 0000000..e9466c0
--- /dev/null
@@ -0,0 +1,83 @@
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Portions Copyright 1998-2003 Kurt D. Zeilenga.
+ * 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 in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Kurt Zeilenga for inclusion
+ * in OpenLDAP Software.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/stdlib.h>
+
+#include <ac/ctype.h>
+#include <ac/string.h>
+#include <ac/socket.h>
+#include <ac/unistd.h>
+
+#include "slapcommon.h"
+
+int
+slapindex( int argc, char **argv )
+{
+       ID id;
+       int rc = EXIT_SUCCESS;
+       const char *progname = "slapindex";
+
+       slap_tool_init( progname, SLAPINDEX, argc, argv );
+
+       if( !be->be_entry_open ||
+               !be->be_entry_close ||
+               !be->be_entry_first ||
+               !be->be_entry_next  ||
+               !be->be_entry_reindex )
+       {
+               fprintf( stderr, "%s: database doesn't support necessary operations.\n",
+                       progname );
+               exit( EXIT_FAILURE );
+       }
+
+       if( be->be_entry_open( be, 0 ) != 0 ) {
+               fprintf( stderr, "%s: could not open database.\n",
+                       progname );
+               exit( EXIT_FAILURE );
+       }
+
+       for ( id = be->be_entry_first( be );
+               id != NOID;
+               id = be->be_entry_next( be ) )
+       {
+               int rtn;
+
+               if( verbose ) {
+                       printf("indexing id=%08lx\n", (long) id );
+               }
+
+               rtn =  be->be_entry_reindex( be, id );
+
+               if( rtn != LDAP_SUCCESS ) {
+                       rc = EXIT_FAILURE;
+                       if( continuemode ) continue;
+                       break;
+               }
+       }
+
+       (void) be->be_entry_close( be );
+
+       slap_tool_destroy();
+       return( rc );
+}
diff --git a/servers/slapd/slappasswd.c b/servers/slapd/slappasswd.c
new file mode 100644 (file)
index 0000000..5057521
--- /dev/null
@@ -0,0 +1,150 @@
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Portions Copyright 1998-2003 Kurt D. Zeilenga.
+ * 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 in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Kurt Zeilenga for inclusion
+ * in OpenLDAP Software.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/stdlib.h>
+
+#include <ac/ctype.h>
+#include <ac/signal.h>
+#include <ac/socket.h>
+#include <ac/string.h>
+#include <ac/time.h>
+#include <ac/unistd.h>
+
+#include <ldap.h>
+#include <lutil.h>
+
+#include "ldap_defaults.h"
+
+static int     verbose = 0;
+
+static void
+usage(const char *s)
+{
+       fprintf(stderr,
+               "Usage: %s [options]\n"
+               "  -h hash\tpassword scheme\n"
+               "  -s secret\tnew password\n"
+               "  -c format\tcrypt(3) salt format\n"
+               "  -u\t\tgenerate RFC2307 values (default)\n"
+               "  -v\t\tincrease verbosity\n"
+               "  -T file\tread file for new password\n"
+               , s );
+
+       exit( EXIT_FAILURE );
+}
+
+int
+slappasswd( int argc, char *argv[] )
+{
+       char    *scheme = "{SSHA}";
+       char    *newpw = NULL;
+       char    *pwfile = NULL;
+       const char *text;
+       const char *progname = "slappasswd";
+
+       int             i;
+       struct berval passwd;
+       struct berval hash;
+
+       while( (i = getopt( argc, argv,
+               "c:d:h:s:T:vu" )) != EOF )
+       {
+               switch (i) {
+               case 'c':       /* crypt salt format */
+                       scheme = "{CRYPT}";
+                       lutil_salt_format( optarg );
+                       break;
+
+               case 'h':       /* scheme */
+                       scheme = strdup( optarg );
+                       break;
+
+               case 's':       /* new password (secret) */
+                       {
+                               char* p;
+                               newpw = strdup( optarg );
+
+                               for( p = optarg; *p != '\0'; p++ ) {
+                                       *p = '\0';
+                               }
+                       } break;
+
+               case 'T':       /* password file */
+                       pwfile = optarg;
+                       break;
+
+               case 'u':       /* RFC2307 userPassword */
+                       break;
+
+               case 'v':       /* verbose */
+                       verbose++;
+                       break;
+
+               default:
+                       usage ( progname );
+               }
+       }
+
+       if( argc - optind != 0 ) {
+               usage( progname );
+       } 
+
+       if( pwfile != NULL ) {
+               if( lutil_get_filed_password( pwfile, &passwd )) {
+                       return EXIT_FAILURE;
+               }
+       } else {
+               if( newpw == NULL ) {
+                       /* prompt for new password */
+                       char *cknewpw;
+                       newpw = strdup(getpassphrase("New password: "));
+                       cknewpw = getpassphrase("Re-enter new password: ");
+       
+                       if( strcmp( newpw, cknewpw )) {
+                               fprintf( stderr, "Password values do not match\n" );
+                               return EXIT_FAILURE;
+                       }
+               }
+
+               passwd.bv_val = newpw;
+               passwd.bv_len = strlen(passwd.bv_val);
+       }
+
+       lutil_passwd_hash( &passwd, scheme, &hash, &text );
+       if( hash.bv_val == NULL ) {
+               fprintf( stderr,
+                       "Password generation failed for scheme %s: %s\n",
+                       scheme, text ? text : "" );
+               return EXIT_FAILURE;
+       }
+
+       if( lutil_passwd( &hash, &passwd, NULL, &text ) ) {
+               fprintf( stderr, "Password verification failed. %s\n",
+                       text ? text : "" );
+               return EXIT_FAILURE;
+       }
+
+       printf( "%s\n" , hash.bv_val );
+       return EXIT_SUCCESS;
+}
index 9a53d86c498a44228734dd6b50fc05c504edfb92..ea3da5f929513ec5e2990d86f6fd69234fc3e842 100644 (file)
@@ -522,6 +522,7 @@ do_syncrep2(
                                }
                                if ( rc_efree && entry ) {
                                        entry_free( entry );
+                                       entry = NULL;
                                }
                                break;
 
@@ -1093,6 +1094,7 @@ syncrepl_entry(
                syncUUID->bv_val, syncUUID->bv_len );
        op->ors_filterstr.bv_val[op->ors_filterstr.bv_len] = '\0';
 
+       op->o_tag = LDAP_REQ_SEARCH;
        op->ors_scope = LDAP_SCOPE_SUBTREE;
 
        /* get syncrepl cookie of shadow replica from subentry */
@@ -1106,7 +1108,9 @@ syncrepl_entry(
 
        si->si_syncUUID_ndn.bv_val = NULL;
 
-       rc = be->be_search( op, &rs );
+       if ( limits_check( op, &rs ) == 0 ) {
+               rc = be->be_search( op, &rs );
+       }
 
        if ( op->ors_filterstr.bv_val ) {
                sl_free( op->ors_filterstr.bv_val, op->o_tmpmemctx );
@@ -1260,7 +1264,7 @@ syncrepl_entry(
 
        case LDAP_SYNC_DELETE :
                /* Already deleted */
-               ret = 1;
+               ret = 0;
                goto done;
 
        default :
@@ -1336,7 +1340,11 @@ syncrepl_del_nonpresent(
 
        op->o_nocaching = 1;
        op->o_managedsait = 0;
-       be->be_search( op, &rs );
+
+       if ( limits_check( op, &rs ) == 0 ) {
+               be->be_search( op, &rs );
+       }
+
        op->o_managedsait = 1;
        op->o_nocaching = 0;
 
@@ -1863,7 +1871,8 @@ null_callback(
        if ( rs->sr_err != LDAP_SUCCESS &&
                rs->sr_err != LDAP_REFERRAL &&
                rs->sr_err != LDAP_ALREADY_EXISTS &&
-               rs->sr_err != LDAP_NO_SUCH_OBJECT )
+               rs->sr_err != LDAP_NO_SUCH_OBJECT &&
+               rs->sr_err != LDAP_NOT_ALLOWED_ON_NONLEAF )
        {
 #ifdef NEW_LOGGING
                LDAP_LOG( OPERATION, ERR,
index 12db06b58187d614d139991fdc1f931fb375820b..2813cd1e2e8e0d1cbf1723efbd3b1e5ba4ee9745 100755 (executable)
@@ -70,9 +70,9 @@ CLIENTDIR=../clients/tools
 LDIFFILTER=$SRCDIR/scripts/acfilter.sh
 CONFFILTER=$SRCDIR/scripts/conf.sh
 
-SLAPADD="../servers/slapd/tools/slapadd $LDAP_VERBOSE"
-SLAPCAT="../servers/slapd/tools/slapcat $LDAP_VERBOSE"
-SLAPINDEX="../servers/slapd/tools/slapindex $LDAP_VERBOSE"
+SLAPADD="../servers/slapd/slapd -Ta $LDAP_VERBOSE"
+SLAPCAT="../servers/slapd/slapd -Tc $LDAP_VERBOSE"
+SLAPINDEX="../servers/slapd/slapd -Ti $LDAP_VERBOSE"
 
 unset DIFF_OPTIONS
 DIFF="diff -iu"