From: Kurt Zeilenga Date: Thu, 20 Jun 2002 22:11:59 +0000 (+0000) Subject: Suck in changes from HEAD X-Git-Tag: OPENLDAP_REL_ENG_2_1_3~26 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=722d3057d3869ccd4a696076b66b759909182e44;p=openldap Suck in changes from HEAD Fix slapd schema error alignment bug Update slapd SASL proxy policy code Update slapd require "strong" check Update back-bdb entry locking Add slapd disallow bind_simple_unprotected directive Add back-monitor added monitorContext support Add slapd IPv4/v6 only options Ass slapd SASL setpass support Remove lint Build Environment Add monitor backend test Update SHUT_RDWR Fix SASL-less build issues Fix back-perl build issues --- diff --git a/CHANGES b/CHANGES index a121eac933..21f5125430 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,20 @@ OpenLDAP 2.1 Change Log -OpenLDAP 2.1.2 Engineering - +OpenLDAP 2.1.3 Engineering + Fix slapd schema error alignment bug + Update slapd SASL proxy policy code + Update slapd require "strong" check + Update back-bdb entry locking + Add slapd disallow bind_simple_unprotected directive + Add back-monitor added monitorContext support + Add slapd IPv4/v6 only options + Ass slapd SASL setpass support + Remove lint + Build Environment + Add monitor backend test + Update SHUT_RDWR + Fix SASL-less build issues + Fix back-perl build issues OpenLDAP 2.1.2 Release Initial release for "general" use. diff --git a/build/man.mk b/build/man.mk new file mode 100644 index 0000000000..5c09377e7f --- /dev/null +++ b/build/man.mk @@ -0,0 +1,48 @@ +# $OpenLDAP$ +## Copyright 1998-2002 The OpenLDAP Foundation +## COPYING RESTRICTIONS APPLY. See COPYRIGHT File in top level directory +## of this package for details. +##--------------------------------------------------------------------------- +## +## Makefile Template for Manual Pages +## + +MANDIR=$(mandir)/man$(MANSECT) +TMP_SUFFIX=tmp + +all-common: + PAGES=`cd $(srcdir); echo *.$(MANSECT)`; \ + for page in $$PAGES; do \ + $(SED) -e "s%LDVERSION%$(VERSION)%" \ + -e 's%ETCDIR%$(sysconfdir)%' \ + -e 's%LOCALSTATEDIR%$(localstatedir)%' \ + -e 's%SYSCONFDIR%$(sysconfdir)%' \ + -e 's%DATADIR%$(datadir)%' \ + -e 's%SBINDIR%$(sbindir)%' \ + -e 's%BINDIR%$(bindir)%' \ + -e 's%LIBDIR%$(libdir)%' \ + -e 's%LIBEXECDIR%$(libexecdir)%' \ + -e 's%RELEASEDATE%$(RELEASEDATE)%' \ + $(srcdir)/$$page > $$page.$(TMP_SUFFIX); \ + done + +install-common: + -$(MKDIR) $(DESTDIR)$(MANDIR) + PAGES=`cd $(srcdir); echo *.$(MANSECT)`; \ + for page in $$PAGES; do \ + echo "installing $(MANDIR)/$$page"; \ + $(RM) $(DESTDIR)$(MANDIR)/$$page; \ + $(INSTALL) $(INSTALLFLAGS) -m 644 $$page.$(TMP_SUFFIX) $(DESTDIR)$(MANDIR)/$$page; \ + if test -f "$(srcdir)/$$page.links" ; then \ + for link in `$(CAT) $(srcdir)/$$page.links`; do \ + echo "installing $(MANDIR)/$$link as link to $$page"; \ + $(RM) $(DESTDIR)$(MANDIR)/$$link ; \ + $(LN_S) $$page $(DESTDIR)$(MANDIR)/$$link; \ + done; \ + fi; \ + done + +clean-common: FORCE + $(RM) *.tmp all-common + +Makefile: $(top_srcdir)/build/man.mk diff --git a/build/openldap.m4 b/build/openldap.m4 index 21f8f2b5ef..c50acd4a96 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -313,10 +313,14 @@ AC_DEFUN([OL_BERKELEY_DB_LINK], [ol_cv_lib_db=no OL_BERKELEY_DB_TRY(ol_cv_db_none) OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4]) +OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4]) OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb]) OL_BERKELEY_DB_TRY(ol_cv_db_db3,[-ldb3]) +OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3]) OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2]) +OL_BERKELEY_DB_TRY(ol_cv_db_db_2,[-ldb-2]) OL_BERKELEY_DB_TRY(ol_cv_db_db1,[-ldb1]) +OL_BERKELEY_DB_TRY(ol_cv_db_db_1,[-ldb-1]) ]) dnl dnl -------------------------------------------------------------------- diff --git a/build/top.mk b/build/top.mk index e9d460fd58..d0fa2b6bde 100644 --- a/build/top.mk +++ b/build/top.mk @@ -10,6 +10,7 @@ ## PACKAGE= @PACKAGE@ VERSION= @VERSION@ +RELEASEDATE= @OPENLDAP_RELEASE_DATE@ @SET_MAKE@ SHELL = /bin/sh diff --git a/configure b/configure index ae55fd228a..34d422cbe4 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # $OpenLDAP$ -# from OpenLDAP: pkg/ldap/configure.in,v 1.420 2002/05/18 00:06:32 hyc Exp +# from OpenLDAP: pkg/ldap/configure.in,v 1.408.2.6 2002/05/22 14:25:38 kurt Exp # Copyright 1998-2002 The OpenLDAP Foundation. All Rights Reserved. # @@ -37,8 +37,6 @@ ac_help="$ac_help --enable-cache enable caching (experimental) [no]" ac_help="$ac_help --enable-referrals enable LDAPv2+ Referrals (experimental) [no]" -ac_help="$ac_help - --enable-kbind enable LDAPv2+ Kerberos IV bind (deprecated) [no]" ac_help="$ac_help --enable-ipv6 enable IPv6 support [auto]" ac_help="$ac_help @@ -875,7 +873,7 @@ echo "Configuring $TB$OL_STRING$TN ..." echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:879: checking host system type" >&5 +echo "configure:877: checking host system type" >&5 if test "x$ac_cv_host" = "x" || (test "x$host" != "xNONE" && test "x$host" != "x$ac_cv_host_alias"); then # Make sure we can run config.sub. @@ -916,7 +914,7 @@ host_os=$ac_cv_host_os echo $ac_n "checking target system type""... $ac_c" 1>&6 -echo "configure:920: checking target system type" >&5 +echo "configure:918: checking target system type" >&5 if test "x$ac_cv_target" = "x" || (test "x$target" != "xNONE" && test "x$target" != "x$ac_cv_target_alias"); then # Make sure we can run config.sub. @@ -956,7 +954,7 @@ target_os=$ac_cv_target_os echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:960: checking build system type" >&5 +echo "configure:958: checking build system type" >&5 if test "x$ac_cv_build" = "x" || (test "x$build" != "xNONE" && test "x$build" != "x$ac_cv_build_alias"); then # Make sure we can run config.sub. @@ -1033,7 +1031,7 @@ test "$host_alias" != "$target_alias" && # 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:1037: checking for a BSD compatible install" >&5 +echo "configure:1035: 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 @@ -1090,7 +1088,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:1094: checking whether build environment is sane" >&5 +echo "configure:1092: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -1151,7 +1149,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:1155: checking for $ac_word" >&5 +echo "configure:1153: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_AWK+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1181,7 +1179,7 @@ test -n "$AWK" && break done echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:1185: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:1183: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1221,7 +1219,7 @@ fi missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:1225: checking for working aclocal" >&5 +echo "configure:1223: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1234,7 +1232,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:1238: checking for working autoconf" >&5 +echo "configure:1236: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1247,7 +1245,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:1251: checking for working automake" >&5 +echo "configure:1249: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1260,7 +1258,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:1264: checking for working autoheader" >&5 +echo "configure:1262: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1273,7 +1271,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:1277: checking for working makeinfo" >&5 +echo "configure:1275: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -1293,7 +1291,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:1297: checking for $ac_word" >&5 +echo "configure:1295: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_AMTAR+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1358,6 +1356,8 @@ EOF OPENLDAP_LIBVERSION=$OL_API_LIB +OPENLDAP_RELEASE_DATE="$OL_RELEASE_DATE" + echo $ac_n "checking configure arguments""... $ac_c" 1>&6 @@ -1487,26 +1487,7 @@ else ol_enable_referrals="no" fi # end --enable-referrals -# OpenLDAP --enable-kbind - # Check whether --enable-kbind or --disable-kbind was given. -if test "${enable_kbind+set}" = set; then - enableval="$enable_kbind" - - ol_arg=invalid - for ol_val in auto yes no ; do - if test "$enableval" = "$ol_val" ; then - ol_arg="$ol_val" - fi - done - if test "$ol_arg" = "invalid" ; then - { echo "configure: error: bad value $enableval for --enable-kbind" 1>&2; exit 1; } - fi - ol_enable_kbind="$ol_arg" - -else - ol_enable_kbind="no" -fi -# end --enable-kbind +ol_enable_kbind=${ol_enable_kbind-no} # OpenLDAP --enable-ipv6 # Check whether --enable-ipv6 or --disable-ipv6 was given. if test "${enable_ipv6+set}" = set; then @@ -1904,6 +1885,7 @@ else ol_enable_modules="no" fi # end --enable-modules +ol_enable_multimaster=${ol_enable_multimaster-no} # OpenLDAP --enable-phonetic # Check whether --enable-phonetic or --disable-phonetic was given. if test "${enable_phonetic+set}" = set; then @@ -2618,6 +2600,9 @@ if test $ol_enable_slapd = no ; then if test $ol_enable_modules = yes ; then echo "configure: warning: slapd disabled, ignoring --enable-modules argument" 1>&2 fi + if test $ol_enable_multimaster = yes ; then + echo "configure: warning: slapd disabled, ignoring --enable-multimaster argument" 1>&2 + fi if test $ol_enable_wrappers = yes ; then echo "configure: warning: slapd disabled, ignoring --enable-wrappers argument" 1>&2 fi @@ -2690,6 +2675,7 @@ if test $ol_enable_slapd = no ; then ol_enable_sql=no ol_enable_modules=no + ol_enable_multimaster=no ol_enable_phonetic=no ol_enable_rlookups=no ol_enable_aci=no @@ -2901,7 +2887,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:2905: checking for a BSD compatible install" >&5 +echo "configure:2891: 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 @@ -2982,7 +2968,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:2986: checking for $ac_word" >&5 +echo "configure:2972: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3034,7 +3020,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:3038: checking for $ac_word" >&5 +echo "configure:3024: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3072,7 +3058,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:3076: checking for $ac_word" >&5 +echo "configure:3062: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_AR+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3122,12 +3108,12 @@ if test "X${PATH_SEPARATOR+set}" != Xset; then fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:3126: checking for Cygwin environment" >&5 +echo "configure:3112: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -3154,19 +3140,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:3158: checking for mingw32 environment" >&5 +echo "configure:3144: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -3182,19 +3168,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:3186: checking for EMX OS/2 environment" >&5 +echo "configure:3172: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_emxos2=yes else @@ -3210,7 +3196,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:3214: checking how to run the C preprocessor" >&5 +echo "configure:3200: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3225,13 +3211,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3235: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3221: \"$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 : @@ -3242,13 +3228,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3238: \"$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 : @@ -3259,13 +3245,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3255: \"$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 : @@ -3315,7 +3301,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:3319: checking for $ac_word" >&5 +echo "configure:3305: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3345,7 +3331,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:3349: checking for $ac_word" >&5 +echo "configure:3335: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3396,7 +3382,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:3400: checking for $ac_word" >&5 +echo "configure:3386: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_CC+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3428,7 +3414,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:3432: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) works" >&5 +echo "configure:3418: 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. @@ -3439,12 +3425,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 3443 "configure" +#line 3429 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:3448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3434: \"$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 @@ -3470,12 +3456,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:3474: checking whether the C compiler ($CC $CFLAGS $CPPFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:3460: 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:3479: checking whether we are using GNU C" >&5 +echo "configure:3465: 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 @@ -3484,7 +3470,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3488: \"$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:3474: \"$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 @@ -3503,7 +3489,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:3507: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:3493: 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 @@ -3546,7 +3532,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:3550: checking for ld used by GCC" >&5 +echo "configure:3536: checking for ld used by GCC" >&5 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -3576,10 +3562,10 @@ echo "configure:3550: 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:3580: checking for GNU ld" >&5 +echo "configure:3566: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:3583: checking for non-GNU ld" >&5 +echo "configure:3569: 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 @@ -3614,7 +3600,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:3618: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:3604: 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 @@ -3631,7 +3617,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:3635: checking for $LD option to reload object files" >&5 +echo "configure:3621: 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 @@ -3643,7 +3629,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:3647: checking for BSD-compatible nm" >&5 +echo "configure:3633: 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 @@ -3681,7 +3667,7 @@ NM="$lt_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:3685: checking whether ln -s works" >&5 +echo "configure:3671: 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 @@ -3702,7 +3688,7 @@ else fi echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 -echo "configure:3706: checking how to recognise dependant libraries" >&5 +echo "configure:3692: checking how to recognise dependant libraries" >&5 if eval "test \"\${lt_cv_deplibs_check_method+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3885,13 +3871,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:3889: checking for object suffix" >&5 +echo "configure:3875: 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:3895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -3912,7 +3898,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:3916: checking for executable suffix" >&5 +echo "configure:3902: checking for executable suffix" >&5 if eval "test \"\${ac_cv_exeext+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3922,7 +3908,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:3926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:3912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.C | *.o | *.obj | *.xcoff) ;; @@ -3953,7 +3939,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:3957: checking command to parse $NM output" >&5 +echo "configure:3943: 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 @@ -4033,10 +4019,10 @@ void nm_test_func(){} int main(){nm_test_var='a';nm_test_func();return(0);} EOF - if { (eval echo configure:4037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:4023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo configure:4040: \"$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:4026: \"$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" @@ -4087,7 +4073,7 @@ EOF save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo configure:4091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + if { (eval echo configure:4077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" @@ -4136,17 +4122,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:4140: checking for $ac_hdr" >&5 +echo "configure:4126: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4150: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4136: \"$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* @@ -4181,7 +4167,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:4185: checking for ${ac_tool_prefix}file" >&5 +echo "configure:4171: 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 @@ -4243,7 +4229,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:4247: checking for file" >&5 +echo "configure:4233: checking for file" >&5 if eval "test \"\${lt_cv_path_MAGIC_CMD+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4314,7 +4300,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:4318: checking for $ac_word" >&5 +echo "configure:4304: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4346,7 +4332,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:4350: checking for $ac_word" >&5 +echo "configure:4336: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_RANLIB+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4381,7 +4367,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:4385: checking for $ac_word" >&5 +echo "configure:4371: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4413,7 +4399,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:4417: checking for $ac_word" >&5 +echo "configure:4403: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_STRIP+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4462,8 +4448,8 @@ test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 4466 "configure"' > conftest.$ac_ext - if { (eval echo configure:4467: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 4452 "configure"' > conftest.$ac_ext + if { (eval echo configure:4453: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -4484,7 +4470,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:4488: checking whether the C compiler needs -belf" >&5 +echo "configure:4474: 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 @@ -4497,14 +4483,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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4494: \"$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 @@ -4534,7 +4520,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:4538: checking for $ac_word" >&5 +echo "configure:4524: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4566,7 +4552,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:4570: checking for $ac_word" >&5 +echo "configure:4556: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_DLLTOOL+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4601,7 +4587,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:4605: checking for $ac_word" >&5 +echo "configure:4591: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4633,7 +4619,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:4637: checking for $ac_word" >&5 +echo "configure:4623: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_AS+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4668,7 +4654,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:4672: checking for $ac_word" >&5 +echo "configure:4658: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4700,7 +4686,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:4704: checking for $ac_word" >&5 +echo "configure:4690: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_OBJDUMP+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4736,12 +4722,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:4740: checking if libtool should supply DllMain function" >&5 +echo "configure:4726: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_need_dllmain=no else @@ -4770,19 +4756,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:4774: checking how to link DLLs" >&5 +echo "configure:4760: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4772: \"$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 @@ -4896,7 +4882,7 @@ set dummy $CC compiler="$2" echo $ac_n "checking for objdir""... $ac_c" 1>&6 -echo "configure:4900: checking for objdir" >&5 +echo "configure:4886: checking for objdir" >&5 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then @@ -4923,7 +4909,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:4927: checking for $compiler option to produce PIC" >&5 +echo "configure:4913: 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 @@ -5075,21 +5061,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:5079: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo "configure:5065: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* case $host_os in hpux9* | hpux10* | hpux11*) @@ -5141,7 +5127,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:5145: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo "configure:5131: 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 @@ -5149,14 +5135,14 @@ else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5146: \"$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 @@ -5183,7 +5169,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:5187: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo "configure:5173: 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 @@ -5202,7 +5188,7 @@ chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no -if { (eval echo configure:5206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then +if { (eval echo configure:5192: \"$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 @@ -5231,7 +5217,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:5235: checking if $compiler supports -c -o file.lo" >&5 +echo "configure:5221: 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 @@ -5242,14 +5228,14 @@ else save_objext="$ac_objext" ac_objext=lo cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5239: \"$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 @@ -5280,7 +5266,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:5284: checking if we can lock with hard links" >&5 +echo "configure:5270: 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 @@ -5299,20 +5285,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:5303: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo "configure:5289: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5302: \"$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 @@ -5339,7 +5325,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:5343: checking whether the linker ($LD) supports shared libraries" >&5 +echo "configure:5329: checking whether the linker ($LD) supports shared libraries" >&5 allow_undefined_flag= no_undefined_flag= @@ -6023,7 +6009,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:6027: checking how to hardcode library paths into programs" >&5 +echo "configure:6013: checking how to hardcode library paths into programs" >&5 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then @@ -6051,7 +6037,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:6055: checking whether stripping libraries is possible" >&5 +echo "configure:6041: 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" @@ -6065,7 +6051,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:6069: checking dynamic linker characteristics" >&5 +echo "configure:6055: checking dynamic linker characteristics" >&5 library_names_spec= libname_spec='lib$name' soname_spec= @@ -6462,11 +6448,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:6466: checking if libtool supports shared libraries" >&5 +echo "configure:6452: 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:6470: checking whether to build shared libraries" >&5 +echo "configure:6456: 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 @@ -6489,7 +6475,7 @@ esac echo "$ac_t""$enable_shared" 1>&6 echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6 -echo "configure:6493: checking whether to build static libraries" >&5 +echo "configure:6479: 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 @@ -6530,12 +6516,12 @@ else *) echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "configure:6534: checking for shl_load" >&5 +echo "configure:6520: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6549: \"$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 @@ -6577,7 +6563,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:6581: checking for shl_load in -ldld" >&5 +echo "configure:6567: 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 @@ -6585,7 +6571,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6586: \"$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 @@ -6615,12 +6601,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:6619: checking for dlopen" >&5 +echo "configure:6605: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6634: \"$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 @@ -6662,7 +6648,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:6666: checking for dlopen in -ldl" >&5 +echo "configure:6652: 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 @@ -6670,7 +6656,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6671: \"$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 @@ -6700,7 +6686,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:6704: checking for dlopen in -lsvld" >&5 +echo "configure:6690: 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 @@ -6708,7 +6694,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsvld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6709: \"$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 @@ -6738,7 +6724,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:6742: checking for dld_link in -ldld" >&5 +echo "configure:6728: 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 @@ -6746,7 +6732,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6747: \"$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 @@ -6813,7 +6799,7 @@ fi LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 -echo "configure:6817: checking whether a program can dlopen itself" >&5 +echo "configure:6803: 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 @@ -6823,7 +6809,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + if { (eval echo configure:6874: \"$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 @@ -6907,7 +6893,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:6911: checking whether a statically linked program can dlopen itself" >&5 +echo "configure:6897: 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 @@ -6917,7 +6903,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then + if { (eval echo configure:6968: \"$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 @@ -7027,14 +7013,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:7031: checking whether -lc should be explicitly linked in" >&5 +echo "configure:7017: 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:7038: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + if { (eval echo configure:7024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext @@ -7047,7 +7033,7 @@ else libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= - if { (eval echo configure:7051: \"$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:7037: \"$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 @@ -7634,7 +7620,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:7638: checking for $ac_word" >&5 +echo "configure:7624: checking for $ac_word" >&5 if eval "test \"\${ac_cv_prog_AWK+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7665,7 +7651,7 @@ done # test for ln hardlink support echo $ac_n "checking whether ln works""... $ac_c" 1>&6 -echo "configure:7669: checking whether ln works" >&5 +echo "configure:7655: 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 @@ -7688,7 +7674,7 @@ else fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:7692: checking whether ln -s works" >&5 +echo "configure:7678: 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 @@ -7712,7 +7698,7 @@ fi # Extract the first word of "sendmail", so it can be a program name with args. set dummy sendmail; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7716: checking for $ac_word" >&5 +echo "configure:7702: checking for $ac_word" >&5 if eval "test \"\${ac_cv_path_SENDMAIL+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7748,7 +7734,7 @@ fi # Extract the first word of "vi", so it can be a program name with args. set dummy vi; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7752: checking for $ac_word" >&5 +echo "configure:7738: checking for $ac_word" >&5 if eval "test \"\${ac_cv_path_EDITOR+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7787,7 +7773,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:7791: checking for $ac_word" >&5 +echo "configure:7777: checking for $ac_word" >&5 if eval "test \"\${ac_cv_path_PERLBIN+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7838,7 +7824,7 @@ fi fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:7842: checking how to run the C preprocessor" >&5 +echo "configure:7828: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -7853,13 +7839,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7849: \"$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 : @@ -7870,13 +7856,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7866: \"$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 : @@ -7887,13 +7873,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7883: \"$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 : @@ -7932,12 +7918,12 @@ fi echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:7936: checking for Cygwin environment" >&5 +echo "configure:7922: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_cygwin=yes else @@ -7964,19 +7950,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:7968: checking for mingw32 environment" >&5 +echo "configure:7954: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_mingw32=yes else @@ -7995,7 +7981,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:7999: checking for executable suffix" >&5 +echo "configure:7985: checking for executable suffix" >&5 if eval "test \"\${ac_cv_exeext+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8005,7 +7991,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:8009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:7995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.C | *.o | *.obj | *.xcoff) ;; @@ -8026,13 +8012,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:8030: checking for object suffix" >&5 +echo "configure:8016: 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:8036: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -8056,7 +8042,7 @@ EOF echo $ac_n "checking for be_app in -lbe""... $ac_c" 1>&6 -echo "configure:8060: checking for be_app in -lbe" >&5 +echo "configure:8046: 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 @@ -8064,7 +8050,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbe -lroot -lnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8065: \"$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 @@ -8101,7 +8087,7 @@ fi echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 -echo "configure:8105: checking for ${CC-cc} option to accept ANSI C" >&5 +echo "configure:8091: 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 @@ -8118,7 +8104,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 < #include @@ -8155,7 +8141,7 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } EOF -if { (eval echo configure:8159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_prog_cc_stdc="$ac_arg"; break else @@ -8189,7 +8175,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:8193: checking for ${OL_MKDEP} depend flag" >&5 +echo "configure:8179: 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 @@ -8199,7 +8185,7 @@ else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } \ + if { ac_try='$OL_MKDEP $flag conftest.c'; { (eval echo configure:8189: \"$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 @@ -8232,7 +8218,7 @@ if test "${ol_cv_mkdep}" = no ; then fi echo $ac_n "checking for afopen in -ls""... $ac_c" 1>&6 -echo "configure:8236: checking for afopen in -ls" >&5 +echo "configure:8222: 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 @@ -8240,7 +8226,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ls $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8241: \"$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 @@ -8285,17 +8271,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:8289: checking for $ac_hdr" >&5 +echo "configure:8275: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8299: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8285: \"$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* @@ -8327,7 +8313,7 @@ done fi echo $ac_n "checking for lt_dlinit in -lltdl""... $ac_c" 1>&6 -echo "configure:8331: checking for lt_dlinit in -lltdl" >&5 +echo "configure:8317: 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 @@ -8335,7 +8321,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lltdl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8336: \"$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 @@ -8393,13 +8379,13 @@ fi # test for EBCDIC echo $ac_n "checking for EBCDIC""... $ac_c" 1>&6 -echo "configure:8397: checking for EBCDIC" >&5 +echo "configure:8383: 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 <&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8398: \"$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* @@ -8432,12 +8418,12 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:8436: checking for ANSI C header files" >&5 +echo "configure:8422: 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 < #include @@ -8445,7 +8431,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8435: \"$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* @@ -8462,7 +8448,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 @@ -8480,7 +8466,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 @@ -8501,7 +8487,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #ifndef HAVE_EBCDIC @@ -8519,7 +8505,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:8523: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:8509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -8553,12 +8539,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:8557: checking for $ac_hdr that defines DIR" >&5 +echo "configure:8543: 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 < #include <$ac_hdr> @@ -8566,7 +8552,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:8570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -8591,7 +8577,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:8595: checking for opendir in -ldir" >&5 +echo "configure:8581: 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 @@ -8599,7 +8585,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8600: \"$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 @@ -8632,7 +8618,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:8636: checking for opendir in -lx" >&5 +echo "configure:8622: 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 @@ -8640,7 +8626,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8641: \"$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 @@ -8674,12 +8660,12 @@ fi fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:8678: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:8664: 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 < #include @@ -8695,7 +8681,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:8699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:8685: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -8716,12 +8702,12 @@ EOF fi echo $ac_n "checking POSIX termios""... $ac_c" 1>&6 -echo "configure:8720: checking POSIX termios" >&5 +echo "configure:8706: 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 < #include @@ -8731,7 +8717,7 @@ int main() { tcgetattr(0, 0); ; return 0; } EOF -if { (eval echo configure:8735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8721: \"$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 @@ -8747,7 +8733,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:8751: checking whether use of TIOCGWINSZ requires sys/ioctl.h" >&5 +echo "configure:8737: 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 @@ -8756,7 +8742,7 @@ else gwinsz_in_termios_h=no if test $am_cv_sys_posix_termios = yes; then cat > conftest.$ac_ext < # include @@ -8776,7 +8762,7 @@ rm -f conftest* if test $gwinsz_in_termios_h = no; then cat > conftest.$ac_ext < # include @@ -8860,17 +8846,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:8864: checking for $ac_hdr" >&5 +echo "configure:8850: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8860: \"$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* @@ -8900,12 +8886,12 @@ done echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "configure:8904: checking for dlopen" >&5 +echo "configure:8890: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8919: \"$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 @@ -8947,7 +8933,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:8951: checking for dlopen in -ldl" >&5 +echo "configure:8937: 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 @@ -8955,7 +8941,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8956: \"$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 @@ -8997,7 +8983,7 @@ fi echo $ac_n "checking for sigset in -lV3""... $ac_c" 1>&6 -echo "configure:9001: checking for sigset in -lV3" >&5 +echo "configure:8987: 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 @@ -9005,7 +8991,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lV3 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9006: \"$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 @@ -9045,12 +9031,12 @@ fi echo $ac_n "checking for winsock""... $ac_c" 1>&6 -echo "configure:9049: checking for winsock" >&5 +echo "configure:9035: checking for winsock" >&5 save_LIBS="$LIBS" for curlib in ws2_32 wsock32; do LIBS="$LIBS -l$curlib" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_winsock=yes else @@ -9102,12 +9088,12 @@ echo "$ac_t""$have_winsock" 1>&6 echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:9106: checking for socket" >&5 +echo "configure:9092: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9121: \"$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 @@ -9150,7 +9136,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6 -echo "configure:9154: checking for main in -lsocket" >&5 +echo "configure:9140: 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 @@ -9158,14 +9144,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9155: \"$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 @@ -9193,7 +9179,7 @@ else fi echo $ac_n "checking for main in -lnet""... $ac_c" 1>&6 -echo "configure:9197: checking for main in -lnet" >&5 +echo "configure:9183: 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 @@ -9201,14 +9187,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9198: \"$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 @@ -9236,7 +9222,7 @@ else fi echo $ac_n "checking for main in -lnsl_s""... $ac_c" 1>&6 -echo "configure:9240: checking for main in -lnsl_s" >&5 +echo "configure:9226: 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 @@ -9244,14 +9230,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl_s $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9241: \"$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 @@ -9279,7 +9265,7 @@ else fi echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 -echo "configure:9283: checking for main in -lnsl" >&5 +echo "configure:9269: 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 @@ -9287,14 +9273,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9284: \"$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 @@ -9322,7 +9308,7 @@ else fi echo $ac_n "checking for socket in -linet""... $ac_c" 1>&6 -echo "configure:9326: checking for socket in -linet" >&5 +echo "configure:9312: 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 @@ -9330,7 +9316,7 @@ else ac_save_LIBS="$LIBS" LIBS="-linet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9331: \"$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 @@ -9369,7 +9355,7 @@ else fi echo $ac_n "checking for main in -lgen""... $ac_c" 1>&6 -echo "configure:9373: checking for main in -lgen" >&5 +echo "configure:9359: 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 @@ -9377,14 +9363,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lgen $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9374: \"$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 @@ -9416,12 +9402,12 @@ fi echo $ac_n "checking for select""... $ac_c" 1>&6 -echo "configure:9420: checking for select" >&5 +echo "configure:9406: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9435: \"$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 @@ -9468,7 +9454,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:9472: checking types of arguments for select()" >&5 +echo "configure:9458: 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 @@ -9482,7 +9468,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 < @@ -9501,7 +9487,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:9505: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:9491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_not_found=no ; break 3 else @@ -9546,17 +9532,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:9550: checking for $ac_hdr" >&5 +echo "configure:9536: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9546: \"$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* @@ -9587,14 +9573,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:9591: checking for library containing regfree" >&5 +echo "configure:9577: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9595: \"$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 @@ -9616,7 +9602,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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9617: \"$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 @@ -9650,7 +9636,7 @@ fi echo $ac_n "checking for compatible POSIX regex""... $ac_c" 1>&6 -echo "configure:9654: checking for compatible POSIX regex" >&5 +echo "configure:9640: 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 @@ -9659,7 +9645,7 @@ else ol_cv_c_posix_regex=cross else cat > conftest.$ac_ext < @@ -9685,7 +9671,7 @@ main() return rc; } EOF -if { (eval echo configure:9689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:9675: \"$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 @@ -9711,17 +9697,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:9715: checking for $ac_hdr" >&5 +echo "configure:9701: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9725: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9711: \"$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* @@ -9751,14 +9737,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:9755: checking for library containing uuid_to_str" >&5 +echo "configure:9741: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9759: \"$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 @@ -9780,7 +9766,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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9781: \"$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 @@ -9826,11 +9812,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:9830: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5 +echo "configure:9816: checking to see if -lrpcrt4 is needed for win32 UUID support" >&5 save_LIBS="$LIBS" LIBS="$LIBS -lrpcrt4" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* need_rpcrt=yes else @@ -9862,12 +9848,12 @@ fi ol_link_dnssrv=no echo $ac_n "checking for res_query""... $ac_c" 1>&6 -echo "configure:9866: checking for res_query" >&5 +echo "configure:9852: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9881: \"$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 @@ -9912,12 +9898,12 @@ fi if test $ac_cv_func_res_query = no ; then echo $ac_n "checking for __res_query""... $ac_c" 1>&6 -echo "configure:9916: checking for __res_query" >&5 +echo "configure:9902: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9931: \"$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 @@ -9965,7 +9951,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:9969: checking for res_query in -lbind" >&5 +echo "configure:9955: 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 @@ -9973,7 +9959,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9974: \"$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 @@ -10016,7 +10002,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:10020: checking for __res_query in -lbind" >&5 +echo "configure:10006: 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 @@ -10024,7 +10010,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lbind $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10025: \"$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 @@ -10067,7 +10053,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:10071: checking for res_query in -lresolv" >&5 +echo "configure:10057: 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 @@ -10075,7 +10061,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10076: \"$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 @@ -10118,7 +10104,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:10122: checking for __res_query in -lresolv" >&5 +echo "configure:10108: 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 @@ -10126,7 +10112,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lresolv $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10127: \"$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 @@ -10185,12 +10171,12 @@ fi for ac_func in getaddrinfo gai_strerror inet_ntop do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10189: checking for $ac_func" >&5 +echo "configure:10175: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10204: \"$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 @@ -10246,13 +10232,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:10250: checking INET6_ADDRSTRLEN" >&5 +echo "configure:10236: 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 < @@ -10287,17 +10273,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:10291: checking for $ac_hdr" >&5 +echo "configure:10277: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10287: \"$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* @@ -10344,17 +10330,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:10348: checking for $ac_hdr" >&5 +echo "configure:10334: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10358: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10344: \"$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* @@ -10386,17 +10372,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10390: checking for $ac_hdr" >&5 +echo "configure:10376: checking for $ac_hdr" >&5 if eval "test \"\${ac_cv_header_$ac_safe+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10430,7 +10416,7 @@ done if test $krb5_impl = mit; then echo $ac_n "checking for main in -lk5crypto""... $ac_c" 1>&6 -echo "configure:10434: checking for main in -lk5crypto" >&5 +echo "configure:10420: 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 @@ -10438,14 +10424,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lk5crypto $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10435: \"$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 @@ -10468,7 +10454,7 @@ fi echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6 -echo "configure:10472: checking for main in -lkrb5" >&5 +echo "configure:10458: 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 @@ -10476,14 +10462,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lkrb5 -l$krb5crypto -lcom_err $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10473: \"$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 @@ -10508,7 +10494,7 @@ fi elif test $krb5_impl = heimdal; then echo $ac_n "checking for main in -ldes""... $ac_c" 1>&6 -echo "configure:10512: checking for main in -ldes" >&5 +echo "configure:10498: 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 @@ -10516,14 +10502,14 @@ else ac_save_LIBS="$LIBS" LIBS="-ldes $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10513: \"$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 @@ -10546,7 +10532,7 @@ fi echo $ac_n "checking for main in -lkrb5""... $ac_c" 1>&6 -echo "configure:10550: checking for main in -lkrb5" >&5 +echo "configure:10536: 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 @@ -10554,14 +10540,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10551: \"$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 @@ -10624,17 +10610,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:10628: checking for $ac_hdr" >&5 +echo "configure:10614: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10624: \"$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* @@ -10664,7 +10650,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:10668: checking for main in -lkrb4" >&5 +echo "configure:10654: 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 @@ -10672,14 +10658,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lkrb4 -ldes425 -lkrb5 -l$krb5crypto -lcom_err $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10669: \"$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 @@ -10704,7 +10690,7 @@ fi elif test $krb5_impl = heimdal; then echo $ac_n "checking for main in -lkrb4""... $ac_c" 1>&6 -echo "configure:10708: checking for main in -lkrb4" >&5 +echo "configure:10694: 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 @@ -10712,14 +10698,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lkrb4 -lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10709: \"$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 @@ -10761,7 +10747,7 @@ EOF echo $ac_n "checking for des_debug in Kerberos libraries""... $ac_c" 1>&6 -echo "configure:10765: checking for des_debug in Kerberos libraries" >&5 +echo "configure:10751: 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 @@ -10769,7 +10755,7 @@ else save_LIBS="$LIBS" LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS" cat > conftest.$ac_ext < @@ -10782,7 +10768,7 @@ des_debug = 1; ; return 0; } EOF -if { (eval echo configure:10786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10772: \"$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 @@ -10821,17 +10807,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:10825: checking for $ac_hdr" >&5 +echo "configure:10811: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10821: \"$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* @@ -10860,7 +10846,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:10864: checking for main in -lkrb" >&5 +echo "configure:10850: 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 @@ -10868,14 +10854,14 @@ else ac_save_LIBS="$LIBS" LIBS="-lkrb -ldes $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10865: \"$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 @@ -10945,17 +10931,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:10949: checking for $ac_hdr" >&5 +echo "configure:10935: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10945: \"$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* @@ -10984,7 +10970,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:10988: checking for SSLeay_add_ssl_algorithms in -lssl" >&5 +echo "configure:10974: 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 @@ -10992,7 +10978,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lssl -lcrypto $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10993: \"$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 @@ -11028,7 +11014,7 @@ fi if test $have_ssleay = no ; then echo $ac_n "checking for SSL_library_init in -lssl""... $ac_c" 1>&6 -echo "configure:11032: checking for SSL_library_init in -lssl" >&5 +echo "configure:11018: 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 @@ -11036,7 +11022,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lssl -lcrypto $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11037: \"$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 @@ -11073,7 +11059,7 @@ fi if test $have_ssleay = no ; then echo $ac_n "checking for ssl3_accept in -lssl""... $ac_c" 1>&6 -echo "configure:11077: checking for ssl3_accept in -lssl" >&5 +echo "configure:11063: 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 @@ -11081,7 +11067,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lssl -lcrypto -lRSAglue -lrsaref $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11082: \"$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 @@ -11173,12 +11159,12 @@ for ac_func in \ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11177: checking for $ac_func" >&5 +echo "configure:11163: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11192: \"$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 @@ -11231,19 +11217,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:11235: checking number of arguments of ctime_r" >&5 +echo "configure:11221: 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 < int main() { time_t ti; char *buffer; ctime_r(&ti,buffer,32); ; return 0; } EOF -if { (eval echo configure:11247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_func_ctime_r_nargs3=yes else @@ -11255,14 +11241,14 @@ fi rm -f conftest* cat > conftest.$ac_ext < int main() { time_t ti; char *buffer; ctime_r(&ti,buffer); ; return 0; } EOF -if { (eval echo configure:11266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11252: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_func_ctime_r_nargs2=yes else @@ -11302,12 +11288,12 @@ fi 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:11306: checking number of arguments of gethostbyname_r" >&5 +echo "configure:11292: 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 < #include @@ -11321,7 +11307,7 @@ struct hostent hent; char buffer[BUFSIZE]; buffer, bufsize, &h_errno); ; return 0; } EOF -if { (eval echo configure:11325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_func_gethostbyname_r_nargs5=yes else @@ -11333,7 +11319,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < #include @@ -11348,7 +11334,7 @@ struct hostent hent;struct hostent *rhent; &rhent, &h_errno); ; return 0; } EOF -if { (eval echo configure:11352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_func_gethostbyname_r_nargs6=yes else @@ -11389,12 +11375,12 @@ fi 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:11393: checking number of arguments of gethostbyaddr_r" >&5 +echo "configure:11379: 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 < #include @@ -11410,7 +11396,7 @@ struct hostent hent; char buffer[BUFSIZE]; alen, AF_INET, &hent, buffer, bufsize, &h_errno); ; return 0; } EOF -if { (eval echo configure:11414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11400: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_func_gethostbyaddr_r_nargs7=yes else @@ -11422,7 +11408,7 @@ fi rm -f conftest* cat > conftest.$ac_ext < #include @@ -11440,7 +11426,7 @@ struct hostent hent; &rhent, &h_errno); ; return 0; } EOF -if { (eval echo configure:11444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_func_gethostbyaddr_r_nargs8=yes else @@ -11503,12 +11489,12 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \ echo $ac_n "checking for _beginthread""... $ac_c" 1>&6 -echo "configure:11507: checking for _beginthread" >&5 +echo "configure:11493: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11522: \"$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 @@ -11588,17 +11574,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:11592: checking for $ac_hdr" >&5 +echo "configure:11578: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11588: \"$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* @@ -11627,13 +11613,13 @@ done if test $ac_cv_header_pthread_h = yes ; then echo $ac_n "checking POSIX thread version""... $ac_c" 1>&6 -echo "configure:11631: checking POSIX thread version" >&5 +echo "configure:11617: 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 < @@ -11655,7 +11641,7 @@ rm -f conftest* cat > conftest.$ac_ext < @@ -11708,12 +11694,12 @@ EOF echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6 -echo "configure:11712: checking for LinuxThreads pthread.h" >&5 +echo "configure:11698: 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 @@ -11740,12 +11726,12 @@ EOF echo $ac_n "checking for GNU Pth pthread.h""... $ac_c" 1>&6 -echo "configure:11744: checking for GNU Pth pthread.h" >&5 +echo "configure:11730: 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 < #ifdef _POSIX_THREAD_IS_GNU_PTH @@ -11774,17 +11760,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:11778: checking for $ac_hdr" >&5 +echo "configure:11764: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11774: \"$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* @@ -11814,14 +11800,14 @@ done echo $ac_n "checking for pthread_create in default libraries""... $ac_c" 1>&6 -echo "configure:11818: checking for pthread_create in default libraries" >&5 +echo "configure:11804: 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 < @@ -11902,7 +11888,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:11906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_create=yes else @@ -11914,7 +11900,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -12000,7 +11986,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:12004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:11990: \"$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 @@ -12025,7 +12011,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:12029: checking for pthread link with -kthread" >&5 +echo "configure:12015: 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 @@ -12036,7 +12022,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -12117,7 +12103,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_kthread=yes else @@ -12129,7 +12115,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -12215,7 +12201,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:12219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:12205: \"$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 @@ -12245,7 +12231,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:12249: checking for pthread link with -pthread" >&5 +echo "configure:12235: 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 @@ -12256,7 +12242,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -12337,7 +12323,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12341: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_pthread=yes else @@ -12349,7 +12335,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -12435,7 +12421,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:12439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:12425: \"$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 @@ -12465,7 +12451,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:12469: checking for pthread link with -pthreads" >&5 +echo "configure:12455: 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 @@ -12476,7 +12462,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -12557,7 +12543,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12561: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_pthreads=yes else @@ -12569,7 +12555,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -12655,7 +12641,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:12659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:12645: \"$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 @@ -12685,7 +12671,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:12689: checking for pthread link with -mthreads" >&5 +echo "configure:12675: 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 @@ -12696,7 +12682,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -12777,7 +12763,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:12781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_mthreads=yes else @@ -12789,7 +12775,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -12875,7 +12861,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:12879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:12865: \"$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 @@ -12905,7 +12891,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:12909: checking for pthread link with -thread" >&5 +echo "configure:12895: 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 @@ -12916,7 +12902,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -12997,7 +12983,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:13001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_thread=yes else @@ -13009,7 +12995,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -13095,7 +13081,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:13099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:13085: \"$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 @@ -13126,7 +13112,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:13130: checking for pthread link with -lpthread -lmach -lexc -lc_r" >&5 +echo "configure:13116: 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 @@ -13137,7 +13123,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -13218,7 +13204,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:13222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13208: \"$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 @@ -13230,7 +13216,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -13316,7 +13302,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:13320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:13306: \"$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 @@ -13346,7 +13332,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:13350: checking for pthread link with -lpthread -lmach -lexc" >&5 +echo "configure:13336: 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 @@ -13357,7 +13343,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -13438,7 +13424,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:13442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13428: \"$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 @@ -13450,7 +13436,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -13536,7 +13522,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:13540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:13526: \"$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 @@ -13567,7 +13553,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:13571: checking for pthread link with -lpthread -Wl,-woff,85" >&5 +echo "configure:13557: 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 @@ -13578,7 +13564,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -13659,7 +13645,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:13663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13649: \"$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 @@ -13671,7 +13657,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -13757,7 +13743,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:13761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:13747: \"$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 @@ -13788,7 +13774,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:13792: checking for pthread link with -lpthread" >&5 +echo "configure:13778: 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 @@ -13799,7 +13785,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -13880,7 +13866,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:13884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_lpthread=yes else @@ -13892,7 +13878,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -13978,7 +13964,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:13982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:13968: \"$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 @@ -14008,7 +13994,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:14012: checking for pthread link with -lc_r" >&5 +echo "configure:13998: 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 @@ -14019,7 +14005,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -14100,7 +14086,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14090: \"$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 @@ -14112,7 +14098,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -14198,7 +14184,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:14202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:14188: \"$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 @@ -14229,7 +14215,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:14233: checking for pthread link with -threads" >&5 +echo "configure:14219: 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 @@ -14240,7 +14226,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -14321,7 +14307,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_pthread_threads=yes else @@ -14333,7 +14319,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -14419,7 +14405,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:14423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:14409: \"$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 @@ -14450,7 +14436,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:14454: checking for pthread link with -lpthreads -lmach -lexc -lc_r" >&5 +echo "configure:14440: 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 @@ -14461,7 +14447,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -14542,7 +14528,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14532: \"$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 @@ -14554,7 +14540,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -14640,7 +14626,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:14644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:14630: \"$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 @@ -14670,7 +14656,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:14674: checking for pthread link with -lpthreads -lmach -lexc" >&5 +echo "configure:14660: 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 @@ -14681,7 +14667,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -14762,7 +14748,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14752: \"$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 @@ -14774,7 +14760,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -14860,7 +14846,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:14864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:14850: \"$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 @@ -14890,7 +14876,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:14894: checking for pthread link with -lpthreads -lexc" >&5 +echo "configure:14880: 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 @@ -14901,7 +14887,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -14982,7 +14968,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:14986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14972: \"$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 @@ -14994,7 +14980,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -15080,7 +15066,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:15084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:15070: \"$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 @@ -15111,7 +15097,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:15115: checking for pthread link with -lpthreads" >&5 +echo "configure:15101: 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 @@ -15122,7 +15108,7 @@ else if test "$cross_compiling" = yes; then cat > conftest.$ac_ext < @@ -15203,7 +15189,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:15207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15193: \"$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 @@ -15215,7 +15201,7 @@ fi rm -f conftest* else cat > conftest.$ac_ext < @@ -15301,7 +15287,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:15305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:15291: \"$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 @@ -15343,12 +15329,12 @@ EOF for ac_func in sched_yield pthread_yield do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15347: checking for $ac_func" >&5 +echo "configure:15333: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15362: \"$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 @@ -15400,7 +15386,7 @@ done if test $ac_cv_func_sched_yield = no -a \ $ac_cv_func_pthread_yield = no ; then echo $ac_n "checking for sched_yield in -lrt""... $ac_c" 1>&6 -echo "configure:15404: checking for sched_yield in -lrt" >&5 +echo "configure:15390: 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 @@ -15408,7 +15394,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lrt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15409: \"$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 @@ -15451,12 +15437,12 @@ fi for ac_func in thr_yield do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15455: checking for $ac_func" >&5 +echo "configure:15441: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15470: \"$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 @@ -15514,12 +15500,12 @@ done for ac_func in pthread_kill pthread_rwlock_destroy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15518: checking for $ac_func" >&5 +echo "configure:15504: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15533: \"$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 @@ -15569,13 +15555,13 @@ done echo $ac_n "checking for pthread_detach with ""... $ac_c" 1>&6 -echo "configure:15573: checking for pthread_detach with " >&5 +echo "configure:15559: checking for pthread_detach with " >&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 < @@ -15587,7 +15573,7 @@ int main() { pthread_detach(NULL); ; return 0; } EOF -if { (eval echo configure:15591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15577: \"$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 @@ -15619,12 +15605,12 @@ EOF do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15623: checking for $ac_func" >&5 +echo "configure:15609: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15638: \"$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 @@ -15677,12 +15663,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:15681: checking for $ac_func" >&5 +echo "configure:15667: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15696: \"$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 @@ -15731,7 +15717,7 @@ fi done echo $ac_n "checking for LinuxThreads implementation""... $ac_c" 1>&6 -echo "configure:15735: checking for LinuxThreads implementation" >&5 +echo "configure:15721: 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 @@ -15744,7 +15730,7 @@ echo "$ac_t""$ol_cv_sys_linux_threads" 1>&6 echo $ac_n "checking for LinuxThreads consistency""... $ac_c" 1>&6 -echo "configure:15748: checking for LinuxThreads consistency" >&5 +echo "configure:15734: checking for LinuxThreads consistency" >&5 if eval "test \"\${ol_cv_linux_threads+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -15769,7 +15755,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:15773: checking if pthread_create() works" >&5 +echo "configure:15759: 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 @@ -15778,7 +15764,7 @@ else ol_cv_pthread_create_works=yes else cat > conftest.$ac_ext < @@ -15864,7 +15850,7 @@ int main(argc, argv) } EOF -if { (eval echo configure:15868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:15854: \"$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 @@ -15886,7 +15872,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:15890: checking if select yields when using pthreads" >&5 +echo "configure:15876: 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 @@ -15895,7 +15881,7 @@ else ol_cv_pthread_select_yields=cross else cat > conftest.$ac_ext < @@ -15971,7 +15957,7 @@ int main(argc, argv) exit(2); } EOF -if { (eval echo configure:15975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:15961: \"$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 @@ -16015,17 +16001,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:16019: checking for $ac_hdr" >&5 +echo "configure:16005: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16029: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16015: \"$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* @@ -16055,12 +16041,12 @@ done ol_with_threads=found echo $ac_n "checking for cthread_fork""... $ac_c" 1>&6 -echo "configure:16059: checking for cthread_fork" >&5 +echo "configure:16045: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16074: \"$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 @@ -16106,7 +16092,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:16110: checking for cthread_fork with -all_load" >&5 +echo "configure:16096: 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 @@ -16114,7 +16100,7 @@ else save_LIBS="$LIBS" LIBS="-all_load $LIBS" cat > conftest.$ac_ext < int main() { @@ -16123,7 +16109,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:16127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16113: \"$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 @@ -16153,12 +16139,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:16157: checking for cthread_fork" >&5 +echo "configure:16143: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16172: \"$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 @@ -16232,17 +16218,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:16236: checking for $ac_hdr" >&5 +echo "configure:16222: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16246: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16232: \"$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* @@ -16271,7 +16257,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:16275: checking for pth_version in -lpth" >&5 +echo "configure:16261: 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 @@ -16279,7 +16265,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpth $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16280: \"$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 @@ -16335,17 +16321,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:16339: checking for $ac_hdr" >&5 +echo "configure:16325: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16335: \"$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* @@ -16373,7 +16359,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:16377: checking for thr_create in -lthread" >&5 +echo "configure:16363: 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 @@ -16381,7 +16367,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lthread $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16382: \"$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 @@ -16432,12 +16418,12 @@ EOF do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16436: checking for $ac_func" >&5 +echo "configure:16422: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16451: \"$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 @@ -16492,17 +16478,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:16496: checking for $ac_hdr" >&5 +echo "configure:16482: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16506: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16492: \"$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* @@ -16530,7 +16516,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:16534: checking for lwp_create in -llwp" >&5 +echo "configure:16520: 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 @@ -16538,7 +16524,7 @@ else ac_save_LIBS="$LIBS" LIBS="-llwp $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16539: \"$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 @@ -16602,17 +16588,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:16606: checking for $ac_hdr" >&5 +echo "configure:16592: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16602: \"$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* @@ -16641,12 +16627,12 @@ done for ac_func in sched_yield pthread_yield do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:16645: checking for $ac_func" >&5 +echo "configure:16631: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16660: \"$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 @@ -16696,12 +16682,12 @@ done echo $ac_n "checking for LinuxThreads pthread.h""... $ac_c" 1>&6 -echo "configure:16700: checking for LinuxThreads pthread.h" >&5 +echo "configure:16686: 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 @@ -16731,17 +16717,17 @@ EOF do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:16735: checking for $ac_hdr" >&5 +echo "configure:16721: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16745: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16731: \"$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* @@ -16771,17 +16757,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:16775: checking for $ac_hdr" >&5 +echo "configure:16761: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16771: \"$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* @@ -16811,17 +16797,17 @@ done do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:16815: checking for $ac_hdr" >&5 +echo "configure:16801: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16811: \"$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* @@ -16880,20 +16866,20 @@ EOF echo $ac_n "checking for thread specific errno""... $ac_c" 1>&6 -echo "configure:16884: checking for thread specific errno" >&5 +echo "configure:16870: 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 < int main() { errno = 0; ; return 0; } EOF -if { (eval echo configure:16897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16883: \"$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 @@ -16909,20 +16895,20 @@ fi 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:16913: checking for thread specific h_errno" >&5 +echo "configure:16899: 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 < int main() { h_errno = 0; ; return 0; } EOF -if { (eval echo configure:16926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:16912: \"$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 @@ -16980,17 +16966,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:16984: checking for $ac_hdr" >&5 +echo "configure:16970: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:16994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:16980: \"$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* @@ -17018,13 +17004,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:17022: checking if Berkeley DB header compatibility" >&5 +echo "configure:17008: 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 <&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:17065: checking for Berkeley DB link (default)" >&5 +echo "configure:17051: 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 @@ -17071,7 +17057,7 @@ else LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_db_none=yes else @@ -17142,7 +17128,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:17146: checking for Berkeley DB link (-ldb4)" >&5 +echo "configure:17132: 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 @@ -17152,7 +17138,7 @@ else LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_db_db4=yes else @@ -17222,18 +17208,18 @@ echo "$ac_t""$ol_cv_db_db4" 1>&6 fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6 -echo "configure:17227: checking for Berkeley DB link (-ldb)" >&5 -if eval "test \"\${ol_cv_db_db+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb-4)""... $ac_c" 1>&6 +echo "configure:17213: 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 - ol_DB_LIB=-ldb + ol_DB_LIB=-ldb-4 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db=yes + ol_cv_db_db_4=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db=no + ol_cv_db_db_4=no fi rm -f conftest* @@ -17295,26 +17281,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db" 1>&6 +echo "$ac_t""$ol_cv_db_db_4" 1>&6 - if test $ol_cv_db_db = yes ; then - ol_cv_lib_db=-ldb + if test $ol_cv_db_db_4 = yes ; then + ol_cv_lib_db=-ldb-4 fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6 -echo "configure:17308: checking for Berkeley DB link (-ldb3)" >&5 -if eval "test \"\${ol_cv_db_db3+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6 +echo "configure:17294: 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 - ol_DB_LIB=-ldb3 + ol_DB_LIB=-ldb ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db3=yes + ol_cv_db_db=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db3=no + ol_cv_db_db=no fi rm -f conftest* @@ -17376,26 +17362,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db3" 1>&6 +echo "$ac_t""$ol_cv_db_db" 1>&6 - if test $ol_cv_db_db3 = yes ; then - ol_cv_lib_db=-ldb3 + if test $ol_cv_db_db = yes ; then + ol_cv_lib_db=-ldb fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6 -echo "configure:17389: checking for Berkeley DB link (-ldb2)" >&5 -if eval "test \"\${ol_cv_db_db2+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6 +echo "configure:17375: 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 - ol_DB_LIB=-ldb2 + ol_DB_LIB=-ldb3 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db2=yes + ol_cv_db_db3=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db2=no + ol_cv_db_db3=no fi rm -f conftest* @@ -17457,26 +17443,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db2" 1>&6 +echo "$ac_t""$ol_cv_db_db3" 1>&6 - if test $ol_cv_db_db2 = yes ; then - ol_cv_lib_db=-ldb2 + if test $ol_cv_db_db3 = yes ; then + ol_cv_lib_db=-ldb3 fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6 -echo "configure:17470: checking for Berkeley DB link (-ldb1)" >&5 -if eval "test \"\${ol_cv_db_db1+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb-3)""... $ac_c" 1>&6 +echo "configure:17456: 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 - ol_DB_LIB=-ldb1 + ol_DB_LIB=-ldb-3 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db1=yes + ol_cv_db_db_3=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db1=no + ol_cv_db_db_3=no fi rm -f conftest* @@ -17538,77 +17524,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db1" 1>&6 - - if test $ol_cv_db_db1 = yes ; then - ol_cv_lib_db=-ldb1 - fi -fi - +echo "$ac_t""$ol_cv_db_db_3" 1>&6 - if test "$ol_cv_lib_db" != no ; then - ol_cv_berkeley_db=yes - fi + if test $ol_cv_db_db_3 = yes ; then + ol_cv_lib_db=-ldb-3 fi fi - else - ol_cv_berkeley_db=no -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:17562: 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 -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:17572: \"$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* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -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:17602: checking for Berkeley DB link (default)" >&5 -if eval "test \"\${ol_cv_db_none+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6 +echo "configure:17537: 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 - ol_DB_LIB= + ol_DB_LIB=-ldb2 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_none=yes + ol_cv_db_db2=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_none=no + ol_cv_db_db2=no fi rm -f conftest* @@ -17670,26 +17605,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_none" 1>&6 +echo "$ac_t""$ol_cv_db_db2" 1>&6 - if test $ol_cv_db_none = yes ; then - ol_cv_lib_db=yes + if test $ol_cv_db_db2 = yes ; then + ol_cv_lib_db=-ldb2 fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6 -echo "configure:17683: checking for Berkeley DB link (-ldb4)" >&5 -if eval "test \"\${ol_cv_db_db4+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb-2)""... $ac_c" 1>&6 +echo "configure:17618: 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 - ol_DB_LIB=-ldb4 + ol_DB_LIB=-ldb-2 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db4=yes + ol_cv_db_db_2=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db4=no + ol_cv_db_db_2=no fi rm -f conftest* @@ -17751,26 +17686,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db4" 1>&6 +echo "$ac_t""$ol_cv_db_db_2" 1>&6 - if test $ol_cv_db_db4 = yes ; then - ol_cv_lib_db=-ldb4 + if test $ol_cv_db_db_2 = yes ; then + ol_cv_lib_db=-ldb-2 fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6 -echo "configure:17764: checking for Berkeley DB link (-ldb)" >&5 -if eval "test \"\${ol_cv_db_db+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6 +echo "configure:17699: 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 - ol_DB_LIB=-ldb + ol_DB_LIB=-ldb1 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db=yes + ol_cv_db_db1=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db=no + ol_cv_db_db1=no fi rm -f conftest* @@ -17832,26 +17767,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db" 1>&6 +echo "$ac_t""$ol_cv_db_db1" 1>&6 - if test $ol_cv_db_db = yes ; then - ol_cv_lib_db=-ldb + if test $ol_cv_db_db1 = yes ; then + ol_cv_lib_db=-ldb1 fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6 -echo "configure:17845: checking for Berkeley DB link (-ldb3)" >&5 -if eval "test \"\${ol_cv_db_db3+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb-1)""... $ac_c" 1>&6 +echo "configure:17780: 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 - ol_DB_LIB=-ldb3 + ol_DB_LIB=-ldb-1 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db3=yes + ol_cv_db_db_1=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db3=no + ol_cv_db_db_1=no fi rm -f conftest* @@ -17913,26 +17848,77 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db3" 1>&6 +echo "$ac_t""$ol_cv_db_db_1" 1>&6 - if test $ol_cv_db_db3 = yes ; then - ol_cv_lib_db=-ldb3 + if test $ol_cv_db_db_1 = yes ; then + ol_cv_lib_db=-ldb-1 + fi +fi + + + if test "$ol_cv_lib_db" != no ; then + ol_cv_berkeley_db=yes + fi fi fi + else + ol_cv_berkeley_db=no +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:17872: 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 +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:17882: \"$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* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +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 (-ldb2)""... $ac_c" 1>&6 -echo "configure:17926: checking for Berkeley DB link (-ldb2)" >&5 -if eval "test \"\${ol_cv_db_db2+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (default)""... $ac_c" 1>&6 +echo "configure:17912: 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 - ol_DB_LIB=-ldb2 + ol_DB_LIB= ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:17969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db2=yes + ol_cv_db_none=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db2=no + ol_cv_db_none=no fi rm -f conftest* @@ -17994,26 +17980,26 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db2" 1>&6 +echo "$ac_t""$ol_cv_db_none" 1>&6 - if test $ol_cv_db_db2 = yes ; then - ol_cv_lib_db=-ldb2 + if test $ol_cv_db_none = yes ; then + ol_cv_lib_db=yes fi fi if test $ol_cv_lib_db = no ; then - echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6 -echo "configure:18007: checking for Berkeley DB link (-ldb1)" >&5 -if eval "test \"\${ol_cv_db_db1+set}\" = set"; then + echo $ac_n "checking for Berkeley DB link (-ldb4)""... $ac_c" 1>&6 +echo "configure:17993: 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 - ol_DB_LIB=-ldb1 + ol_DB_LIB=-ldb4 ol_LIBS=$LIBS LIBS="$ol_DB_LIB $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - ol_cv_db_db1=yes + ol_cv_db_db4=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ol_cv_db_db1=no + ol_cv_db_db4=no fi rm -f conftest* @@ -18075,32 +18061,680 @@ rm -f conftest* fi -echo "$ac_t""$ol_cv_db_db1" 1>&6 +echo "$ac_t""$ol_cv_db_db4" 1>&6 - if test $ol_cv_db_db1 = yes ; then - ol_cv_lib_db=-ldb1 + if test $ol_cv_db_db4 = yes ; then + ol_cv_lib_db=-ldb4 fi 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:18090: checking for Berkeley DB thread support" >&5 -if eval "test \"\${ol_cv_berkeley_db_thread+set}\" = set"; then +if test $ol_cv_lib_db = no ; then + echo $ac_n "checking for Berkeley DB link (-ldb-4)""... $ac_c" 1>&6 +echo "configure:18074: 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 - ol_LIBS="$LIBS" - if test $ol_cv_lib_db != yes ; then - LIBS="$ol_cv_lib_db" - fi + ol_DB_LIB=-ldb-4 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" - if test "$cross_compiling" = yes; then - ol_cv_berkeley_db_thread=cross -else - cat > conftest.$ac_ext < conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18131: \"$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 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db_4=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db_4" 1>&6 + + if test $ol_cv_db_db_4 = yes ; then + ol_cv_lib_db=-ldb-4 + fi +fi + +if test $ol_cv_lib_db = no ; then + echo $ac_n "checking for Berkeley DB link (-ldb)""... $ac_c" 1>&6 +echo "configure:18155: 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 + + ol_DB_LIB=-ldb + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ol_cv_db_db=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db" 1>&6 + + if test $ol_cv_db_db = yes ; then + ol_cv_lib_db=-ldb + fi +fi + +if test $ol_cv_lib_db = no ; then + echo $ac_n "checking for Berkeley DB link (-ldb3)""... $ac_c" 1>&6 +echo "configure:18236: 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 + + ol_DB_LIB=-ldb3 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ol_cv_db_db3=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db3=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db3" 1>&6 + + if test $ol_cv_db_db3 = yes ; then + ol_cv_lib_db=-ldb3 + fi +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:18317: 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 + + ol_DB_LIB=-ldb-3 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18374: \"$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 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db_3=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db_3" 1>&6 + + if test $ol_cv_db_db_3 = yes ; then + ol_cv_lib_db=-ldb-3 + fi +fi + +if test $ol_cv_lib_db = no ; then + echo $ac_n "checking for Berkeley DB link (-ldb2)""... $ac_c" 1>&6 +echo "configure:18398: 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 + + ol_DB_LIB=-ldb2 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ol_cv_db_db2=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db2=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db2" 1>&6 + + if test $ol_cv_db_db2 = yes ; then + ol_cv_lib_db=-ldb2 + fi +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:18479: 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 + + ol_DB_LIB=-ldb-2 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18536: \"$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 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db_2=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db_2" 1>&6 + + if test $ol_cv_db_db_2 = yes ; then + ol_cv_lib_db=-ldb-2 + fi +fi + +if test $ol_cv_lib_db = no ; then + echo $ac_n "checking for Berkeley DB link (-ldb1)""... $ac_c" 1>&6 +echo "configure:18560: 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 + + ol_DB_LIB=-ldb1 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ol_cv_db_db1=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db1=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db1" 1>&6 + + if test $ol_cv_db_db1 = yes ; then + ol_cv_lib_db=-ldb1 + fi +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:18641: 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 + + ol_DB_LIB=-ldb-1 + ol_LIBS=$LIBS + LIBS="$ol_DB_LIB $LIBS" + + cat > conftest.$ac_ext < +#else +# include +#endif + +#ifndef DB_VERSION_MAJOR +# define DB_VERSION_MAJOR 1 +#endif + +#ifndef NULL +#define NULL ((void*)0) +#endif + +int main() { + +#if DB_VERSION_MAJOR > 1 + { + char *version; + int major, minor, patch; + + version = db_version( &major, &minor, &patch ); + + if( major != DB_VERSION_MAJOR || + minor < DB_VERSION_MINOR ) + { + printf("Berkeley DB version mismatch\n" + "\texpected: %s\n\tgot: %s\n", + DB_VERSION_STRING, version); + return 1; + } + } +#endif + +#if DB_VERSION_MAJOR > 2 + db_env_create( NULL, 0 ); +#elif DB_VERSION_MAJOR > 1 + db_appexit( NULL ); +#else + (void) dbopen( NULL, 0, 0, 0, NULL); +#endif + +; return 0; } +EOF +if { (eval echo configure:18698: \"$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 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ol_cv_db_db_1=no +fi +rm -f conftest* + + LIBS="$ol_LIBS" + +fi + +echo "$ac_t""$ol_cv_db_db_1" 1>&6 + + if test $ol_cv_db_db_1 = yes ; then + ol_cv_lib_db=-ldb-1 + fi +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:18724: 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 + + ol_LIBS="$LIBS" + if test $ol_cv_lib_db != yes ; then + LIBS="$ol_cv_lib_db" + fi + + if test "$cross_compiling" = yes; then + ol_cv_berkeley_db_thread=cross +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:18805: \"$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 @@ -18228,13 +18862,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:18232: checking Berkeley DB version for BDB backend" >&5 +echo "configure:18866: 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 < @@ -18281,18 +18915,18 @@ fi 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:18285: checking for MDBM library" >&5 +echo "configure:18919: 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:18291: checking for mdbm_set_chain" >&5 +echo "configure:18925: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18954: \"$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 @@ -18335,7 +18969,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for mdbm_set_chain in -lmdbm""... $ac_c" 1>&6 -echo "configure:18339: checking for mdbm_set_chain in -lmdbm" >&5 +echo "configure:18973: 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 @@ -18343,7 +18977,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lmdbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:18992: \"$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 @@ -18389,17 +19023,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:18393: checking for $ac_hdr" >&5 +echo "configure:19027: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:18403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:19037: \"$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* @@ -18426,7 +19060,7 @@ fi done echo $ac_n "checking for db""... $ac_c" 1>&6 -echo "configure:18430: checking for db" >&5 +echo "configure:19064: checking for db" >&5 if eval "test \"\${ol_cv_mdbm+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18459,18 +19093,18 @@ fi 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:18463: checking for GDBM library" >&5 +echo "configure:19097: 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:18469: checking for gdbm_open" >&5 +echo "configure:19103: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19132: \"$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 @@ -18513,7 +19147,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gdbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:18517: checking for gdbm_open in -lgdbm" >&5 +echo "configure:19151: 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 @@ -18521,7 +19155,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lgdbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19170: \"$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 @@ -18567,17 +19201,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:18571: checking for $ac_hdr" >&5 +echo "configure:19205: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:18581: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:19215: \"$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* @@ -18604,7 +19238,7 @@ fi done echo $ac_n "checking for db""... $ac_c" 1>&6 -echo "configure:18608: checking for db" >&5 +echo "configure:19242: checking for db" >&5 if eval "test \"\${ol_cv_gdbm+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18638,18 +19272,18 @@ fi if test $ol_with_ldbm_api = ndbm ; then echo $ac_n "checking for NDBM library""... $ac_c" 1>&6 -echo "configure:18642: checking for NDBM library" >&5 +echo "configure:19276: 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:18648: checking for dbm_open" >&5 +echo "configure:19282: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19311: \"$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 @@ -18692,7 +19326,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dbm_open in -lndbm""... $ac_c" 1>&6 -echo "configure:18696: checking for dbm_open in -lndbm" >&5 +echo "configure:19330: 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 @@ -18700,7 +19334,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lndbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19349: \"$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 @@ -18731,7 +19365,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:18735: checking for dbm_open in -ldbm" >&5 +echo "configure:19369: 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 @@ -18739,7 +19373,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19388: \"$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 @@ -18787,17 +19421,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:18791: checking for $ac_hdr" >&5 +echo "configure:19425: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:18801: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:19435: \"$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* @@ -18824,7 +19458,7 @@ fi done echo $ac_n "checking for db""... $ac_c" 1>&6 -echo "configure:18828: checking for db" >&5 +echo "configure:19462: checking for db" >&5 if eval "test \"\${ol_cv_ndbm+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -18881,17 +19515,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:18885: checking for $ac_hdr" >&5 +echo "configure:19519: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:18895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:19529: \"$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* @@ -18913,11 +19547,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:18917: checking for TCP wrappers library" >&5 +echo "configure:19551: checking for TCP wrappers library" >&5 save_LIBS="$LIBS" LIBS="$LIBS -lwrap" cat > conftest.$ac_ext < @@ -18932,7 +19566,7 @@ hosts_access(req) ; return 0; } EOF -if { (eval echo configure:18936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19570: \"$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 @@ -18944,7 +19578,7 @@ else LIBS="$LIBS -lnsl" cat > conftest.$ac_ext < @@ -18959,7 +19593,7 @@ hosts_access(req) ; return 0; } EOF -if { (eval echo configure:18963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19597: \"$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 @@ -18999,12 +19633,12 @@ fi if test $ol_enable_syslog != no ; then echo $ac_n "checking for openlog""... $ac_c" 1>&6 -echo "configure:19003: checking for openlog" >&5 +echo "configure:19637: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19666: \"$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 @@ -19057,7 +19691,7 @@ fi ol_link_sql=no if test $ol_enable_sql != no ; then echo $ac_n "checking for SQLDriverConnect in -liodbc""... $ac_c" 1>&6 -echo "configure:19061: checking for SQLDriverConnect in -liodbc" >&5 +echo "configure:19695: 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 @@ -19065,7 +19699,7 @@ else ac_save_LIBS="$LIBS" LIBS="-liodbc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19714: \"$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 @@ -19101,7 +19735,7 @@ fi ol_link_sql="-liodbc" else echo $ac_n "checking for SQLDriverConnect in -lodbc""... $ac_c" 1>&6 -echo "configure:19105: checking for SQLDriverConnect in -lodbc" >&5 +echo "configure:19739: 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 @@ -19109,7 +19743,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lodbc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19758: \"$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 @@ -19159,17 +19793,17 @@ for ac_hdr in termcap.h ncurses.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:19163: checking for $ac_hdr" >&5 +echo "configure:19797: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:19173: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:19807: \"$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* @@ -19198,7 +19832,7 @@ done if test $ol_link_termcap = no ; then echo $ac_n "checking for tputs in -ltermcap""... $ac_c" 1>&6 -echo "configure:19202: checking for tputs in -ltermcap" >&5 +echo "configure:19836: checking for tputs in -ltermcap" >&5 ac_lib_var=`echo termcap'_'tputs | sed 'y%./+-:%__p__%'` if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19206,7 +19840,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ltermcap $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19855: \"$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 @@ -19250,7 +19884,7 @@ fi if test $ol_link_termcap = no ; then echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6 -echo "configure:19254: checking for initscr in -lncurses" >&5 +echo "configure:19888: checking for initscr in -lncurses" >&5 ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-:%__p__%'` if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19258,7 +19892,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lncurses $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19907: \"$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 @@ -19315,17 +19949,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:19319: checking for $ac_hdr" >&5 +echo "configure:19953: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:19329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:19963: \"$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* @@ -19354,7 +19988,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:19358: checking for sasl_client_init in -lsasl2" >&5 +echo "configure:19992: 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 @@ -19362,7 +19996,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsasl2 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20011: \"$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 @@ -19392,7 +20026,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:19396: checking for sasl_client_init in -lsasl" >&5 +echo "configure:20030: 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 @@ -19400,7 +20034,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsasl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20049: \"$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 @@ -19447,13 +20081,13 @@ fi fi else echo $ac_n "checking Cyrus SASL library version""... $ac_c" 1>&6 -echo "configure:19451: checking Cyrus SASL library version" >&5 +echo "configure:20085: 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 <&6 -echo "configure:19540: checking fetch(3) library" >&5 +echo "configure:20174: 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 < @@ -19552,7 +20186,7 @@ int main() { struct url *u = fetchParseURL("file:///"); ; return 0; } EOF -if { (eval echo configure:19556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ol_cv_lib_fetch=yes else @@ -19590,17 +20224,17 @@ if test $ol_with_readline != no ; then do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:19594: checking for $ac_hdr" >&5 +echo "configure:20228: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:19604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:20238: \"$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* @@ -19631,7 +20265,7 @@ done save_LIBS="$LIBS" LIBS="$TERMCAP_LIBS $LIBS" echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6 -echo "configure:19635: checking for readline in -lreadline" >&5 +echo "configure:20269: checking for readline in -lreadline" >&5 ac_lib_var=`echo readline'_'readline | sed 'y%./+-:%__p__%'` if eval "test \"\${ac_cv_lib_$ac_lib_var+set}\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -19639,7 +20273,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lreadline $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -19692,12 +20326,12 @@ fi if test $ol_enable_crypt != no ; then echo $ac_n "checking for crypt""... $ac_c" 1>&6 -echo "configure:19696: checking for crypt" >&5 +echo "configure:20330: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20359: \"$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 @@ -19740,7 +20374,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:19744: checking for crypt in -lcrypt" >&5 +echo "configure:20378: 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 @@ -19748,7 +20382,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrypt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20397: \"$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 @@ -19802,12 +20436,12 @@ fi if test $ol_enable_proctitle != no ; then echo $ac_n "checking for setproctitle""... $ac_c" 1>&6 -echo "configure:19806: checking for setproctitle" >&5 +echo "configure:20440: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20469: \"$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 @@ -19850,7 +20484,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for setproctitle in -lutil""... $ac_c" 1>&6 -echo "configure:19854: checking for setproctitle in -lutil" >&5 +echo "configure:20488: 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 @@ -19858,7 +20492,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20507: \"$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 @@ -19909,17 +20543,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:19913: checking for $ac_hdr" >&5 +echo "configure:20547: 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 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:19923: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:20557: \"$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* @@ -19948,7 +20582,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:19952: checking for SLPOpen in -lslp" >&5 +echo "configure:20586: 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 @@ -19956,7 +20590,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lslp $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:20605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -20002,12 +20636,12 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:20006: checking for ANSI C header files" >&5 +echo "configure:20640: 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 < #include @@ -20015,7 +20649,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:20019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:20653: \"$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* @@ -20032,7 +20666,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 @@ -20050,7 +20684,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 @@ -20071,7 +20705,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #if ((' ' & 0x0FF) == 0x020) @@ -20089,7 +20723,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:20093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:20727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -20113,12 +20747,12 @@ EOF fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:20117: checking for mode_t" >&5 +echo "configure:20751: 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 < #if STDC_HEADERS @@ -20149,12 +20783,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:20153: checking for off_t" >&5 +echo "configure:20787: 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 < #if STDC_HEADERS @@ -20185,12 +20819,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:20189: checking for pid_t" >&5 +echo "configure:20823: 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 < #if STDC_HEADERS @@ -20221,19 +20855,19 @@ EOF fi echo $ac_n "checking for ptrdiff_t""... $ac_c" 1>&6 -echo "configure:20225: checking for ptrdiff_t" >&5 +echo "configure:20859: 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 < int main() { ptrdiff_t p ; return 0; } EOF -if { (eval echo configure:20237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* am_cv_type_ptrdiff_t=yes else @@ -20254,12 +20888,12 @@ EOF fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:20258: checking return type of signal handlers" >&5 +echo "configure:20892: 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 < #include @@ -20276,7 +20910,7 @@ int main() { int i; ; return 0; } EOF -if { (eval echo configure:20280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:20914: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -20295,12 +20929,12 @@ EOF echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:20299: checking for size_t" >&5 +echo "configure:20933: 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 < #if STDC_HEADERS @@ -20332,12 +20966,12 @@ fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:20336: checking for ssize_t" >&5 +echo "configure:20970: 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 < #if STDC_HEADERS @@ -20368,12 +21002,12 @@ EOF fi echo $ac_n "checking for caddr_t""... $ac_c" 1>&6 -echo "configure:20372: checking for caddr_t" >&5 +echo "configure:21006: 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 < #if STDC_HEADERS @@ -20405,12 +21039,12 @@ fi echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:20409: checking for socklen_t" >&5 +echo "configure:21043: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_type_socklen_t=yes else @@ -20445,12 +21079,12 @@ EOF fi echo $ac_n "checking for member st_blksize in aggregate type struct stat""... $ac_c" 1>&6 -echo "configure:20449: checking for member st_blksize in aggregate type struct stat" >&5 +echo "configure:21083: 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 < #include @@ -20458,7 +21092,7 @@ int main() { struct stat foo; foo.st_blksize; ; return 0; } EOF -if { (eval echo configure:20462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21096: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_struct_member_st_blksize=yes else @@ -20480,12 +21114,12 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:20484: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:21118: 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 < #include @@ -20494,7 +21128,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:20498: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -20515,12 +21149,12 @@ EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:20519: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:21153: 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 < #include @@ -20528,7 +21162,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:20532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21166: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -20549,12 +21183,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:20553: checking for uid_t in sys/types.h" >&5 +echo "configure:21187: 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 @@ -20583,19 +21217,19 @@ EOF fi echo $ac_n "checking for sig_atomic_t""... $ac_c" 1>&6 -echo "configure:20587: checking for sig_atomic_t" >&5 +echo "configure:21221: 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 < int main() { sig_atomic_t atomic; ; return 0; } EOF -if { (eval echo configure:20599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_type_sig_atomic_t=yes else @@ -20619,13 +21253,13 @@ EOF # test for pw_gecos in struct passwd echo $ac_n "checking struct passwd for pw_gecos""... $ac_c" 1>&6 -echo "configure:20623: checking struct passwd for pw_gecos" >&5 +echo "configure:21257: 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 < int main() { @@ -20635,7 +21269,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:20639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_struct_passwd_pw_gecos=yes else @@ -20657,13 +21291,13 @@ fi # test for pw_passwd in struct passwd echo $ac_n "checking struct passwd for pw_passwd""... $ac_c" 1>&6 -echo "configure:20661: checking struct passwd for pw_passwd" >&5 +echo "configure:21295: 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 < int main() { @@ -20673,7 +21307,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:20677: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_struct_passwd_pw_passwd=yes else @@ -20695,7 +21329,7 @@ fi echo $ac_n "checking if toupper() requires islower()""... $ac_c" 1>&6 -echo "configure:20699: checking if toupper() requires islower()" >&5 +echo "configure:21333: 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 @@ -20704,7 +21338,7 @@ else ol_cv_c_upper_lower=safe else cat > conftest.$ac_ext < @@ -20716,7 +21350,7 @@ main() exit(1); } EOF -if { (eval echo configure:20720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:21354: \"$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 @@ -20739,12 +21373,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:20743: checking for working const" >&5 +echo "configure:21377: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -20814,12 +21448,12 @@ EOF fi echo $ac_n "checking if compiler understands volatile""... $ac_c" 1>&6 -echo "configure:20818: checking if compiler understands volatile" >&5 +echo "configure:21452: 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 <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21466: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ol_cv_c_volatile=yes else @@ -20858,14 +21492,14 @@ EOF else echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:20862: checking whether byte ordering is bigendian" >&5 +echo "configure:21496: 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 < #include @@ -20876,11 +21510,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:20880: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21514: \"$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 < #include @@ -20891,7 +21525,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:20895: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -20911,7 +21545,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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:21562: \"$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 @@ -20950,13 +21584,13 @@ fi fi echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:20954: checking size of short" >&5 +echo "configure:21588: 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 < @@ -20966,7 +21600,7 @@ int main() { switch (0) case 0: case (sizeof (short) == $ac_size):; ; return 0; } EOF -if { (eval echo configure:20970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sizeof_short=$ac_size else @@ -20989,13 +21623,13 @@ EOF echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:20993: checking size of int" >&5 +echo "configure:21627: 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 < @@ -21005,7 +21639,7 @@ int main() { switch (0) case 0: case (sizeof (int) == $ac_size):; ; return 0; } EOF -if { (eval echo configure:21009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sizeof_int=$ac_size else @@ -21028,13 +21662,13 @@ EOF echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:21032: checking size of long" >&5 +echo "configure:21666: 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 < @@ -21044,7 +21678,7 @@ int main() { switch (0) case 0: case (sizeof (long) == $ac_size):; ; return 0; } EOF -if { (eval echo configure:21048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:21682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_sizeof_long=$ac_size else @@ -21095,7 +21729,7 @@ EOF echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:21099: checking for 8-bit clean memcmp" >&5 +echo "configure:21733: 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 @@ -21103,7 +21737,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:21751: \"$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 @@ -21131,12 +21765,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:21135: checking for strftime" >&5 +echo "configure:21769: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:21798: \"$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 @@ -21182,7 +21816,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:21186: checking for strftime in -lintl" >&5 +echo "configure:21820: 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 @@ -21190,7 +21824,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:21839: \"$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 @@ -21229,12 +21863,12 @@ fi echo $ac_n "checking for inet_aton()""... $ac_c" 1>&6 -echo "configure:21233: checking for inet_aton()" >&5 +echo "configure:21867: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:21894: \"$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 @@ -21278,12 +21912,12 @@ EOF echo $ac_n "checking for _spawnlp""... $ac_c" 1>&6 -echo "configure:21282: checking for _spawnlp" >&5 +echo "configure:21916: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:21945: \"$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 @@ -21331,12 +21965,12 @@ fi echo $ac_n "checking for _snprintf""... $ac_c" 1>&6 -echo "configure:21335: checking for _snprintf" >&5 +echo "configure:21969: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:21998: \"$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 @@ -21386,12 +22020,12 @@ fi echo $ac_n "checking for _vsnprintf""... $ac_c" 1>&6 -echo "configure:21390: checking for _vsnprintf" >&5 +echo "configure:22024: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22053: \"$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 @@ -21441,12 +22075,12 @@ fi echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:21445: checking for vprintf" >&5 +echo "configure:22079: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22108: \"$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 @@ -21494,12 +22128,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:21498: checking for _doprnt" >&5 +echo "configure:22132: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22161: \"$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 @@ -21552,12 +22186,12 @@ if test $ac_cv_func_vprintf = yes ; then for ac_func in vsnprintf vsprintf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:21556: checking for $ac_func" >&5 +echo "configure:22190: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22219: \"$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 @@ -21663,12 +22297,12 @@ for ac_func in \ do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:21667: checking for $ac_func" >&5 +echo "configure:22301: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22330: \"$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 @@ -21720,12 +22354,12 @@ done for ac_func in getopt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:21724: checking for $ac_func" >&5 +echo "configure:22358: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22387: \"$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 @@ -21782,13 +22416,13 @@ fi # Check Configuration echo $ac_n "checking declaration of sys_errlist""... $ac_c" 1>&6 -echo "configure:21786: checking declaration of sys_errlist" >&5 +echo "configure:22420: 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 < @@ -21801,7 +22435,7 @@ int main() { char *c = (char *) *sys_errlist ; return 0; } EOF -if { (eval echo configure:21805: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:22439: \"$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 @@ -21824,20 +22458,20 @@ EOF echo $ac_n "checking existence of sys_errlist""... $ac_c" 1>&6 -echo "configure:21828: checking existence of sys_errlist" >&5 +echo "configure:22462: 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 < int main() { char *c = (char *) *sys_errlist ; return 0; } EOF -if { (eval echo configure:21841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:22475: \"$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 @@ -21931,6 +22565,12 @@ if test "$ol_link_spasswd" != no ; then #define SLAPD_SPASSWD 1 EOF +fi +if test "$ol_enable_multimaster" != no ; then + cat >> confdefs.h <<\EOF +#define SLAPD_MULTIMASTER 1 +EOF + fi if test "$ol_enable_phonetic" != no ; then cat >> confdefs.h <<\EOF @@ -22444,6 +23084,7 @@ s%@AWK@%$AWK%g s%@AMTARFLAGS@%$AMTARFLAGS%g s%@SET_MAKE@%$SET_MAKE%g s%@OPENLDAP_LIBVERSION@%$OPENLDAP_LIBVERSION%g +s%@OPENLDAP_RELEASE_DATE@%$OPENLDAP_RELEASE_DATE%g s%@top_builddir@%$top_builddir%g s%@ldap_subdir@%$ldap_subdir%g s%@CC@%$CC%g diff --git a/configure.in b/configure.in index 788050637b..37d5a292af 100644 --- a/configure.in +++ b/configure.in @@ -83,6 +83,9 @@ AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_PATCH,$OL_PATCH,Patch) OPENLDAP_LIBVERSION=$OL_API_LIB AC_SUBST(OPENLDAP_LIBVERSION)dnl +OPENLDAP_RELEASE_DATE="$OL_RELEASE_DATE" +AC_SUBST(OPENLDAP_RELEASE_DATE)dnl + dnl We use autoconf features new to 2.13. dnl aclocal.m4 should be built using aclocal from automake 1.4 dnl libtool 1.4.2 should be installed. @@ -127,7 +130,8 @@ OL_ARG_ENABLE(syslog,[ --enable-syslog enable syslog support], auto)dnl OL_ARG_ENABLE(proctitle,[ --enable-proctitle enable proctitle support], yes)dnl OL_ARG_ENABLE(cache,[ --enable-cache enable caching (experimental)], no)dnl OL_ARG_ENABLE(referrals,[ --enable-referrals enable LDAPv2+ Referrals (experimental)], no)dnl -OL_ARG_ENABLE(kbind,[ --enable-kbind enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl +dnl OL_ARG_ENABLE(kbind,[ --enable-kbind enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl +ol_enable_kbind=${ol_enable_kbind-no} OL_ARG_ENABLE(ipv6,[ --enable-ipv6 enable IPv6 support], auto)dnl OL_ARG_ENABLE(local,[ --enable-local enable AF_LOCAL (AF_UNIX) socket support], auto)dnl OL_ARG_ENABLE(x_compile,[ --enable-x-compile enable cross compiling], @@ -170,6 +174,7 @@ OL_ARG_ENABLE(lmpasswd,[ --enable-lmpasswd enable LAN Manager passwords], n OL_ARG_ENABLE(spasswd,[ --enable-spasswd enable (Cyrus) SASL password verification], no)dnl OL_ARG_ENABLE(modules,[ --enable-modules enable dynamic module support], no)dnl dnl OL_ARG_ENABLE(multimaster,[ --enable-multimaster enable multimaster replication], no)dnl +ol_enable_multimaster=${ol_enable_multimaster-no} OL_ARG_ENABLE(phonetic,[ --enable-phonetic enable phonetic/soundex], no)dnl OL_ARG_ENABLE(rewrite,[ --enable-rewrite enable DN rewriting in back-ldap and back-meta], no)dnl OL_ARG_ENABLE(rlookups,[ --enable-rlookups enable reverse lookups of client hostnames], no)dnl @@ -270,9 +275,9 @@ if test $ol_enable_slapd = no ; then if test $ol_enable_modules = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable-modules argument]) fi -dnl if test $ol_enable_multimaster = yes ; then -dnl AC_MSG_WARN([slapd disabled, ignoring --enable-multimaster argument]) -dnl fi + if test $ol_enable_multimaster = yes ; then + AC_MSG_WARN([slapd disabled, ignoring --enable-multimaster argument]) + fi if test $ol_enable_wrappers = yes ; then AC_MSG_WARN([slapd disabled, ignoring --enable-wrappers argument]) fi @@ -345,7 +350,7 @@ dnl fi ol_enable_sql=no ol_enable_modules=no -dnl ol_enable_multimaster=no + ol_enable_multimaster=no ol_enable_phonetic=no ol_enable_rlookups=no ol_enable_aci=no @@ -2462,9 +2467,9 @@ fi if test "$ol_link_spasswd" != no ; then AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords]) fi -dnl if test "$ol_enable_multimaster" != no ; then -dnl AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication]) -dnl fi +if test "$ol_enable_multimaster" != no ; then + AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication]) +fi if test "$ol_enable_phonetic" != no ; then AC_DEFINE(SLAPD_PHONETIC,1,[define to support phonetic]) fi diff --git a/doc/devel/args b/doc/devel/args index e000234440..a8edaeae60 100644 --- a/doc/devel/args +++ b/doc/devel/args @@ -17,7 +17,7 @@ ud D * cd f l p s uv * reserved - GJNgijmoqy + GJNgijmoqy01235789 * General flags: -C Chase Referrals @@ -34,6 +34,8 @@ ud D * cd f l p s uv -p port -v verbose -w Bind password + -4 IPv4 only + -6 IPv6 only * LDAPv3 Only diff --git a/doc/devel/todo b/doc/devel/todo index 2c60ebf1c0..f245705e94 100644 --- a/doc/devel/todo +++ b/doc/devel/todo @@ -21,9 +21,9 @@ OpenLDAP 2.x Projects --------------------- SLAPD Complete Unicode Support (ACLs, etc.) - client API update + client C API update Implement per referral/continuation callback - clients + clients (e.g. ldapsearch(1)) Implement referral chasing options w/ referral callback Update manual pages @@ -39,28 +39,30 @@ Medium projects Implement LDAP Transactions Implement authPassword (RFC 3112) Implement localization -Implement Proxy Authorization Group extension -Implement LCUP -Add LDIFv1 control support +Implement Proxy Authorization Control extension Update to latest autoconf and friends Small projects -------------- +Add LDIFv1 control support Populate matchingRuleUse attribute in the subschema Implement -V version options -Implement Proxy Authorization Control extension -Complete Simple Paged Results Control -Add No-Op Control support to ldap client tools +Add No-Op Control support to client tools (e.g. ldapsearch(1)) Add tests to test suite (ACI, moddn, manageDSAit, etc.) Add support for Cyrus pwcheckd/saslauthd -Create ldapbind (from ldapcompare?) to support bind operations +Recode linked-list structs to use macros +Create ldapbind(1) to support bind operations Convert utfconv.txt into man page(s). Update any manual page For additional TODO items, see: http://www.openldap.org/its/index.cgi/Software%20Enhancements + http://www.openldap.org/its/index.cgi/Software%20Bugs + +JLDAP TODO items, see: + http://www.openldap.org/devel/cvsweb.cgi/~checkout~/design/todo.txt?rev=1&cvsroot=JLDAP --- diff --git a/doc/drafts/draft-ietf-ldapext-locate-xx.txt b/doc/drafts/draft-ietf-ldapext-locate-xx.txt index 3acec7bd24..2e5adc87b0 100644 --- a/doc/drafts/draft-ietf-ldapext-locate-xx.txt +++ b/doc/drafts/draft-ietf-ldapext-locate-xx.txt @@ -1,9 +1,9 @@ INTERNET-DRAFT Michael P. Armijo - Levon Esibov -February 20, 2002 Paul Leach -Expires: August 20, 2002 Microsoft Corporation + Levon Esibov +June 5, 2002 Paul Leach +Expires: December 5, 2002 Microsoft Corporation R.L. Morgan University of Washington @@ -31,7 +31,7 @@ Status of this Memo http://www.ietf.org/shadow.html. Distribution of this memo is unlimited. It is filed as , and expires on August 20, 2002. + ietf-ldapext-locate-08.txt>, and expires on December 5, 2002. Please send comments to the authors. Copyright Notice @@ -56,7 +56,7 @@ Abstract Armijo, Esibov, Leach and Morgan [Page 1] -INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 +INTERNET-DRAFT Discovering LDAP Services with DNS June 5, 2002 @@ -103,6 +103,18 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 reasonable because many objects of interest are named with domain names, and use of domain-name-based DNs is becoming common. + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in RFC 2119 [9]. + + + + + + +Armijo, Esibov, Leach and Morgan [Page 2] + +INTERNET-DRAFT Discovering LDAP Services with DNS June 5, 2002 2. Mapping Distinguished Names into Domain Names @@ -112,11 +124,6 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 DNs cannot be converted into a domain name. Converted DNs result in a fully qualified domain name. -Armijo, Esibov, Leach and Morgan [Page 2] - -INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 - - The output domain name is initially empty. The DN is processed in right-to-left order (i.e., beginning with the first RDN in the @@ -163,16 +170,9 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 - - - - - - - Armijo, Esibov, Leach and Morgan [Page 3] -INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 +INTERNET-DRAFT Discovering LDAP Services with DNS June 5, 2002 Presence of such records enables clients to find the LDAP servers @@ -191,7 +191,7 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 that satisfy the requested criteria. The following is an example of such a record: - _ldap._tcp.example.net. IN SRV 0 0 389 phoenix.example.net. + _ldap._tcp.example.net. IN SRV 0 0 389 phoenix.example.net. The set of returned records may contain multiple records in the case where multiple LDAP servers serve the same domain. If there are no @@ -213,15 +213,15 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 intended to contact. See [7] for more information on security threats and security mechanisms. - When using LDAP with TLS the client must check the server's name, + When using LDAP with TLS the client MUST check the server's name, as described in section 3.6 of [RFC 2830]. As specified there, the name the client checks for is the server's name before any potentially insecure transformations, including the SRV record - lookup specified in this memo. Thus the name the client must check + lookup specified in this memo. Thus the name the client MUST check for is the name obtained by doing the mapping step defined in section 2 above. For example, if the DN "cn=John Doe,ou=accounting,dc=example,dc=net" is converted to the DNS name - "example.net", the server's name must match "example.net". + "example.net", the server's name MUST match "example.net". This document describes a method that uses DNS SRV records to discover LDAP servers. All security considerations related to DNS @@ -230,7 +230,7 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 Armijo, Esibov, Leach and Morgan [Page 4] -INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 +INTERNET-DRAFT Discovering LDAP Services with DNS June 5, 2002 6. References @@ -259,10 +259,11 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 "Authentication Methods for LDAP", RFC 2829, May 2000. [8] Hodges, J., Morgan, R., Wahl, M., "Lightweight Directory Access - Protocol (v3): Extension for Transport Layer Security", RFC 2830, - May 2000. - + Protocol (v3): Extension for Transport Layer Security", + RFC 2830, May 2000. + [9] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. @@ -285,10 +286,9 @@ INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 levone@microsoft.com - Armijo, Esibov, Leach and Morgan [Page 5] -INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 +INTERNET-DRAFT Discovering LDAP Services with DNS June 5, 2002 RL "Bob" Morgan University of Washington @@ -346,7 +346,7 @@ herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE Armijo, Esibov, Leach and Morgan [Page 6] -INTERNET-DRAFT Discovering LDAP Services with DNS February 20, 2002 +INTERNET-DRAFT Discovering LDAP Services with DNS June 5, 2002 INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE @@ -356,7 +356,7 @@ WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE." 10. Expiration Date - This documentis filed as , and - expires August 20, 2002. + This document is filed as , and + expires December 5, 2002. Armijo, Esibov, Leach and Morgan [Page 7] \ No newline at end of file diff --git a/doc/drafts/draft-ietf-ldup-lcup-xx.txt b/doc/drafts/draft-ietf-ldup-lcup-xx.txt index 93e72e6a96..109f599e5e 100644 --- a/doc/drafts/draft-ietf-ldup-lcup-xx.txt +++ b/doc/drafts/draft-ietf-ldup-lcup-xx.txt @@ -1,14 +1,14 @@ Internet Draft R. Megginson, Editor -Document: M. Smith +Document: M. Smith Category: Proposed Standard Netscape Communications Corp. O. Natkovich Yahoo J. Parham Microsoft Corporation - November 2001 + June 2002 LDAP Client Update Protocol @@ -86,22 +86,9 @@ Status of this Memo The problem areas not being considered: - - directory server to directory server synchronization. The - replication protocol that is being defined by the LDUP IETF - working group should be used for this purpose. - - Several features of the protocol distinguish it from LDUP - replication. First, the server does not maintain any state - information on behalf of its clients. The clients are responsible - for storing the information about how up to date they are with - respect to the server's content. Second, no predefined agreements - exist between the clients and the servers. The client decides when - and from where to retrieve the changes. Finally, the server never - pushes the data to the client; the client always initiates the - update session during which it pulls the changes from the server. - - The set of clients that are allowed to synchronize with an LDAP - server is determined by the server defined policy. + - directory server to directory server synchronization. The IETF is + developing a LDAP replication protocol, called [LDUP], which is + specifically designed to address this problem area. There are currently several protocols in use for LDAP client server synchronization. While each protocol addresses the needs of a @@ -112,42 +99,47 @@ Status of this Memo connected can't be easily supported by any of the existing protocols. + Several features of the protocol distinguish it from LDUP + replication. LCUP is designed such that the server does not need to + maintain state information on behalf of the client. The clients are + responsible for storing the information about how up to date they + are with respect to the server's content. LCUP design avoids the + need for LCUP-specific update agreements to be made between client + and server prior to LCUP use. The client decides when and from where + to retrieve the changes. LCUP design requires clients to initiate + the update session and "pull" the changes from server. + + LCUP operations are subject to administrative and access + control policies enforced by the server. + -Megginson, et. al. Proposed Standard - Expires: May 2002 2 +Megginson, et. al. Proposed Standard - Expires: December 2002 2 - A server can define a naming context or some part thereof to - participate in LCUP. This document will refer to this as an LCUP - Context. For example, LDUP defines a replica, a part of the DIT - which may participate in replication. The LCUP context may be - coincident with the replicated area, depending on the server's - implementation. It is assumed that most server implementations of - LCUP will make use of the server's underlying replication mechanism, - but this does not have to be LDUP compliant. + A part of the DIT which is enabled for LCUP is referred to as an + LCUP Context. A server may support one or more LCUP Contexts. 4. Protocol Specification This section describes the protocol elements and the protocol flow. -4.1 Unique Identifiers +4.1 Universally Unique Identifiers Distinguished names can change, so are therefore unreliable - as identifiers. The server SHOULD assign a Unique Identifier to each - entry as it is created. This identifier will be stored as an - operational attribute of the entry, named `entryUUID'. The entryUUID - attribute is single valued. If the client wants to use entryUUID, it - should supply entryUUID in the list of attributes to return in the - LCUP search (described below). - A consistent algorithm for generating such unique + as identifiers. The server SHOULD assign a Universally Unique + Identifier (or UUID for short) to each entry as it is created. This + identifier will be stored as an operational attribute of the entry, + named `entryUUID'. The entryUUID attribute is single valued. A + consistent algorithm for generating such universally unique identifiers may be standardized at some point in the future. The definition of the entryUUID attribute type, written using the BNF form of AttributeDescription described in RFC 2252 [RFC2252] is: ( OID-To-Be-Specified NAME `entryUUID' - DESC `unique entry identifier' + DESC `universally unique entry identifier' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE @@ -172,80 +164,85 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 2 value, the preferred form of documentation is an RFC. It is expected that there will be one or more standards track cookie schemes where the value format is exposed and described in detail. - -Megginson, et. al. Proposed Standard - Expires: May 2002 3 - - - - value - this is the actual data describing the state of the client's data. This value may be opaque, or its value may have - some well known format, depending on the scheme. The cookie value + some well-known format, depending on the scheme. The cookie value MUST be included except when a client has no stored state; i.e., when the client is requesting a full synchronization. When the server sends back a cookie, the cookie value MUST be present. + +Megginson, et. al. Proposed Standard - Expires: December 2002 3 + + + Further uses of the LCUP Cookie value are described below. -4.3 LCUP Cookie Schemes Operational Attribute - - The OIDs of the supported LCUP cookie schemes SHOULD be published - using the following operational attribute: - - ( OID-TBD - NAME 'lcupCookieScheme' - EQUALITY objectIdentifierMatch - SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 - NO-USER-MODIFICATION - USAGE directoryOperation ) - - The lcupCookieScheme operational attribute MUST be present in the - root DSE. The lcupCookieScheme operational attribute MAY be present - in every directory entry that may be used as the baseObject for a - search request that contains an LCUP clientUpdate control. If a - client wants to determine what LCUP cookie schemes are supported, it - MAY use a base object search to read the lcupCookieScheme attribute - from the entry that will be used as the baseObject in subsequent - LCUP sessions, then query the root DSE if the lcupCookieScheme was - not found in the base entry. Clients SHOULD NOT search for entries - that contain lcupCookieScheme values; rather, it is RECOMMENDED that - servers support LCUP sessions based at as many different entries as - possible. - Each value of the attribute will be a list of OIDs of the cookie - schemes followed by the DN of the LCUP context which supports the - schemes. The delimiter will be a single space character. For - example: - lcupCookieScheme: 1.2.3.4 5.6.7.8 dc=mycorp, dc=com - Everything after the last space after the last OID will be the LCUP - Context DN. If the attribute is present in a regular directory - entry in an LCUP Context, the values corresponding to DNs other than - the LCUP Context containing the entry MAY be omitted. +4.3 Additional LDAP Result Codes defined by LCUP + + The LDAP result code names and numbers defined in the following + table are to be replaced with IANA assigned result code names and + numbers per draft-ietf-ldapbis-iana-xx.txt. + + lcupResourcesExhausted (TBD) the server is running out of + resources + lcupSecurityViolation (TBD) the client is suspected of malicious + actions + lcupInvalidCookie (TBD) invalid cookie was supplied by the + client - both/either the scheme + and/or the value part was invalid + lcupUnsupportedScheme (TBD) The scheme part of the cookie is a + valid OID but is not supported by + this server + lcupClientDisconnect (TBD) client requested search termination + using the LDAP Cancel extended + operation request [CANCEL] + lcupReloadRequired (TBD) indicates that client data needs to + be reinitialized. This reason is + returned if the server does not + contain sufficient information to + synchronize the client or if the + server's data was reloaded since the + last synchronization session + + The uses of these codes are described below. 4.4 Client Update Control Value A client initiates a synchronization session with a server by - attaching a clientUpdate control to a search operation. The search - specification determines the part of the directory information tree - (DIT) the client wishes to synchronize with, the set of attributes - it is interested in and the amount of data the client is willing to - receive. The clientUpdate control contains the client's - synchronization specification. The controlType field for the + attaching a clientUpdate control to an LDAP searchRequest message. + The client SHOULD specify entryUUID in the attributes list in the + searchRequest message. The search specification determines the part + of the directory information tree (DIT) the client wishes to + synchronize with, the set of attributes it is interested in and the + amount of data the client is willing to receive. The clientUpdate + control contains the client's synchronization specification. The + controlType field for the clientUpdate control is + ClientUpdateControlOID (to be assigned). The controlValue is an + OCTET STRING, whose contents are the bytes of the BER encoding of + the following: + + + + + + + + + -Megginson, et. al. Proposed Standard - Expires: May 2002 4 +Megginson, et. al. Proposed Standard - Expires: December 2002 4 - clientUpdate control is ClientUpdateControlOID (to be assigned). - The controlValue is an OCTET STRING, whose contents are the bytes of - the BER encoding of the following: - ClientUpdateControlValue ::= SEQUENCE { - updateType ENUMERATED { - synchronizeOnly (0), - synchronizeAndPersist (1), - persistOnly (2) }, - cookie LCUPCookie OPTIONAL + updateType ENUMERATED { + synchronizeOnly (0), + synchronizeAndPersist (1), + persistOnly (2) }, + sendCookieInterval INTEGER OPTIONAL, + cookie LCUPCookie OPTIONAL } updateType - specifies the type of update requested by the client @@ -257,28 +254,32 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 4 synchronizeAndPersist - the server sends all the data needed to synchronize the client with the server, then leaves open the connection, sending to the client any new added, modified, or - deleted entries which satisfy the search criteria. + deleted entries that satisfy the search criteria. persistOnly - the server does not synchronize the data with the client but leaves open the connection and sends over any new - added, modified, or deleted entries which satisfy the search - criteria. + added, modified, or deleted entries that satisfy the search + criteria. + sendCookieInterval û (optional) the server SHOULD send the cookie + back in the entryUpdate control value for every + sendCookieInterval number of SearchResultEntry PDUs returned to + the client. For example, if the value is 5, the server SHOULD + send the cookie back in the entryUpdate control value for every 5 + search results returned to the client. If this value is absent, + zero or less than zero, the server chooses the interval. + cookie - a value that represents the current state of the client's data. If a cookie is provided, the server MUST use the enclosed scheme throughout the duration of the LCUP session or until an LCUP context boundary is crossed, since a new cookie may be required in that case. If the value or scheme part of the cookie is invalid, the server MUST return immediately with a - SearchResultDone message with the clientUpdateDone control - attached with the reason set to the value of lcupInvalidCookie - (see below). Also, the LDAP result code MUST be - unwillingToPerform. If the scheme part of the cookie is a valid + SearchResultDone message with the resultCode set to the value of + lcupInvalidCookie. If the scheme part of the cookie is a valid OID, but is not supported, the server MUST return immediately - with a SearchResultDone message with the clientUpdateDone control - attached with the reason set to the value of - lcupUnsupportedScheme (see below). Also, the LDAP result code - MUST be unwillingToPerform. + with a SearchResultDone message with the resultCode set to the + value of lcupUnsupportedScheme. If the cookie is omitted, the server MAY use any scheme it supports. @@ -288,38 +289,31 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 4 In response to the client's synchronization request, the server returns one or more SearchResultEntry PDU that fits the client's specification. Each SearchResultEntry PDU also contains an - entryUpdateControl which describes the LCUP state of the returned - entry. To represent a deleted entry, the server attaches an + entryUpdateControl that describes the LCUP state of the returned -Megginson, et. al. Proposed Standard - Expires: May 2002 5 +Megginson, et. al. Proposed Standard - Expires: December 2002 5 + entry. To represent a deleted entry, the server attaches an entryUpdate control to the corresponding SearchResultEntry. The SearchResultEntry corresponding to a deleted entry MUST contain a - valid DN and MAY contain a valid Unique Identifier but, to reduce - the amount of data sent to the client, it SHOULD not contain any - other attributes. Distinguished names can change, so are therefore - unreliable as identifiers. A Unique Identifier MAY therefore be - assigned to each entry as it is created. The Unique Identifier - allows the client to uniquely identify entries even in the presence - of modifyDN operations. The Unique Identifier is carried in the - entryUUID attribute. - For returned SearchResultEntry PDUs other than deleted entries, the - client MAY request that the Unique Identifier attribute be returned - by specifying it in the attribute list to be returned by the search - request. If the Unique Identifier is not returned, the client MAY - use the entry DN to keep track of returned entries. + valid DN and SHOULD contain a valid UUID but, to reduce the amount + of data sent to the client, it SHOULD not contain any other + attributes. Furthermore, the server may elect to periodically return to the client the cookie that represents the state of the client's data. This information is useful in case the client crashes or gets - disconnected. The cookie SHOULD be present in every entryUpdate - control sent to the client to insure ease of synchronization. The - cookie is also provided in the entryUpdate control. The controlType - field for the entryUpdate control is EntryUpdateControlOID (to be - assigned). The controlValue is an OCTET STRING, whose contents are - the bytes of the BER encoding of the following: + disconnected. The client MAY specify how often to receive the cookie + by the use of the sendCookieInterval in the clientUpdate control + value (see above). If the client does not specify a value, the + server will determine the interval. + + The controlType field for the entryUpdate control is + EntryUpdateControlOID (to be assigned). The controlValue is an + OCTET STRING, whose contents are the bytes of the BER encoding of + the following: EntryUpdateControlValue ::= SEQUENCE { stateUpdate BOOLEAN, @@ -335,158 +329,75 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 5 contain the updated cookie. This feature allows updating the client's cookie when there are no changes that effect the client's data store. Note that the control MUST be attached to a - valid SearchResultEntry, i.e. the entry should contain a valid - dn. The server MAY send the entry named by the baseObject from - the client's search request. + valid SearchResultEntry, which should contain a valid LDAPDN in + the objectName field, and MAY contain an entryUUID attribute, but + SHOULD NOT contain any other attributes. The server MAY send the + entry named by the baseObject from the client's search request. entryDeleted - if set to TRUE, indicates that the entry to which the control is attached was deleted. The server MAY also set this to TRUE if the entry has left the client's search result set. As far as the client is concerned, a deleted entry is no - different than an entry which has left the result set. + different than an entry that has left the result set. cookie - the LCUP cookie value that represents the current state of the client's data. 4.6 Client Update Done Control Value - -Megginson, et. al. Proposed Standard - Expires: May 2002 6 - - - When the server has finished processing the client's request, it attaches a clientUpdateDone control to the SearchResultDone message and sends it to the client. However, if the SearchResultDone message - contains a resultCode which is not success, the clientUpdateDone - control MAY be omitted. The controlType field for the - clientUpdateDone control is ClientUpdateDoneControlOID (to be - assigned). The controlValue is an OCTET STRING, whose contents are - the bytes of the BER encoding of the following: + contains a resultCode that is not success or lcupClientDisconnect, + +Megginson, et. al. Proposed Standard - Expires: December 2002 6 + + + + the clientUpdateDone control MAY be omitted. The controlType field + for the clientUpdateDone control is ClientUpdateDoneControlOID (to + be assigned). The controlValue is an OCTET STRING, whose contents + are the bytes of the BER encoding of the following: ClientUpdateDoneControlValue ::= SEQUENCE { - reason INTEGER, - reasonText LDAPString, cookie LCUPCookie OPTIONAL } - - reason - reason for terminating the operation. The following values - are defined: - - lcupSuccess (0) the operation was successfully - processed - lcupResourcesExhausted (1) the server is running out of resource - lcupSecurityViolation (2) the client is suspected of malicious - actions - lcupInvalidCookie (3) invalid cookie was supplied by the - client - both/either the scheme - and/or the value part was invalid - lcupUnsupportedScheme (4) The scheme part of the cookie is a - valid OID but is not supported by - this server - lcupClientDisconnect (5) client requested search termination - using the stopClientUpdate request - (defined below) - lcupReloadRequired (6) indicates that client data needs to - be reinitialized. This reason is - returned if the server does not - contain sufficient information to - synchronize the client or that the - server's data was reloaded since the - last synchronization session - - reasonText - The reasonText field of this construct may, at the - server's option, be used to return a string containing a textual, - human-readable (terminal control and page formatting characters - should be avoided) error diagnostic. As this error diagnostic is - not standardized, implementations MUST NOT rely on the values - returned. If the server chooses not to return a textual - diagnostic, the reasonText field of the - ClientUpdateDoneControlValue MUST contain a zero length string. - The reasonText should be limited to characters in the range 0x00 to - 0x7F. - + cookie - the LCUP cookie value that represents the current state of the client's data. Although this value is OPTIONAL, it MUST be set - -Megginson, et. al. Proposed Standard - Expires: May 2002 7 - - - - in the ClientUpdateDoneControlValue if the reason is lcupSuccess or - lcupClientDisconnect and the LDAP search result code is success. - This provides a good "checksum" of what the server thinks the state - of the client is. If some error occurred, either an LDAP search - error (e.g. insufficientAccessRights) or an LCUP error (e.g. + in the ClientUpdateDoneControlValue if the SearchResultDone + resultCode is success or lcupClientDisconnect. This provides a + good "checksum" of what the server thinks the state of the client + is. If some error occurred, either an LDAP search error (e.g. + insufficientAccessRights) or an LCUP error (e.g. lcupUnsupportedScheme), the cookie MAY be omitted. If server resources become tight, the server can terminate one or more search operations by sending a SearchResultDone message to the - client(s). Unless the client sets the updateType field to - persistOnly, the server attaches a clientUpdateDone control that - contains the cookie that corresponds to the current state of the - client's data and the value of the reason field is set to - lcupResourcesExhausted. A server set policy is used to decide which - searches to terminate. This can also be used as a security mechanism - to disconnect clients that are suspected of malicious actions, but - if the server can infer that the client is malicious, the server - should return lcupSecurityViolation in the reason field of the - response. - -4.7 Stop Client Update Request and Response - - The Stop Client Update operation is an LDAPv3 Extended Operation - [RFC2251, Section 4.12] and is identified by the OBJECT IDENTIFIER - stopClientUpdateRequestOID (to be assigned). This section details - the syntax of the protocol. - - An LDAPv3 Extended Request is defined in [LDAPv3] as follows: - - ExtendedRequest ::= [APPLICATION 23] SEQUENCE { - requestName [0] LDAPOID, - requestValue [1] OCTET STRING OPTIONAL - } + client(s) with a resultCode of lcupResourcesExhausted. Unless the + client sets the updateType field to persistOnly, the server attaches + a clientUpdateDone control that contains the cookie that corresponds + to the current state of the client's data. A server set policy is + used to decide which searches to terminate. This can also be used as + a security mechanism to disconnect clients that are suspected of + malicious actions, but if the server can infer that the client is + malicious, the server should return lcupSecurityViolation instead. + +4.7 Client Initiated Termination If the client needs to terminate the synchronization process and it wishes to obtain the cookie that represents the current state of its - data, it issues a stopClientUpdateRequest extended operation. The - operation carries the following data. The extended operation - requestValue is an OCTET STRING, whose contents are the bytes of the - BER encoding of the following: - - StopClientUpdateRequestValue ::= MessageID - - StopClientUpdateRequestValue - the message ID of the search that - included the original clientUpdate control - - The server responds immediately with a stopClientUpdateResponse - extended operation that carries no data, and an OBJECT IDENTIFIER of - stopClientUpdateResponseOID (to be assigned). The server MAY send - any pending SearchResultEntry PDUs if the server cannot easily abort - or remove those search results from its outgoing queue. The server - SHOULD send as few of these remaining SearchResultEntry PDUs as - possible. Finally, the server sends the message SearchResultDone - with the clientUpdateDone control attached. The value of the reason - -Megginson, et. al. Proposed Standard - Expires: May 2002 8 - - - - in the clientUpdateDone control value MUST be either an error code - (some value other than lcupSuccess) or lcupClientDisconnect. The - stopClientUpdateResponse is sent only to satisfy LDAP requirement - that every server must issue an extended response for each extended - request it receives. + data, it issues an LDAP Cancel operation [CANCEL]. The server + responds immediately with a LDAP Cancel response [CANCEL]. The + server MAY send any pending SearchResultEntry PDUs if the server + cannot easily abort or remove those search results from its outgoing + queue. The server SHOULD send as few of these remaining + SearchResultEntry PDUs as possible. Finally, the server sends the + message SearchResultDone with the clientUpdateDone control attached. If the client is not interested in the state information, it can simply abandon the search operation or disconnect from the server. - The requestName portion of the stopClientUpdate must be the - OID stopClientUpdateOID (to be assigned). The requestValue is the - message ID corresponding to the client's search request. If the - message ID is not valid, the server MUST send back to the client an - LDAP error code of unwillingToPerform. - 4.8 Protocol Flow The client server interaction can proceed in three different ways @@ -497,6 +408,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 8 actions in response to directory modifications, the protocol proceeds as follows: + +Megginson, et. al. Proposed Standard - Expires: December 2002 7 + + + C->S Sends a search operation with a clientUpdate control attached. The search specification determines the part of the DIT the client wishes to synchronize with and the set of attributes it @@ -512,36 +428,27 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 8 *S->C If the server starts to run out of resources or the client is suspected of malicious actions, the server SHOULD terminate the search operation by sending to the client a - SearchResultDone message with clientUpdateDone control - attached. The control contains the reason field set to - lcupResourcesExhausted or lcupSecurityViolation depending on - the reason for termination. The server MAY provide more - details to the client via the reasonText field of the control. + SearchResultDone message with optional clientUpdateDone + control attached. The resultCode in the SearchResultDone + mesasge SHOULD be set to lcupResourcesExhausted or + lcupSecurityViolation depending on the reason for termination. *C->S If the client receives lcupResourcesExhausted error from the server, it MUST wait for a while before attempting another synchronization session with the server. It is RECOMMENDED that clients use an exponential backoff strategy. C->S The client terminates the search. The client can do this by abandoning the search operation, disconnecting from the - server, or by sending the stopClientUpdate extended operation. - *S->C If the server receives the stopClientUpdate extended op, it - will immediately send back the stopClientUpdate extended op - -Megginson, et. al. Proposed Standard - Expires: May 2002 9 - - - - response - *S->C If the client sent the stopClientUpdate extended op, the - server MAY send any pending SearchResultEntry PDUs in its - outgoing queue - *S->C If the client sent the stopClientUpdate extended op, after the - server sends the response and any pending SearchResultEntry - PDUs, the server sends the SearchResultDone message with the - clientUpdateDone control attached. The value of the reason - field of the clientUpdateDone control value will be either - lcupClientDisconnect or some lcup error code (not - lcupSuccess). + server, or by sending an LDAP Cancel operation. + *S->C If the server receives the LDAP Cancel op, it will immediately + send back the LDAP Cancel response + *S->C If the server sent the LDAP Cancel response, the server MAY + send any pending SearchResultEntry PDUs in its outgoing queue + *S->C If the server sent the LDAP Cancel response, after the server + sends the response and any pending SearchResultEntry PDUs, the + server sends the SearchResultDone message with the + clientUpdateDone control attached. The resultCode in the + SearchResultDone message will be either lcupClientDisconnect + or some LDAP error code (not success). S->C Stops sending changes to the client and closes the connection. If the client's intent is to synchronize with the server and then @@ -560,6 +467,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 9 use that scheme throughout the duration of the LCUP session or until an LCUP boundary is crossed, since the server will usually require a different cookie in that case anyway. (Note + +Megginson, et. al. Proposed Standard - Expires: December 2002 8 + + + that the client can synchronize with different servers during different synchronization sessions.) The updateType field of the control value is set to synchronizeOnly. @@ -572,25 +484,17 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 9 data that matches the client's search specification followed by the SearchResultDone message with a clientUpdateDone control attached. The control contains the cookie that - corresponds to the current state of the client's data and the - reason flag set to lcupSuccess. + corresponds to the current state of the client's data. If + synchronization was successful, the resultCode in the + SearchResultDone message should be success. *S->C If an invalid cookie is specified, the server sends the - SearchResultDone message with clientUpdateDone control - attached. The reason field of the control is set to - lcupInvalidCookie and the reasonText field MAY contain - explanation of the error. + SearchResultDone message with the resultCode set to + lcupInvalidCookie. *S->C If a valid cookie is specified and the data that matches the search specification has been reloaded or the server does not contain enough state information to synchronize the client, - the server sends a SearchResultDone message with - clientUpdateDone control attached. The reason field of the - control is set to lcupReloadRequired and the reasonText field - -Megginson, et. al. Proposed Standard - Expires: May 2002 10 - - - - MAY contain explanation of the error. + the server sends a SearchResultDone message with the + resultCode set to lcupReloadRequired. *S->C If the cookie is valid and the client is up to date, the server sends a success response to the client. S->C If the cookie is valid and there is data to be sent, the @@ -604,21 +508,29 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 10 of the client's data. In that case, the cookie field of the control represents the state of the client's data including the entry to which the control is attached. Once all the - changes are sent, the server sends a SearchResultDone with the - clientUpdateDone control attached. The control contains the - cookie that represents the current state of the client's data. - The reason field of the control is set to lcupSuccess. + changes are sent successfully, the server sends a + SearchResultDone with the clientUpdateDone control attached. + The control contains the cookie that represents the current + state of the client's data. The resultCode in the + SearchResultDone message is set to success. If the resultCode + is not success, the server may OPTIONALLY attach the + clientUpdateDone control to the SearchResultDone message. The client stores the cookie received from the server until the next synchronization session. - *C->S If the reason field of the control is set lcupReloadRequired, - the client clears its data store and repeats the - synchronization process by sending the search operation with - clientUpdate control that contains no cookie, or that contains - a cookie with no value field. + *C->S If the resultCode in the SearchResultDone message is set + lcupReloadRequired, the client clears its data store and + repeats the synchronization process by sending the search + operation with clientUpdate control that contains no cookie, + or that contains a cookie with no value field. If the client's intent is to be synchronized with the server and stay notified about data modifications, the protocol proceeds as follows: + +Megginson, et. al. Proposed Standard - Expires: December 2002 9 + + + C->S The client behaves exactly as in the previous case except it sets the updateType field in the control value to @@ -631,30 +543,24 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 10 *S->C If the server starts to run out of resources or the client is suspected of malicious actions, the server SHOULD terminate the search operation by sending to the client a - SearchResultDone message with clientUpdateDone control - attached. The control contains the reason field set to + SearchResultDone message with the resultCode set to lcupResourcesExhausted or lcupSecurityViolation depending on - the reason for termination. The server MAY provide more - details to the client via the reasonText field of the control. + the reason for termination. *C->S If the client receives lcupResourcesExhausted error from the server, it MUST wait for a while before attempting another synchronization session with the server. We recommend exponential backoff strategy. - C->S Sends a stopClientUpdateRequest extended operation to the - server to terminate the synchronization session. - S->C Responds with a stopClientUpdateResponse extended operation - followed by a SearchResultDone with the clientUpdateDone - -Megginson, et. al. Proposed Standard - Expires: May 2002 11 - - - - control optionally attached. If present, the control contains - the cookie that represents the current state of the client's - data. The value of the reason field of the clientUpdateDone - control value will be either lcupClientDisconnect or some lcup - error code (not lcupSuccess). The control may not be present - if some error occurred. + C->S Sends an LDAP Cancel operation to the server to terminate the + synchronization session. + S->C Responds with an LDAP Cancel response, followed optionally by + SearchResultEntry PDUs, followed by a SearchResultDone with + the clientUpdateDone control optionally attached. If the + control is present, it contains the cookie that represents the + current state of the client's data. The value of the + resultCode in the SearchResultDone message will be either + lcupClientDisconnect or some other LDAPResult resultCode (not + success). The control may not be present if some error + occurred. 4.9 Size and Time Limits @@ -667,17 +573,36 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 11 4.10 Changes vs. Operations - The server sends to the client modified entries rather than - operations. Given this model, the server communicates a modifyDN - operation in one of two ways: by sending the client the current form - of the entry (with its new DN) along with an entryUUID attribute, or - by sending the client a deletion for the previous DN and an entry - for the new DN. The latter method must be used if the server does - not support the entryUUID attribute. In either case, if the client - state shows that the object that underwent the modifyDN operation - was the root of a subtree, the client MUST infer that the DNs of all - objects in the subtree have changed such that they reflect the new - DN of the subtree root. + A server that supports UUIDs SHOULD communicate a modifyDN + operation by sending the client the current form of the entry (with + its new DN) along with an entryUUID attribute. A server that does + not support UUIDs SHOULD communicate a modifyDN operation by sending + the client a deletion for the previous DN followed by an entry for + the new DN. Note that for servers that do not support UUIDs, no + guarantees are made about the correctness of the client state in the + presence of modifyDN operations. + + Communicating modifyDN operations by sending a delete of the old DN + followed by an entry with the new DN makes it impossible for an LCUP + client to distinguish between a modifyDN operation, which is one + +Megginson, et. al. Proposed Standard - Expires: December 2002 10 + + + + atomic operation, and an delete operation followed by an add of a + new entry. The loss of information about atomicity may cause + problems for some LCUP clients. For example, when an entry is + renamed, a client that manages resources such as a person's mailbox + might delete the mailbox and everything in it instead of merely + changing the name associated with the mailbox. + + Also note that regardless of how a modifyDN operation is + communicated to the client, if the client state shows that the + object that underwent the modifyDN operation was the root of a + subtree, the client MUST infer that the DNs of all objects in the + subtree have changed such that they reflect the new DN of the + subtree root. 4.11 Operations on the Same Connection @@ -702,12 +627,6 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 11 5. Additional Features - - -Megginson, et. al. Proposed Standard - Expires: May 2002 12 - - - There are several features present in other protocols or considered useful by clients that are currently not included in the protocol primarily because they are difficult to implement on the server. @@ -725,6 +644,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 12 search at the time the operation is being performed, - enteredSet: the entry entered the result, - leftSet: the entry left the result, + +Megginson, et. al. Proposed Standard - Expires: December 2002 11 + + + - modified: the entry was part of the result set, was modified or renamed, and still is in the result set." @@ -754,19 +678,13 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 12 For LCUP, the intention is full synchronization, not partial. Each entry returned by an LCUP search will have some change associated with it that may concern the client. The client may have to have a - local index of entries by DN or unique identifier to determine if - the entry has been added or just modified. It is easy for clients - to determine if the entry has been deleted because the entryDeleted - value of the entryUpdateControl will be TRUE. + local index of entries by DN or UUID to determine if the entry has + been added or just modified. It is easy for clients to determine if + the entry has been deleted because the entryDeleted value of the + entryUpdateControl will be TRUE. 5.3 Sending Changes - - -Megginson, et. al. Proposed Standard - Expires: May 2002 13 - - - Some earlier synchronization protocols sent the client(s) only the modified attributes of the entry rather than the entire entry. While this approach can significantly reduce the amount of data returned @@ -785,6 +703,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 13 the client has the previous version of the data and can perform value by value comparisons. + +Megginson, et. al. Proposed Standard - Expires: December 2002 12 + + + 5.4 Data Size Limits Some earlier synchronization protocols allowed clients to control @@ -794,9 +717,9 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 13 already provides the means for the client to specify the size limit by setting the sizeLimit field in the SearchRequest to the maximum number of entries the client is willing to receive. While the - granularity is not the same, the assumption is that LCUP protocol - will be implemented by regular LDAP clients that can deal with the - limitations of the LDAP protocol. + granularity is not the same, the assumption is that regular LDAP + clients that can deal with the limitations of the LDAP protocol will + implement LCUP. 5.5 Data Ordering @@ -810,87 +733,114 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 13 6. Client Side Considerations - There are several issues that the implementors of a synchronization - client need to consider: - - - The cookie received from the server after a synchronization - session can only be used with the same or more restrictive search - specification than the search that generated the cookie. The - server will reject the search operation with a cookie that does - not satisfy this condition. This is because the client can end up - with an incomplete data store otherwise. A more restrictive - search specification is the one that generates a subset of the - data produced by the original search specification. + Clients SHOULD always specify entryUUID in the SearchRequest + attribute list. + + The cookie received from the server after a synchronization session + can only be used with the same or more restrictive search + specification than the search that generated the cookie. The server + will reject the search operation with a cookie that does not satisfy + this condition. This is because the client can end up with an + incomplete data store otherwise. A more restrictive search + specification is the one that generates a subset of the data + produced by the original search specification. + + Because an LCUP client specifies the area of the tree with which it + wishes to synchronize through the standard LDAP search + specification, the client can be returned noSuchObject error if the + root of the synchronization area was renamed between the + synchronization sessions or during a synchronization session. If + this condition occurs, the client can attempt to locate the root by + using the root's UUID saved in client's local data store. It then + can repeat the synchronization request using the new search base. In + general, a client can detect that an entry was renamed and apply the + changes received to the right entry by using the UUID rather than DN + based addressing. + + Each active persistent operation requires that an open TCP + connection be maintained between an LDAP client and an LDAP server + that might not otherwise be kept open. Therefore, client + implementors are encouraged to avoid using persistent operations for + non-essential tasks and to close idle LDAP connections as soon as -Megginson, et. al. Proposed Standard - Expires: May 2002 14 +Megginson, et. al. Proposed Standard - Expires: December 2002 13 - - - Because an LCUP client specifies the area of the tree with which - it wishes to synchronize through the standard LDAP search - specification, the client can be returned noSuchObject error if - the root of the synchronization area was renamed between the - synchronization sessions or during a synchronization session. If - this condition occurs, the client can attempt to locate the root - by using the root's Unique Identifier saved in client's local - data store. It then can repeat the synchronization request using - the new search base. In general, a client can detect that an - entry was renamed and apply the changes received to the right - entry by using the Unique Identifier rather then DN based - addressing. - - - Each active persistent operation requires that an open TCP - connection be maintained between an LDAP client and an LDAP - server that might not otherwise be kept open. Therefore, client - implementors are encouraged to avoid using persistent operations - for non-essential tasks and to close idle LDAP connections as - soon as practical. The server may close connections if server - resources become tight. - - - The client MAY receive a continuation reference - (SearchResultReference [RFC2251 SECTION 4.5.3]) if the search - request spans multiple parts of the DIT, some of which may - require a different LCUP cookie, some of which may not even be - managed by LCUP. The client SHOULD maintain a cache of the LDAP - URLs returned in the continuation references and the cookies - associated with them. The client is responsible for performing - another LCUP search to follow the references, and SHOULD use the - cookie corresponding to the LDAP URL for that reference (if it - has a cookie). - - - For alias dereferencing, the server will behave as if the client - had requested neverDerefAliases or derefFindingBaseObj as the - derefAliases field in the search request [RFC2251, Section - 4.5.1]. If the client specifies a value other than - neverDerefAliases or derefFindingBaseObj, the server will return - protocolError to the client. - - - Changes to data (e.g., that might affect the LCUP client's - filter or scope) or meta-data (e.g., that might affect the - client's read access) may affect the presence of entries in the - search set. Servers MAY notify LCUP clients of changes to the - search set that result from such changes, but an LCUP client MUST - NOT assume that such notification will occur. Therefore, in the - case where a client is maintaining a cache of entries using LCUP, - the data held by the client may be a superset or a subset of the - entries that would be returned by a new search request. For - example, if access control meta information is changed to deny - access to particular entries in the search result set, and the - access control information is outside of the search scope (e.g., - in a parent entry), the client may have entries stored locally - which are no longer part of its desired search set. Similarly, + practical. The server may close connections if server resources + become tight. + + The client MAY receive a continuation reference + (SearchResultReference [RFC2251 SECTION 4.5.3]) if the search + request spans multiple parts of the DIT, some of which may require a + different LCUP cookie, some of which may not even be managed by + LCUP. The client SHOULD maintain a cache of the LDAP URLs returned + in the continuation references and the cookies associated with them. + The client is responsible for performing another LCUP search to + follow the references, and SHOULD use the cookie corresponding to + the LDAP URL for that reference (if it has a cookie). + + The client may receive a referral (Referral [RFC2251 SECTION + 4.1.11]) when the search base is a subordinate reference, and this + will end the operation. + + For alias dereferencing, the server will behave as if the client had + requested neverDerefAliases or derefFindingBaseObj as the + derefAliases field in the search request [RFC2251, Section 4.5.1]. + If the client specifies a value other than neverDerefAliases or + derefFindingBaseObj, the server will return protocolError to the + client. + + Changes to data (e.g., that might affect the LCUP client's filter or + scope) or meta-data (e.g., that might affect the client's read + access) may affect the presence of entries in the search set. + Servers MAY notify LCUP clients of changes to the search set that + result from such changes, but an LCUP client MUST NOT assume that + such notification will occur. Therefore, in the case where a client + is maintaining a cache of entries using LCUP, the data held by the + client may be a superset or a subset of the entries that would be + returned by a new search request. For example, if access control + meta information is changed to deny access to particular entries in + the search result set, and the access control information is outside + of the search scope (e.g., in a parent entry), the client may have + entries stored locally which are no longer part of its desired + search set. Similarly, if entries are added to the search result + set due to changes in meta-data, the client's cache of entries may + not include these entries. + + Some clients may wish to perform an initial synchronization in order + to prime a cache or establish a baseline set of entries, then look + for changes after that. The recommended way to do this is to first + issue an LCUP search with the updateType field of the clientUpdate + control value set to synchronizeOnly, then after that search + successfully completes, immediately issue an LCUP search with the + updateType field of the clientUpdate control value set to + synchronizeAndPersist. + + Some clients may have unreliable connections, for example, a + wireless device or a WAN connection. These clients may want to + insure that the cookie is returned often in the entryUpdate control + value, so that if they have to reconnect, they do not have to -Megginson, et. al. Proposed Standard - Expires: May 2002 15 +Megginson, et. al. Proposed Standard - Expires: December 2002 14 - if entries are added to the search result set due to changes in - meta-data, the client's cache of entries may not include these - entries. + process many redundant entries. These clients should set the + sendCookieInterval in the clientUpdate control value to a low + number, perhaps even 1. Also, some clients may have a limited + bandwidth connection, and may not want to receive the cookie very + often, or even at all (however, the cookie is always sent back in + the clientUpdateDone control value upon successful completion). + These clients should set the sendCookieInterval in the clientUpdate + control value to a high number. 7. Server Implementation Considerations + Servers SHOULD support UUIDs. Otherwise, it will be very difficult + to support modifyDN operations. Adding support for UUIDs should be + seen as a necessary component of LCUP. + By design, the protocol supports multiple cookie schemes. This is to allow different implementations the flexibility of storing any information applicable to their environment. A reasonable @@ -930,6 +880,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 15 their last modified CSN. This ordering guarantees that the RUV can be updated after each entry is sent. + +Megginson, et. al. Proposed Standard - Expires: December 2002 15 + + + The server's DIT may be partitioned into different sections which may have different cookies associated with them. For example, some servers may use some sort of replication mechanism to support LCUP. @@ -939,14 +894,9 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 15 by LCUP and some may not. A part of the DIT which is enabled for LCUP is referred to as an LCUP Context. The server SHOULD send a SearchResultReference [RFC2251, SECTION 4.5.3] when the LCUP Context - -Megginson, et. al. Proposed Standard - Expires: May 2002 16 - - - for a returned entry changes. The server SHOULD return all entries for a particular LCUP Context before returning a reference to other - LCUP Contexts or non LCUP enabled parts of the DIT, in order to + LCUP Contexts or non-LCUP enabled parts of the DIT, in order to minimize the processing burden on the clients. The LDAP URL(s) returned MUST contain the DN(s) of the base of another section of the DIT (however the server implementation has partitioned the DIT). @@ -988,6 +938,12 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 16 8. Synchronizing Heterogeneous Data Stores + + +Megginson, et. al. Proposed Standard - Expires: December 2002 16 + + + Clients, like a meta directory join engine, synchronizing multiple writable data stores will only work correctly if each piece of information is single mastered (for instance, only by an LDUP @@ -998,11 +954,6 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 16 converging. 9. Security Considerations - -Megginson, et. al. Proposed Standard - Expires: May 2002 17 - - - In some situations, it may be important to prevent general exposure of information about changes that occur in an LDAP server. @@ -1032,7 +983,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 17 a less restrictive search specification. See Client Side Considerations Section for more detailed explanation of the problem. -10. References +10. Normative References [KEYWORDS] S. Bradner, "Keywords for use in RFCs to Indicate Requirement Levels", RFC 2119, March 1997. @@ -1044,6 +995,14 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 17 Directory Access Protocol (v3): Attribute Syntax Definitions", RFC 2252, December 1997. + [CANCEL] K. Zeilenga, "LDAP Cancel Extended Operation", + draft-zeilenga-ldap-cancel-xx.txt, a work in progress. + + +Megginson, et. al. Proposed Standard - Expires: December 2002 17 + + + 11. Acknowledgements The LCUP protocol is based in part on the Persistent Search Change @@ -1057,11 +1016,6 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 17 Rich Megginson Netscape Communications Corp. 901 San Antonio Rd. - -Megginson, et. al. Proposed Standard - Expires: May 2002 18 - - - Palo Alto, CA 94303-4900 Mail Stop SCA17 - 201 Phone: +1 505 797-7762 @@ -1073,7 +1027,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 18 Sunnyvale, CA 94089 Phone: +1 408 349-6153 Email: olgan@yahoo-inc.com - + Mark Smith Netscape Communications Corp. 901 San Antonio Rd. @@ -1103,6 +1057,11 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 18 developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than + +Megginson, et. al. Proposed Standard - Expires: December 2002 18 + + + English. The limited permissions granted above are perpetual and will not be @@ -1116,8 +1075,49 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 18 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 14. Appendix A - Summary of Changes + + Changes new to version 03: + + Emphasized the use of UUIDs throughout the document. Implementers + are strongly encouraged to use UUIDs as a necessary component of + the protocol. + + Removed the LCUP Cancel extended operation in favor of the new + LDAP Cancel operation [CANCEL]. + + Got rid of the lcupSuccess result code. All result codes will be + added to the IANA LDAP result code registry as part of the LDAP + standard. Also removed the result code and text from the client + update done control value. + + Changed any and all wording suggesting an LCUP Context is related + to a naming context. New text says an LCUP Context is a part of + the DIT that supports LCUP, and that a server may have one or more + LCUP Contexts. + + Removed Old Section 4.2: lcupCookieScheme + We decided that LCUP did not need a discovery mechanism. The + controls and extended operations will be published in the root DSE + as per the LDAP standards. + + Changed references to "Unique Identifier" to either "Universally + Unique Identifier" or "UUID". + + Added this text to section 6 "Client Side Considerations": + "- The client may receive a referral (Referral [RFC2251 SECTION + 4.1.11]) when the search base is a subordinate reference, and + this will end the operation." + + Added a note to section 6 "Client Side Considerations" about how + to establish a baseline set of entries or entry cache. + + Added the field sendCookieInterval to the clientUpdate control + value. + + Added a note to section 6 "Client Side Considerations" explaining + possible uses of the sendCookieInterval. -Megginson, et. al. Proposed Standard - Expires: May 2002 19 +Megginson, et. al. Proposed Standard - Expires: December 2002 19 @@ -1176,7 +1176,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 19 4.2 describes the new cookie format and defines the LCUP Cookie Value. -Megginson, et. al. Proposed Standard - Expires: May 2002 20 +Megginson, et. al. Proposed Standard - Expires: December 2002 20 @@ -1235,7 +1235,7 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 20 containing the message id of the operation to stop. -Megginson, et. al. Proposed Standard - Expires: May 2002 21 +Megginson, et. al. Proposed Standard - Expires: December 2002 21 @@ -1294,5 +1294,5 @@ Megginson, et. al. Proposed Standard - Expires: May 2002 21 -Megginson, et. al. Proposed Standard - Expires: May 2002 22 +Megginson, et. al. Proposed Standard - Expires: December 2002 22 \ No newline at end of file diff --git a/doc/man/man1/ldapdelete.1 b/doc/man/man1/ldapdelete.1 index 1969b20cc3..35f820d819 100644 --- a/doc/man/man1/ldapdelete.1 +++ b/doc/man/man1/ldapdelete.1 @@ -1,4 +1,4 @@ -.TH LDAPDELETE 1 "20 August 2001" "OpenLDAP LDVERSION" +.TH LDAPDELETE 1 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man1/ldapmodify.1 b/doc/man/man1/ldapmodify.1 index 1397533632..64808e62eb 100644 --- a/doc/man/man1/ldapmodify.1 +++ b/doc/man/man1/ldapmodify.1 @@ -1,4 +1,4 @@ -.TH LDAPMODIFY 1 "20 August 2001" "OpenLDAP LDVERSION" +.TH LDAPMODIFY 1 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man1/ldapmodrdn.1 b/doc/man/man1/ldapmodrdn.1 index 8468e7a4e5..74d0ac8341 100644 --- a/doc/man/man1/ldapmodrdn.1 +++ b/doc/man/man1/ldapmodrdn.1 @@ -1,20 +1,63 @@ -.TH LDAPMODRDN 1 "13 November 1995" "U-M LDAP LDVERSION" +.TH LDAPMODRDN 1 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME -ldapmodrdn \- ldap modify entry RDN tool +ldapmodrdn \- LDAP rename entry tool .SH SYNOPSIS .B ldapmodrdn -.B [\-r] -.B [\-n] -.B [\-v] -.B [\-k] -.B [\-K] -.B [\-c] -.B [\-d debuglevel] -.B [\-D binddn] -.B [\-w passwd] -.B [\-h ldaphost] -.B [\-p ldapport] -.B [\-f file] [dn rdn] +[\c +.BR \-r ] +[\c +.BR \-n ] +[\c +.BR \-v ] +[\c +.BR \-k ] +[\c +.BR \-K ] +[\c +.BR \-c ] +[\c +.BR \-C ] +[\c +.BR \-M[M] ] +[\c +.BI \-d \ debuglevel\fR] +[\c +.BI \-D \ binddn\fR] +[\c +.BR \-W ] +[\c +.BI \-w \ passwd\fR] +[\c +.BI \-H \ ldapuri\fR] +[\c +.BI \-h \ ldaphost\fR] +[\c +.BI \-p \ ldapport\fR] +[\c +.BI \-P \ 2\fR\||\|\fI3\fR] +[\c +.BR \-O \ security-properties ] +[\c +.BR \-I ] +[\c +.BR \-Q ] +[\c +.BI \-U \ authcid\fR] +[\c +.BR \-x ] +[\c +.BI \-X \ authzid\fR] +[\c +.BI \-Y \ mech\fR] +[\c +.BR \-Z[Z] ] +[\c +.BI \-f \ file\fR] +[\c +.I dn rdn\fR] .SH DESCRIPTION .B ldapmodrdn is a shell-accessible interface to the @@ -41,21 +84,29 @@ debugging in conjunction with -v. Use verbose mode, with many diagnostics written to standard output. .TP .B \-k -Use Kerberos authentication instead of simple authentication. It is +Use Kerberos IV authentication instead of simple authentication. It is assumed that you already have a valid ticket granting ticket. .B ldapmodrdn -must be compiled with KERBEROS defined for this option to have effect. +must be compiled with Kerberos support for this option to have effect. .TP .B \-K -Same as \-k, but only does step 1 of the kerberos bind. This is useful +Same as \-k, but only does step 1 of the Kerberos IV bind. This is useful when connecting to a slapd and there is no x500dsa.hostname principal -registered with your kerberos servers. +registered with your Kerberos Domain Controller(s). +.TP +.B \-C +Automatically chase referrals. .TP .B \-c Continuous operation mode. Errors are reported, but ldapmodify will continue with modifications. The default is to exit after reporting an error. .TP +.B \-M[M] +Enable manage DSA IT control. +.B \-MM +makes control critical. +.TP .B \-d debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapmodrdn @@ -66,18 +117,65 @@ compiled with LDAP_DEBUG defined for this option to have any effect. Read the entry modification information from \fIfile\fP instead of from standard input or the command-line. .TP +.B \-x +Use simple authentication instead of SASL. +.TP .B \-D binddn -Use \fIbinddn\fP to bind to the X.500 directory. \fIbinddn\fP should be -a string-represented DN as defined in RFC 1779. +Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. +.TP +.B \-W +Prompt for simple authentication. +This is used instead of specifying the password on the command line. .TP .B \-w passwd Use \fIpasswd\fP as the password for simple authentication. .TP -.B \-h ldaphost +.BI \-H \ ldapuri +Specify URI(s) referring to the ldap server(s). +.TP +.BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. +Deprecated in favor of -H. .TP -.B \-p ldapport +.BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. +Deprecated in favor of -H. +.TP +.BI \-P \ 2\fR\||\|\fI3 +Specify the LDAP protocol version to use. +.TP +.BI \-O \ security-properties +Specify SASL security properties. +.TP +.B \-I +Enable SASL Interactive mode. Always prompt. Default is to prompt +only as needed. +.TP +.B \-Q +Enable SASL Quiet mode. Never prompt. +.TP +.BI \-U \ authcid +Specify the authentication ID for SASL bind. The form of the ID +depends on the actual SASL mechanism used. +.TP +.BI \-X \ authzid +Specify the requested authorization ID for SASL bind. +.I authzid +must be one of the following formats: +.B dn:\c +.I +or +.B u:\c +.I +.TP +.BI \-Y \ mech +Specify the SASL mechanism to be used for authentication. If it's not +specified, the program will choose the best mechanism the server knows. +.TP +.B \-Z[Z] +Issue StartTLS (Transport Layer Security) extended operation. If you use +.B \-ZZ\c +, the command will require the operation to be successful. .SH INPUT FORMAT If the command-line arguments \fIdn\fP and \fIrdn\fP are given, \fIrdn\fP will replace the RDN of the entry specified by the DN, \fIdn\fP. @@ -99,7 +197,7 @@ Assuming that the file exists and has the contents: .LP .nf - cn=Modify Me, o=University of Michigan, c=US + cn=Modify Me,dc=example,dc=com cn=The New Me .fi .LP @@ -120,13 +218,13 @@ status and a diagnostic message being written to standard error. .BR ldapdelete (1), .BR ldapmodify (1), .BR ldapsearch (1), +.BR ldap.conf (5), .BR ldap (3), .BR ldap_modrdn2 (3) -.LP -Kille, S., -.IR "A String Representation of Distinguished Names", -.SM RFC -1779, -ISODE Consortium, March 1995. -.SH BUGS -There is no interactive mode, but there probably should be. +.SH AUTHOR +The OpenLDAP Project +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man1/ldappasswd.1 b/doc/man/man1/ldappasswd.1 index a23f875c51..208f878cce 100644 --- a/doc/man/man1/ldappasswd.1 +++ b/doc/man/man1/ldappasswd.1 @@ -1,4 +1,4 @@ -.TH LDAPPASSWD 1 "20 August 2001" "OpenLDAP LDVERSION" +.TH LDAPPASSWD 1 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man1/ldapsearch.1 b/doc/man/man1/ldapsearch.1 index 2d66334d80..c5f43afa9c 100644 --- a/doc/man/man1/ldapsearch.1 +++ b/doc/man/man1/ldapsearch.1 @@ -1,32 +1,78 @@ -.TH LDAPSEARCH 1 "29 March 1996" "U-M LDAP LDVERSION" +.TH LDAPSEARCH 1 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME -ldapsearch \- ldap search tool +ldapsearch \- LDAP search tool .SH SYNOPSIS .B ldapsearch -.B [\-n] -.B [\-u] -.B [\-v] -.B [\-k] -.B [\-K] -.B [\-t] -.B [\-A] -.B [\-B] -.B [\-L] -.B [\-R] -.B [\-d debuglevel] -.B [\-F sep] -.B [\-f file] -.B [\-D binddn] -.B [\-w bindpasswd] -.B [\-h ldaphost] -.B [\-p ldapport] -.B [\-b searchbase] -.B [\-s scope ] -.B [\-a deref] -.B [\-l time limit] -.B [\-z size limit] -.B filter -.B [attrs....] +[\c +.BR \-n ] +[\c +.BR \-u ] +[\c +.BR \-v ] +[\c +.BR \-k ] +[\c +.BR \-K ] +[\c +.BR \-t ] +[\c +.BR \-A ] +[\c +.BR \-C ] +[\c +.BR \-L[L[L]] ] +[\c +.BR \-M[M] ] +[\c +.BI \-d \ debuglevel\fR] +[\c +.BI \-f \ file\fR] +[\c +.BI \-D \ binddn\fR] +[\c +.BR \-W ] +[\c +.BI \-w \ bindpasswd\fR] +[\c +.BI \-H \ ldapuri\fR] +[\c +.BI \-h \ ldaphost\fR] +[\c +.BI \-p \ ldapport\fR] +[\c +.BI \-P \ 2\fR\||\|\fI3\fR] +[\c +.BI \-b \ searchbase\fR] +[\c +.BI \-s \ base\fR\||\|\fIone\fR\||\|\fIsub\fR] +[\c +.BI \-a \ never\fR\||\|\fIalways\fR\||\|\fIsearch\fR\||\|\fIfind\fR] +[\c +.BI \-l \ timelimit\fR] +[\c +.BI \-z \ sizelimit\fR] +[\c +.BR \-O \ security-properties ] +[\c +.BR \-I ] +[\c +.BR \-Q ] +[\c +.BI \-U \ authcid\fR] +[\c +.BR \-x ] +[\c +.BI \-X \ authzid\fR] +[\c +.BI \-Y \ mech\fR] +[\c +.BR \-Z[Z] ] +.I filter +[\c +.IR attrs... ] .SH DESCRIPTION .I ldapsearch is a shell-accessible interface to the @@ -35,15 +81,16 @@ library call. .LP .B ldapsearch opens a connection to an LDAP server, binds, and performs a search -using the filter \fIfilter\fP. The \fIfilter\fP should conform to -the string representation for LDAP filters as defined in RFC 1558. +using specified parameters. The \fIfilter\fP should conform to +the string representation for search filters as defined in RFC 2254. +If not provided, the default filter, (objectClass=*), is used. .LP If -.B ldapsearch -finds one or more entries, the attributes specified by -\fIattrs\fP are retrieved and the entries and values are printed to -standard output. If no \fIattrs\fP are listed, all attributes are -returned. +.B ldapsearch finds one or more entries, the attributes specified by +\fIattrs\fP are returned. If * is listed, all user attributes are +returned. If + is listed, all operational attributes are returned. +If no \fIattrs\fP are listed, all user attributes are returned. If only +1.1 is listed, no attributes will be returned. .SH OPTIONS .TP .B \-n @@ -51,21 +98,22 @@ Show what would be done, but don't actually perform the search. Useful for debugging in conjunction with -v. .TP .B \-u -Include the User Friendly form of the Distinguished Name (DN) in the output +Include the User Friendly Name form of the Distinguished Name (DN) +in the output. .TP .B \-v -Run in verbose mode, with many diagnostics written to standard output +Run in verbose mode, with many diagnostics written to standard output. .TP .B \-k -Use Kerberos authentication instead of simple authentication. It is +Use Kerberos IV authentication instead of simple authentication. It is assumed that you already have a valid ticket granting ticket. .B ldapsearch -must be compiled with KERBEROS defined for this option to have any effect. +must be compiled with Kerberos support for this option to have any effect. .TP .B \-K -Same as \-k, but only does step 1 of the kerberos bind. This is useful +Same as \-k, but only does step 1 of the Kerberos IV bind. This is useful when connecting to a slapd and there is no x500dsa.hostname principal -registered with your kerberos servers. +registered with your Kerberos Domain Controller(s). .TP .B \-t Write retrieved values to a set of temporary files. This is useful for @@ -76,29 +124,23 @@ Retrieve attributes only (no values). This is useful when you just want to see if an attribute is present in an entry and are not interested in the specific values. .TP -.B \-B -Do not suppress display of non-ascii values. This is useful when -dealing with values that appear in alternate characters sets such as -ISO-8859.1. This option is implied by -L (see below). -.TP .B \-L -Display search results in -.BR ldif (5) -format. This option also turns on the -B option, and causes the -F option -to be ignored. +Search results are display in LDAP Data Interchange Format detailed in +.BR ldif (5). +A single -L restricts the output to LDIFv1. +A second -L disables comments. +A third -L disables printing of the LDIF version. +The default is to use an extended version of LDIF. .TP -.B \-R -Do not automatically follow referrals returned while searching. -.B ldapsearch -must be compiled with LDAP_REFERRALS defined for referrals to be -automatically followed by default, and for this option to have any effect. +.B \-M[M] +Enable manage DSA IT control. +.B \-MM +makes control critical. .TP -.B \-F sep -Use \fIsep\fP as the field separator between attribute names and values. -The default separator is `=', unless the -L flag has been specified, in -which case this option is ignored. +.B \-C +Automatically chase referrals. .TP -.B \-S attribute +.BI \-S \ attribute Sort the entries returned based on \fIattribute\fP. The default is not to sort entries returned. If \fIattribute\fP is a zero-length string (""), the entries are sorted by the components of their Distingished Name. See @@ -110,182 +152,249 @@ normally prints out entries as it receives them. The use of the option defeats this behavior, causing all entries to be retrieved, then sorted, then printed. .TP -.B \-d debuglevel +.BI \-d \ debuglevel Set the LDAP debugging level to \fIdebuglevel\fP. .B ldapsearch must be compiled with LDAP_DEBUG defined for this option to have any effect. .TP -.B \-f file +.BI \-f \ file Read a series of lines from \fIfile\fP, performing one LDAP search for each line. In this case, the \fIfilter\fP given on the command line is treated as a pattern where the first occurrence of \fB%s\fP is replaced with a line from \fIfile\fP. If \fIfile\fP is a single \fI-\fP character, then the lines are read from standard input. .TP -.B \-D binddn -Use \fIbinddn\fP to bind to the X.500 directory. \fIbinddn\fP should be -a string-represented DN as defined in RFC 1779. +.B \-x +Use simple authentication instead of SASL. +.TP +.BI \-D \ binddn +Use the Distinguished Name \fIbinddn\fP to bind to the LDAP directory. +.TP +.B \-W +Prompt for simple authentication. +This is used instead of specifying the password on the command line. .TP -.B \-w bindpasswd +.BI \-w \ bindpasswd Use \fIbindpasswd\fP as the password for simple authentication. .TP -.B \-h ldaphost +.BI \-H \ ldapuri +Specify URI(s) referring to the ldap server(s). +.TP +.BI \-h \ ldaphost Specify an alternate host on which the ldap server is running. +Deprecated in favor of -H. .TP -.B \-p ldapport +.BI \-p \ ldapport Specify an alternate TCP port where the ldap server is listening. +Deprecated in favor of -H. .TP -.B \-b searchbase +.BI \-b \ searchbase Use \fIsearchbase\fP as the starting point for the search instead of the default. .TP -.B \-s scope -Specify the scope of the search. \fIscope\fP should be one of -.B base, -.B one, +.BI \-s \ base\fR\||\|\fIone\fR\||\|\fIsub +Specify the scope of the search to be one of +.IR base , +.IR one , or -.B sub +.I sub to specify a base object, one-level, or subtree search. The default is -.BR sub . +.IR sub . .TP -.B \-a deref -Specify how aliases dereferencing is done. \fIderef\fP should be one of -.B never, -.B always, -.B search, +.BI \-a \ never\fR\||\|\fIalways\fR\||\|\fIsearch\fR\||\|\fIfind +Specify how aliases dereferencing is done. Should be one of +.IR never , +.IR always , +.IR search , or -.B find +.I find to specify that aliases are never dereferenced, always dereferenced, dereferenced when searching, or dereferenced only when locating the base object for the search. The default is to never dereference aliases. .TP -.B \-l timelimit -wait at most \fItimelimit\fP seconds for a search to complete. +.BI \-P \ 2\fR\||\|\fI3 +Specify the LDAP protocol version to use. +.TP +.BI \-l \ timelimit +wait at most \fItimelimit\fP seconds for a search to complete. A +timelimit of +.I 0 +(zero) removes the +.B ldap.conf +limit. +A server may impose a maximal timelimit which only +the root user may override. +.TP +.BI \-z \ sizelimit +retrieve at most \fIsizelimit\fP entries for a search. A sizelimit +of +.I 0 +(zero) removes the +.B ldap.conf +limit. +A server may impose a maximal sizelimit which only +the root user may override. +.TP +.BI \-O \ security-properties +Specify SASL security properties. +.TP +.B \-I +Enable SASL Interactive mode. Always prompt. Default is to prompt +only as needed. .TP -.B \-z sizelimit -retrieve at most \fIsizelimit\fP seconds for a search to complete. +.B \-Q +Enable SASL Quiet mode. Never prompt. +.TP +.BI \-U \ authcid +Specify the authentication ID for SASL bind. The form of the ID +depends on the actual SASL mechanism used. +.TP +.BI \-X \ authzid +Specify the requested authorization ID for SASL bind. +.I authzid +must be one of the following formats: +.B dn:\c +.I +or +.B u:\c +.I +.TP +.BI \-Y \ mech +Specify the SASL mechanism to be used for authentication. If it's not +specified, the program will choose the best mechanism the server knows. +.TP +.B \-Z[Z] +Issue StartTLS (Transport Layer Security) extended operation. If you use +.B \-ZZ\c +, the command will require the operation to be successful. .SH OUTPUT FORMAT -If one or more entries are found, each entry is written to standard output -in the form: +If one or more entries are found, each entry is written to standard +output in LDAP Data Interchange Format or +.BR ldif (5): .LP .nf - Distinguished Name (DN) - User Friendly Name (this line present only if the -u option is used) - attributename=value - attributename=value - attributename=value + version: 1 + + # bjensen, example, net + dn: uid=bjensen,dc=example,dc=net + objectClass: person + objectClass: dcObject + uid: bjensen + cn: Barbara Jensen + sn: Jensen ... .fi .LP -Multiple entries are separated with a single blank line. If the -F option -is used to specify a separator character, it will be used instead of the -`=' character. If the -t option is used, the name of a temporary file +If the -t option is used, the URI of a temporary file is used in place of the actual value. If the -A option is given, only the "attributename" part is written. .SH EXAMPLE The following command: .LP .nf - ldapsearch "cn=mark smith" cn telephoneNumber + ldapsearch -LLL "(sn=smith)" cn sn telephoneNumber .fi .LP -will perform a subtree search (using the default search base) for entries -with a commonName of "mark smith". The commonName and telephoneNumber -values will be retrieved and printed to standard output. +will perform a subtree search (using the default search base defined +in +.BR ldap.conf (5)) +for entries with a surname (sn) of smith. The common name (cn), surname +(sn) and telephoneNumber values will be retrieved and printed to +standard output. The output might look something like this if two entries are found: .LP .nf -cn=Mark D Smith, ou="College of Literature, Science, and the Arts", ou=Students, ou=People, o=University of Michigan, c=US -cn=Mark Smith -cn=Mark David Smith -cn=Mark D Smith 1 -cn=Mark D Smith -telephoneNumber=+1 313 930-9489 + dn: uid=jts,dc=example,dc=com + cn: John Smith + cn: John T. Smith + sn: Smith + sn;lang-en: Smith + sn;lang-de: Schmidt + telephoneNumber: 1 555 123-4567 -cn=Mark C Smith, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US -cn=Mark Smith -cn=Mark C Smith 1 -cn=Mark C Smith -telephoneNumber=+1 313 764-2277 + dn: uid=sss,dc=example,dc=com + cn: Steve Smith + cn: Steve S. Smith + sn: Smith + sn;lang-en: Smith + sn;lang-de: Schmidt + telephoneNumber: 1 555 765-4321 .fi .LP The command: .LP .nf - ldapsearch -u -t "uid=mcs" jpegPhoto audio + ldapsearch -LLL -u -t "(uid=xyz)" jpegPhoto audio .fi .LP will perform a subtree search using the default search base for entries -with user id of "mcs". The user friendly form of the entry's DN will be +with user id of "xyz". The user friendly form of the entry's DN will be output after the line that contains the DN itself, and the jpegPhoto and audio values will be retrieved and written to temporary files. The output might look like this if one entry with one value for each of the requested attributes is found: .LP .nf -cn=Mark C Smith, ou=Information Technology Division, ou=Faculty and Staff, ou=People, o=University of Michigan, c=US -Mark C Smith, Information Technology Division, Faculty and Staff, People, University of Michigan, US -audio=/tmp/ldapsearch-audio-a19924 -jpegPhoto=/tmp/ldapsearch-jpegPhoto-a19924 + dn: uid=xyz,dc=example,dc=com + ufn: xyz, example, com + audio:< file::/tmp/ldapsearch-audio-a19924 + jpegPhoto:< file::=/tmp/ldapsearch-jpegPhoto-a19924 .fi .LP This command: .LP .nf - ldapsearch -L -s one -b "c=US" "o=university*" o description + ldapsearch -LLL -s one -b "c=US" "(o=University*)" o description .fi .LP -will perform a one-level search at the c=US level for all organizations -whose organizationName begins with \fBuniversity\fP. Search results -will be displayed in the LDIF format. -The organizationName and description attribute values will be retrieved +will perform a one-level search at the c=US level for all entries +whose organization name (o) begins begins with \fBUniversity\fP. +The organization name and description attribute values will be retrieved and printed to standard output, resulting in output similar to this: .LP .nf -dn: o=University of Alaska Fairbanks, c=US -o: University of Alaska Fairbanks -description: Preparing Alaska for a brave new yesterday -description: leaf node only + dn: o=University of Alaska Fairbanks,c=US + o: University of Alaska Fairbanks + description: Preparing Alaska for a brave new yesterday + description: leaf node only -dn: o=University of Colorado at Boulder, c=US -o: University of Colorado at Boulder -description: No personnel information -description: Institution of education and research + dn: o=University of Colorado at Boulder,c=US + o: University of Colorado at Boulder + description: No personnel information + description: Institution of education and research -dn: o=University of Colorado at Denver, c=US -o: University of Colorado at Denver -o: UCD -o: CU/Denver -o: CU-Denver -description: Institute for Higher Learning and Research + dn: o=University of Colorado at Denver,c=US + o: University of Colorado at Denver + o: UCD + o: CU/Denver + o: CU-Denver + description: Institute for Higher Learning and Research -dn: o=University of Florida, c=US -o: University of Florida -o: UFl -description: Warper of young minds + dn: o=University of Florida,c=US + o: University of Florida + o: UFl + description: Warper of young minds -etc.... + ... .fi .SH DIAGNOSTICS -Exit status is 0 if no errors occur. Errors result in a non-zero exit -status and a diagnostic message being written to standard error. +Exit status is zero if no errors occur. +Errors result in a non-zero exit status and +a diagnostic message being written to standard error. .SH "SEE ALSO" .BR ldapadd (1), .BR ldapdelete (1), .BR ldapmodify (1), .BR ldapmodrdn (1), +.BR ldap.conf (5), +.BR ldif (5), .BR ldap (3), .BR ldap_search (3) -.LP -Kille, S., -.IR "A String Representation of Distinguished Names", -.SM RFC -1779, -ISODE Consortium, March 1995. -.LP -Howes, T., -.IR "A String Representation of LDAP Search Filters", -.SM RFC -1558, -University of Michigan, December 1993. +.SH AUTHOR +The OpenLDAP Project +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man1/ud.1 b/doc/man/man1/ud.1 index c1eb3bc5ca..d7b0feabb6 100644 --- a/doc/man/man1/ud.1 +++ b/doc/man/man1/ud.1 @@ -1,4 +1,4 @@ -.TH UD 1 "20 August 2000" "OpenLDAP LDVERSION" +.TH UD 1 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/lber-decode.3 b/doc/man/man3/lber-decode.3 index b0ff540d00..8b4cfde742 100644 --- a/doc/man/man3/lber-decode.3 +++ b/doc/man/man3/lber-decode.3 @@ -1,4 +1,4 @@ -.TH LBER_DECODE 3 "25 January 2002" "OpenLDAP LDVERSION" +.TH LBER_DECODE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/lber-encode.3 b/doc/man/man3/lber-encode.3 index be7302cb79..40d617c79a 100644 --- a/doc/man/man3/lber-encode.3 +++ b/doc/man/man3/lber-encode.3 @@ -1,4 +1,4 @@ -.TH LBER_ENCODE 3 "25 January 2002" "OpenLDAP LDVERSION" +.TH LBER_ENCODE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/lber-memory.3 b/doc/man/man3/lber-memory.3 index 2cf9d32332..71357ab3e4 100644 --- a/doc/man/man3/lber-memory.3 +++ b/doc/man/man3/lber-memory.3 @@ -1,4 +1,4 @@ -.TH LBER_MEMORY 3 "25 January 2002" "OpenLDAP LDVERSION" +.TH LBER_MEMORY 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/lber-types.3 b/doc/man/man3/lber-types.3 index 0a8b020b76..52b5320588 100644 --- a/doc/man/man3/lber-types.3 +++ b/doc/man/man3/lber-types.3 @@ -1,4 +1,4 @@ -.TH LBER_TYPES 3 "25 January 2002" "OpenLDAP LDVERSION" +.TH LBER_TYPES 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap.3 b/doc/man/man3/ldap.3 index 2b3c97b6ac..795a041321 100644 --- a/doc/man/man3/ldap.3 +++ b/doc/man/man3/ldap.3 @@ -1,4 +1,4 @@ -.TH LDAP 3 "13 January 2002" "OpenLDAP LDVERSION" +.TH LDAP 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_abandon.3 b/doc/man/man3/ldap_abandon.3 index a5266937ed..900d5612e9 100644 --- a/doc/man/man3/ldap_abandon.3 +++ b/doc/man/man3/ldap_abandon.3 @@ -1,4 +1,4 @@ -.TH LDAP_ABANDON 3 "13 January 2002" "OpenLDAP LDVERSION" +.TH LDAP_ABANDON 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_add.3 b/doc/man/man3/ldap_add.3 index fbd33a321d..2ad65d4fac 100644 --- a/doc/man/man3/ldap_add.3 +++ b/doc/man/man3/ldap_add.3 @@ -1,4 +1,4 @@ -.TH LDAP_ADD 3 "13 January 2002" "OpenLDAP LDVERSION" +.TH LDAP_ADD 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_bind.3 b/doc/man/man3/ldap_bind.3 index 16ce233d33..d2f26a02f2 100644 --- a/doc/man/man3/ldap_bind.3 +++ b/doc/man/man3/ldap_bind.3 @@ -1,4 +1,4 @@ -.TH LDAP_BIND 3 "13 January 2002" "OpenLDAP LDVERSION" +.TH LDAP_BIND 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_cache.3 b/doc/man/man3/ldap_cache.3 index fbc8b0fcb0..a1be5c9253 100644 --- a/doc/man/man3/ldap_cache.3 +++ b/doc/man/man3/ldap_cache.3 @@ -1,10 +1,12 @@ -.TH LDAP_CACHE 3 "14 November 1994" "U-M LDAP LDVERSION" +.TH LDAP_CACHE 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_enable_cache, ldap_disable_cache, ldap_destroy_cache, ldap_flush_cache, ldap_uncache_entry, ldap_uncache_request, ldap_set_cache_options \- LDAP client caching routines .SH SYNOPSIS .nf .ft B -#include #include .ft .LP @@ -50,9 +52,10 @@ unsigned long opts; .fi .SH DESCRIPTION .LP -These routines are used to control the behavior of client caching of -.BR ldap_search (3), -.BR cldap_search_s (3), +These routines are used to control the behavior of the +.B experimental +client caching of +.BR ldap_search (3) and .BR ldap_compare (3) operations. By @@ -113,5 +116,9 @@ void and return nothing. .SH SEE ALSO .BR ldap (3), .BR ldap_search (3), -.BR ldap_compare (3), -.BR cldap_search_s (3) +.BR ldap_compare (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_compare.3 b/doc/man/man3/ldap_compare.3 index b4971eb45d..76578604c1 100644 --- a/doc/man/man3/ldap_compare.3 +++ b/doc/man/man3/ldap_compare.3 @@ -1,4 +1,4 @@ -.TH LDAP_COMPARE 3 "22 September 1998" "OpenLDAP LDVERSION" +.TH LDAP_COMPARE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_delete.3 b/doc/man/man3/ldap_delete.3 index 9390106367..5353810445 100644 --- a/doc/man/man3/ldap_delete.3 +++ b/doc/man/man3/ldap_delete.3 @@ -1,4 +1,4 @@ -.TH LDAP_DELETE 3 "22 September 1998" "OpenLDAP LDVERSION" +.TH LDAP_DELETE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_error.3 b/doc/man/man3/ldap_error.3 index f19e7ff6e3..7ef83ac71d 100644 --- a/doc/man/man3/ldap_error.3 +++ b/doc/man/man3/ldap_error.3 @@ -1,4 +1,4 @@ -.TH LDAP_ERROR 3 "23 July 2001" "OpenLDAP LDVERSION" +.TH LDAP_ERROR 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_first_attribute.3 b/doc/man/man3/ldap_first_attribute.3 index ec9fd54b43..ace09cfe92 100644 --- a/doc/man/man3/ldap_first_attribute.3 +++ b/doc/man/man3/ldap_first_attribute.3 @@ -1,4 +1,4 @@ -.TH LDAP_FIRST_ATTRIBUTE 3 "23 July 2001" "OpenLDAP LDVERSION" +.TH LDAP_FIRST_ATTRIBUTE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_first_entry.3 b/doc/man/man3/ldap_first_entry.3 index 9df89ebf52..153d2ff5fd 100644 --- a/doc/man/man3/ldap_first_entry.3 +++ b/doc/man/man3/ldap_first_entry.3 @@ -1,4 +1,4 @@ -.TH LDAP_FIRST_ENTRY 3 "23 July 2001" "OpenLDAP LDVERSION" +.TH LDAP_FIRST_ENTRY 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_first_message.3 b/doc/man/man3/ldap_first_message.3 index f341319d3c..eb53a8100b 100644 --- a/doc/man/man3/ldap_first_message.3 +++ b/doc/man/man3/ldap_first_message.3 @@ -1,4 +1,4 @@ -.TH LDAP_FIRST_MESSAGE 3 "19 September 2001" "OpenLDAP LDVERSION" +.TH LDAP_FIRST_MESSAGE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_first_reference.3 b/doc/man/man3/ldap_first_reference.3 index fe9bda4b9c..13fc43ff7c 100644 --- a/doc/man/man3/ldap_first_reference.3 +++ b/doc/man/man3/ldap_first_reference.3 @@ -1,4 +1,4 @@ -.TH LDAP_FIRST_REFERENCE 3 "19 September 2001" "OpenLDAP LDVERSION" +.TH LDAP_FIRST_REFERENCE 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_get_dn.3 b/doc/man/man3/ldap_get_dn.3 index c86c0de6f7..ac7cab89b4 100644 --- a/doc/man/man3/ldap_get_dn.3 +++ b/doc/man/man3/ldap_get_dn.3 @@ -1,4 +1,4 @@ -.TH LDAP_GET_DN 3 "22 July 2001" "OpenLDAP LDVERSION" +.TH LDAP_GET_DN 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. @@ -13,6 +13,12 @@ ldap_get_dn, ldap_explode_dn, ldap_explode_rdn, ldap_dn2ufn \- LDAP DN handling char *ldap_get_dn( LDAP *ld, LDAPMessage *entry ) .LP .ft B +int ldap_str2dn( const char *str, LDAPDN **dn, unsigned flags ) +.LP +.ft B +int ldap_dn2str( LDAPDN *dn, char **str, unsigned flags ) +.LP +.ft B char **ldap_explode_dn( const char *dn, int notypes ) .LP .ft B @@ -29,12 +35,6 @@ char *ldap_dcedn2dn( const char * dn ) .LP .ft B char *ldap_dn2ad_canonical( const char * dn ) -.LP -.ft B -int ldap_str2dn( const char *str, LDAPDN **dn, unsigned flags ) -.LP -.ft B -int ldap_dn2str( LDAPDN *dn, char **str, unsigned flags ) .SH DESCRIPTION These routines allow LDAP entry names (Distinguished Names, or DNs) to be obtained, parsed, converted to a user-friendly form, and tested. @@ -53,60 +53,6 @@ the entry's DN. Space for the DN will be obtained dynamically and should be freed by the caller using .BR ldap_memfree (3). .LP -The -.B ldap_explode_dn() -routine takes a DN as returned by -.B ldap_get_dn() -and breaks it up into its component parts. Each part is known as a -Relative Distinguished Name, or RDN. -.B ldap_explode_dn() -returns a -NULL-terminated array, each component of which contains an RDN from the -DN. The \fInotypes\fP parameter is used to request that only the RDN -values be returned, not their types. For example, the DN "cn=Bob, -c=US" would return as either { "cn=Bob", "c=US", NULL } or { "Bob", -"US", NULL }, depending on whether notypes was 0 or 1, respectively. -The result can be freed by calling -.BR ldap_value_free (3). -.LP -Similarly, the -.B ldap_explode_rdn() -routine takes an RDN as returned by -.B ldap_explode_dn(dn,0) -and breaks it up into its "type=value" component parts (or just "value", -if the \fInotypes\fP parameter is set). Note the value is not -unescaped. The result can be freed by calling -.BR ldap_value_free (3). -.LP -.B ldap_dn2ufn() -is used to turn a DN as returned by -.BR ldap_get_dn (3) -into a more user-friendly form, stripping off all type names. See -"Using the Directory to Achieve User Friendly Naming" (RFC 1781) -for more details on the UFN format. Due to the ambigious nature -of the format, it is generally only used for display purposes. -The space for the UFN returned is obtained dynamically and the user -is responsible for freeing it via a call to -.BR ldap_memfree (3). -.LP -.B ldap_dn2dcedn() -is used to turn a DN as returned by -.BR ldap_get_dn (3) -into a DCE-style DN, e.g. a string with most-significant to least -significant rdns separated by slashes ('/'); rdn components -are separated by commas (','). -Only printable chars (e.g. LDAPv2 printable string) are allowed, -at least in this implementation. -.B ldap_dcedn2dn() -performs the opposite operation. -.B ldap_dn2ad_canonical() -turns a DN into a AD canonical name, which is basically a DCE dn -with attribute types omitted. -The trailing domain, if present, is turned in a DNS-like domain. -The space for the returned value is obtained dynamically and the user -is responsible for freeing it via a call to -.BR ldap_memfree (3). -.LP .B ldap_str2dn() parses a string representation of a distinguished name contained in .B str @@ -198,6 +144,67 @@ plus .fi for user-friendly naming (RFC 1781) and AD canonical. +.LP +The following routines are viewed as deprecated in favor of +.B ldap_str2dn() +and +.BR ldap_dn2str(). +They are provided to support legacy applications. +.LP +The +.B ldap_explode_dn() +routine takes a DN as returned by +.B ldap_get_dn() +and breaks it up into its component parts. Each part is known as a +Relative Distinguished Name, or RDN. +.B ldap_explode_dn() +returns a +NULL-terminated array, each component of which contains an RDN from the +DN. The \fInotypes\fP parameter is used to request that only the RDN +values be returned, not their types. For example, the DN "cn=Bob, +c=US" would return as either { "cn=Bob", "c=US", NULL } or { "Bob", +"US", NULL }, depending on whether notypes was 0 or 1, respectively. +Assertion values in RDN strings may included escaped characters. +The result can be freed by calling +.BR ldap_value_free (3). +.LP +Similarly, the +.B ldap_explode_rdn() +routine takes an RDN as returned by +.B ldap_explode_dn(dn,0) +and breaks it up into its "type=value" component parts (or just "value", +if the \fInotypes\fP parameter is set). Note the value is not +unescaped. The result can be freed by calling +.BR ldap_value_free (3). +.LP +.B ldap_dn2ufn() +is used to turn a DN as returned by +.BR ldap_get_dn (3) +into a more user-friendly form, stripping off all type names. See +"Using the Directory to Achieve User Friendly Naming" (RFC 1781) +for more details on the UFN format. Due to the ambigious nature +of the format, it is generally only used for display purposes. +The space for the UFN returned is obtained dynamically and the user +is responsible for freeing it via a call to +.BR ldap_memfree (3). +.LP +.B ldap_dn2dcedn() +is used to turn a DN as returned by +.BR ldap_get_dn (3) +into a DCE-style DN, e.g. a string with most-significant to least +significant rdns separated by slashes ('/'); rdn components +are separated by commas (','). +Only printable chars (e.g. LDAPv2 printable string) are allowed, +at least in this implementation. +.B ldap_dcedn2dn() +performs the opposite operation. +.B ldap_dn2ad_canonical() +turns a DN into a AD canonical name, which is basically a DCE dn +with attribute types omitted. +The trailing domain, if present, is turned in a DNS-like domain. +The space for the returned value is obtained dynamically and the user +is responsible for freeing it via a call to +.BR ldap_memfree (3). .SH ERRORS If an error occurs in .BR ldap_get_dn() , diff --git a/doc/man/man3/ldap_get_values.3 b/doc/man/man3/ldap_get_values.3 index e9acf3d207..6b969afd70 100644 --- a/doc/man/man3/ldap_get_values.3 +++ b/doc/man/man3/ldap_get_values.3 @@ -1,4 +1,4 @@ -.TH LDAP_GET_VALUES 3 "22 September 1998" "OpenLDAP LDVERSION" +.TH LDAP_GET_VALUES 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_modify.3 b/doc/man/man3/ldap_modify.3 index baf71a3736..213d6b5345 100644 --- a/doc/man/man3/ldap_modify.3 +++ b/doc/man/man3/ldap_modify.3 @@ -1,10 +1,12 @@ -.TH LDAP_MODIFY 3 "15 November 1994" "U-M LDAP LDVERSION" +.TH LDAP_MODIFY 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_modify, ldap_modify_s \- Perform an LDAP modify operation .SH SYNOPSIS .nf .ft B -#include #include .LP .ft B @@ -111,3 +113,8 @@ field of \fIld\fP. .BR ldap (3), .BR ldap_error (3), .BR ldap_add (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_modrdn.3 b/doc/man/man3/ldap_modrdn.3 index 1b382758f1..339045c971 100644 --- a/doc/man/man3/ldap_modrdn.3 +++ b/doc/man/man3/ldap_modrdn.3 @@ -1,10 +1,12 @@ -.TH LDAP_MODRDN 3 "1 December 1994" "U-M LDAP LDVERSION" +.TH LDAP_MODRDN 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_modrdn, ldap_modrdn_s, ldap_modrdn2, ldap_modrdn2_s \- Perform an LDAP modify RDN operation .SH SYNOPSIS .nf .ft B -#include #include .LP .ft B @@ -73,3 +75,8 @@ for more details. .SH SEE ALSO .BR ldap (3), .BR ldap_error (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_open.3 b/doc/man/man3/ldap_open.3 index 746e66509a..d9b56781f6 100644 --- a/doc/man/man3/ldap_open.3 +++ b/doc/man/man3/ldap_open.3 @@ -1,10 +1,12 @@ -.TH LDAP_OPEN 3 "28 March 1996" "U-M LDAP LDVERSION" +.TH LDAP_OPEN 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_init, ldap_open \- Initialize the LDAP library and open a connection to an LDAP server .SH SYNOPSIS .nf .ft B -#include #include .LP .ft B @@ -81,8 +83,8 @@ but does not open a connection to the LDAP server. The actual connection open will occur when the first operation is attempted. At this time, .B ldap_init() -should only -be used if the LDAP library is compiled with LDAP_REFERRALS defined. +is preferred. +.B ldap_open() will be depreciated in a later release. .SH ERRORS If an error occurs, these routines will return NULL and errno should be set appropriately. @@ -111,3 +113,8 @@ in the LDAP structure. .BR ldap (3), .BR ldap_bind (3), .BR errno (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_parse_reference.3 b/doc/man/man3/ldap_parse_reference.3 new file mode 100644 index 0000000000..78dc4f8098 --- /dev/null +++ b/doc/man/man3/ldap_parse_reference.3 @@ -0,0 +1,61 @@ +.TH LDAP_PARSE_REFERENCE 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. +.SH NAME +ldap_parse_reference \- Extract referrals and controls from a reference message +.SH SYNOPSIS +.nf +.ft B +#include +.LP +.ft B +int ldap_parse_reference( LDAP *ld, LDAPMessage *reference, + char ***referralsp, LDAPControl ***serverctrlsp, int freeit ) +.SH DESCRIPTION +.LP +The +.B ldap_parse_reference() +routine is used to extract referrals and controls from a reference message. +The \fIreference\fP parameter is a reference message as returned by a +call to +.BR ldap_first_reference (3) , +.BR ldap_next_reference (3) , +.BR ldap_first_message (3) , +.BR ldap_next_message (3) , +or +.BR ldap_result (3) . +.LP +The \fIreferralsp\fP parameter will be filled in with an allocated array of +character strings. The strings are copies of the referrals contained in +the parsed message. The array should be freed by calling +.BR ldap_value_free (3) . +If \fIreferralsp\fP is NULL, no referrals are returned. +If no referrals were returned, \fI*referralsp\fP is set to NULL. +.LP +The \fIserverctrlsp\fP parameter will be filled in with an allocated array of +controls copied from the parsed message. The array should be freed by calling +.BR ldap_controls_free (3) . +If \fIserverctrlsp\fP is NULL, no controls are returned. +If no controls were returned, \fI*serverctrlsp\fP is set to NULL. +.LP +The \fIfreeit\fP parameter determines whether the parsed message is +freed or not after the extraction. Any non-zero value will make it +free the message. The +.BR ldap_msgfree (3) +routine can also be used to free the message later. +.SH ERRORS +Upon success LDAP_SUCCESS is returned. Otherwise the values of the +\fIreferralsp\fP and \fIserverctrlsp\fP parameters are undefined. +.SH SEE ALSO +.BR ldap (3), +.BR ldap_first_reference (3), +.BR ldap_first_message (3), +.BR ldap_result (3), +.BR ldap_get_values (3), +.BR ldap_controls_free (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_parse_result.3 b/doc/man/man3/ldap_parse_result.3 index d30115ac77..4c6eacda90 100644 --- a/doc/man/man3/ldap_parse_result.3 +++ b/doc/man/man3/ldap_parse_result.3 @@ -1,4 +1,4 @@ -.TH LDAP_PARSE_RESULT 3 "10 October 2001" "OpenLDAP LDVERSION" +.TH LDAP_PARSE_RESULT 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_result.3 b/doc/man/man3/ldap_result.3 index 306e8be44c..c42b702e93 100644 --- a/doc/man/man3/ldap_result.3 +++ b/doc/man/man3/ldap_result.3 @@ -1,24 +1,24 @@ -.TH LDAP_RESULT 3 "26 November 1994" "U-M LDAP LDVERSION" +.TH LDAP_RESULT 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_result \- Wait for the result of an LDAP operation .SH SYNOPSIS .nf .ft B -#include #include .LP .ft B -int ldap_result(ld, msgid, all, timeout, result) +int ldap_result( LDAP *ld, int msgid, int all, + struct timeval *timeout, LDAPMessage **result ); + +int ldap_msgfree( LDAPMessage *msg ); + +int ldap_msgtype( LDAPMessage *msg ); + +int ldap_msgid( LDAPMessage *msg ); .ft -LDAP *ld; -int msgid, all; -struct timeval *timeout; -LDAPMessage **result; -.LP -.ft B -int ldap_msgfree(msg) -.ft -LDAPMessage *msg; .SH DESCRIPTION The .B ldap_result() @@ -49,37 +49,46 @@ for further details. .LP If the result of a specific operation is required, \fImsgid\fP should be set to the invocation identifier returned when the operation was -initiated, otherwise LDAP_RES_ANY should be supplied. The \fIall\fP -parameter only has meaning for search responses and is used to select -whether a single entry of the search response should be returned, or -all results of the search should be returned. +initiated, otherwise LDAP_RES_ANY or LDAP_RES_UNSOLICITED should be +supplied to wait for any or unsolicited response. +.LP +The \fIall\fP parameter, if non-zero, causes +.B ldap_result() +to return all responses with msgid, otherwise only the +next response is returned. This is commonly used to obtain all +the responses of a search operation. .LP A search response is made up of zero or -more search entries followed by a search result. If \fIall\fP is set -to 0, search entries will be returned one at a time as they come in, -via separate calls to +more search entries, zero or more search references, and zero or +more extended parital responses followed by a search result. If +\fIall\fP is set to 0, search entries will be returned one at a +time as they come in, via separate calls to .BR ldap_result() . If it's set to 1, the search -response will only be returned in its entirety, i.e., after all entries -and the final search result have been received. +response will only be returned in its entirety, i.e., after all entries, +all references, all extended parital responses, and the final search +result have been received. .LP Upon success, the type of the result received is returned and the \fIresult\fP parameter will contain the result of the operation. This result should be passed to the LDAP parsing routines, -.BR ldap_first_entry (3) +.BR ldap_first_message (3) and friends, for interpretation. .LP The possible result types returned are: .LP .nf - #define LDAP_RES_BIND 0x61L - #define LDAP_RES_SEARCH_ENTRY 0x64L - #define LDAP_RES_SEARCH_RESULT 0x65L - #define LDAP_RES_MODIFY 0x67L - #define LDAP_RES_ADD 0x69L - #define LDAP_RES_DELETE 0x6bL - #define LDAP_RES_MODRDN 0x6dL - #define LDAP_RES_COMPARE 0x6fL + LDAP_RES_BIND (0x61) + LDAP_RES_SEARCH_ENTRY (0x64) + LDAP_RES_SEARCH_REFERENCE (0x73) + LDAP_RES_SEARCH_RESULT (0x65) + LDAP_RES_MODIFY (0x67) + LDAP_RES_ADD (0x69) + LDAP_RES_DELETE (0x6b) + LDAP_RES_MODDN (0x6d) + LDAP_RES_COMPARE (0x6f) + LDAP_RES_EXTENDED (0x78) + LDAP_RES_EXTENDED_PARTIAL (0x79) .fi .LP The @@ -92,15 +101,29 @@ or and friends. It takes a pointer to the result to be freed and returns the type of the message it freed. +.LP +The +.B ldap_msgtype() +routine returns the type of a message. +.LP +The +.B ldap_msgid() +routine returns the message id of a message. .SH ERRORS .B ldap_result() returns -1 if something bad happens, and zero if the timeout specified was exceeded. -.SH NOTES -This routine mallocs memory for results that it receives. The memory -can be freed by calling -.BR ldap_msgfree . +.B ldap_msgtype() +and +.B ldap_msgid() +return -1 on error. .SH SEE ALSO .BR ldap (3), .BR ldap_search (3), +.BR ldap_first_message (3), .BR select (2) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_schema.3 b/doc/man/man3/ldap_schema.3 index 27c6446671..349e877c44 100644 --- a/doc/man/man3/ldap_schema.3 +++ b/doc/man/man3/ldap_schema.3 @@ -1,4 +1,4 @@ -.TH LDAP_SCHEMA 3 "4 June 2000" "OpenLDAP LDVERSION" +.TH LDAP_SCHEMA 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 2000-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man3/ldap_search.3 b/doc/man/man3/ldap_search.3 index e1a7022bcd..cb2d58be4a 100644 --- a/doc/man/man3/ldap_search.3 +++ b/doc/man/man3/ldap_search.3 @@ -1,11 +1,13 @@ -.TH LDAP_SEARCH 3 "23 November 1994" "U-M LDAP LDVERSION" +.TH LDAP_SEARCH 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_search, ldap_search_s, ldap_search_st \- Perform an LDAP search operation .SH SYNOPSIS .nf .ft B #include /* for struct timeval definition */ -#include #include .LP .ft B @@ -73,7 +75,7 @@ BNF: .LP The '~=' construct is used to specify approximate matching. The representation for and are as -described in RFC 1778. In addition, can be a single * +described in RFC 2254. In addition, can be a single * to achieve an attribute existence test, or can contain text and *'s interspersed to achieve substring matching. .LP @@ -81,14 +83,22 @@ For example, the filter "mail=*" will find any entries that have a mail attribute. The filter "mail=*@terminator.rs.itd.umich.edu" will find any entries that have a mail attribute ending in the specified string. To put parentheses in a filter, escape them with a backslash '\\' -character. See RFC 1588 for a more complete description of allowable +character. See RFC 2254 for a more complete description of allowable filters. See .BR ldap_getfilter (3) for routines to help in constructing search filters automatically. .LP \fIAttrs\fP is a null-terminated array of attribute types to return -from entries that match \fIfilter\fP. If NULL is specified, all -attributes will be returned. \fIAttrsonly\fP should be set to 1 if +from entries that match \fIfilter\fP. +If NULL is specified, all attributes will be returned. +The type "*" (LDAP_ALL_USER_ATTRIBUTES) may be used to request +all user attributes to be returned. +The type "+"(LDAP_ALL_OPERATIONAL_ATTRIBUTES) may be used to request +all operational attributes to be returned. +To request no attributes, the type "1.1" (LDAP_NO_ATTRS) +should be listed by itself. +.LP +\fIAttrsonly\fP should be set to 1 if only attribute types are wanted. It should be set to 0 if both attributes types and attribute values are wanted. .SH ERRORS @@ -107,10 +117,17 @@ and list functionality are subsumed by these routines, by using a filter like "objectclass=*" and a scope of LDAP_SCOPE_BASE (to emulate read) or LDAP_SCOPE_ONELEVEL (to emulate list). .LP -These routines may malloc memory. Return values are contained +These routines may dynamically allocate memory. The caller is +responsible for freeing such memory using supplied deallocation +routines. Return values are contained in . .SH SEE ALSO .BR ldap (3), .BR ldap_result (3), .BR ldap_getfilter (3), .BR ldap_error (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_sort.3 b/doc/man/man3/ldap_sort.3 index f56122af0b..af80b075a2 100644 --- a/doc/man/man3/ldap_sort.3 +++ b/doc/man/man3/ldap_sort.3 @@ -1,10 +1,12 @@ -.TH LDAP_SORT 3 "14 November 1994" "U-M LDAP LDVERSION" +.TH LDAP_SORT 3 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldap_sort_entries, ldap_sort_values, ldap_sort_strcasecmp \- LDAP sorting routines .SH SYNOPSIS .nf .ft B -#include #include .LP .ft B @@ -93,9 +95,16 @@ may produce unexpected results for multi-valued attributes. When sorting by DN, the comparison function is applied to an exploded version of the DN, without types. The return values for all of these functions are declared in the - header file. Some routines may malloc memory. + header file. Some routines may dynamically allocate memory. +Callers are responsible for freeing such memory using the supplied +deallocation routines. .SH SEE ALSO .BR ldap (3), .BR ldap_search (3), .BR ldap_result (3), .BR qsort (3) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man3/ldap_url.3 b/doc/man/man3/ldap_url.3 index 60e07c0362..402ae45a03 100644 --- a/doc/man/man3/ldap_url.3 +++ b/doc/man/man3/ldap_url.3 @@ -1,4 +1,4 @@ -.TH LDAP_URL 3 "23 July 2001" "OpenLDAP LDVERSION" +.TH LDAP_URL 3 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man5/ldap.conf.5 b/doc/man/man5/ldap.conf.5 index 85ed4e245f..ec3f5e9ae3 100644 --- a/doc/man/man5/ldap.conf.5 +++ b/doc/man/man5/ldap.conf.5 @@ -1,4 +1,4 @@ -.TH LDAP.CONF 5 "6 May 2002" "OpenLDAP LDVERSION" +.TH LDAP.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. @@ -6,8 +6,7 @@ .SH NAME ldap.conf, .ldaprc \- ldap configuration file .SH SYNOPSIS -ETCDIR/ldap.conf -\fP.ldaprc\fP +ETCDIR/ldap.conf, .ldaprc .SH DESCRIPTION The .I ldap.conf @@ -17,122 +16,210 @@ running clients. If the environment variable \fBLDAPNOINIT\fP is defined, all defaulting is disabled. .LP -Each user may specify an optional configuration file, -.IR ldaprc +Users may create an optional configuration file, +.I ldaprc or .IR .ldaprc , -in his/her home directory which will be used to override the system-wide +in their home directory which will be used to override the system-wide defaults file. The file -.IR ldaprc +.I ldaprc in the current working directory is also used. .LP Additional configuration files can be specified using the \fBLDAPCONF\fP and \fBLDAPRC\fP environment variables. -\fBLDAPCONF\fP may be set the path of a configuration file. This -path can be absolute or relative to current working directory. -The \fBLDAPRC\fP, if defined, should be a basename of a file +\fBLDAPCONF\fP may be set to the path of a configuration file. This +path can be absolute or relative to the current working directory. +The \fBLDAPRC\fP, if defined, should be the basename of a file in the current working directory or in the user's home directory. .LP Environmental variables may also be used to augment the file based defaults. -The name of the option is the as listed but with a prefix of \fBLDAP\fP. -For example, to define \fBBASE\fP via the environment, define the variable -\fBLDAPBASE\fP to desired value. +The name of the variable is the option name with an added prefix of \fBLDAP\fP. +For example, to define \fBBASE\fP via the environment, set the variable +\fBLDAPBASE\fP to the desired value. .LP Some options are user\-only. Such options are ignored if present in the -.IR ldap.conf +.I ldap.conf (or file specified by .BR LDAPCONF ). .SH OPTIONS The different configuration options are: -.TP 1i -\fBBASE \fP -Used to specify the default base DN to use when performing ldap operations. +.TP +.B BASE +Specifies the default base DN to use when performing ldap operations. The base must be specified as a Distinguished Name in LDAP format. -.TP 1i -\fBBINDDN \fP -Used to specify the default bind DN to use when performing ldap operations. +.TP +.B BINDDN +Specifies the default bind DN to use when performing ldap operations. The bind DN must be specified as a Distinguished Name in LDAP format. This is a user\-only option. -.TP 1i -\fBHOST \fP -Used to specify the name(s) of an LDAP server(s) to which +.TP +.B HOST +Specifies the name(s) of an LDAP server(s) to which the .I ldap -library should connect to. Each server's name can be specified as a -domain-style name or an IP address and optionally followed a ':' and +library should connect. Each server's name can be specified as a +domain-style name or an IP address and optionally followed by a ':' and the port number the ldap server is listening on. A space separated -listed of host may be provided. -.TP 1i -\fBPORT \fP -Used to specify the port used with connecting to LDAP servers(s). +list of hosts may be provided. +.TP +.B PORT +Specifies the default port used when connecting to LDAP servers(s). The port may be specified as a number. -.TP 1i -\fBSASL_SECPROPS \fP -Used to specify Cyrus SASL security properties. -The +.TP +.B SASL_SECPROPS +Specifies Cyrus SASL security properties. The +.B +can be specified as a comma-separated list of the following: +.RS +.TP .B none -flag (without any other properities) causes the flag properites +(without any other properties) causes the properties defaults ("noanonymous,noplain") to be cleared. -The +.TP .B noplain -flag disables mechanisms susceptible to simple passive attacks. -The +disables mechanisms susceptible to simple passive attacks. +.TP .B noactive -flag disables mechanisms susceptible to active attacks. -The +disables mechanisms susceptible to active attacks. +.TP .B nodict -flag disables mechanisms susceptible to passive dictionary attacks. -The -.B noanonyous -flag disables mechanisms which support anonymous login. -The +disables mechanisms susceptible to passive dictionary attacks. +.TP +.B noanonymous +disables mechanisms which support anonymous login. +.TP .B forwardsec -flag require forward secrecy between sessions. -The +requires forward secrecy between sessions. +.TP .B passcred -require mechanisms which pass client credentials (and allow +requires mechanisms which pass client credentials (and allows mechanisms which can pass credentials to do so). -The +.TP .B minssf= -property specifies the minimum acceptable +specifies the minimum acceptable .I security strength factor -as an integer approximate to effective key length used for +as an integer approximating the effective key length used for encryption. 0 (zero) implies no protection, 1 implies integrity protection only, 56 allows DES or other weak ciphers, 112 allows triple DES and other strong ciphers, 128 allows RC4, Blowfish and other modern strong ciphers. The default is 0. -The +.TP .B maxssf= -property specifies the maximum acceptable +specifies the maximum acceptable .I security strength factor -as an integer (see minssf description). The default is INT_MAX. -The +as an integer (see +.B minssf +description). The default is +.BR INT_MAX . +.TP .B maxbufsize= -property specifies the maximum security layer receive buffer +specifies the maximum security layer receive buffer size allowed. 0 disables security layers. The default is 65536. -.TP 1i -\fBSIZELIMIT \fP -Used to specify a size limit to use when performing searches. The -number should be an non-negative integer. \fISIZELIMIT\fP of zero (0) +.RE +.TP +.B SIZELIMIT +Specifies a size limit to use when performing searches. The +number should be a non-negative integer. \fISIZELIMIT\fP of zero (0) specifies unlimited search size. -.TP 1i -\fBTIMELIMIT \fP -Used to specify a time limit to use when performing searches. The -number should be an non-negative integer. \fITIMELIMIT\fP of zero (0) +.TP +.B TIMELIMIT +Specifies a time limit to use when performing searches. The +number should be a non-negative integer. \fITIMELIMIT\fP of zero (0) specifies unlimited search time to be used. -.TP 1i -\fBDEREF \fP -Specify how aliases dereferencing is done. \fIDEREF\fP should -be set to one of -.B never, -.B always, -.B search, -or -.B find -to specify that aliases are never dereferenced, always dereferenced, -dereferenced when searching, or dereferenced only when locating the -base object for the search. The default is to never dereference aliases. +.TP +.B DEREF +Specifies how alias dereferencing is done when performing a search. The +.B +can be specified as one of the following keywords: +.RS +.TP +.B never +Aliases are never dereferenced. This is the default. +.TP +.B searching +Aliases are dereferenced in subordinates of the base object, but +not in locating the base object of the search. +.TP +.B finding +Aliases are only dereferenced when locating the base object of the search. +.TP +.B always +Aliases are dereferenced both in searching and in locating the base object +of the search. +.SH TLS OPTIONS +If OpenLDAP is built with support for Transport Layer Security, there +are more options you can specify. +.TP +.B TLS +Specifies whether client connections should use TLS by default. The +.B +can be specified as one of the following keywords: +.RS +.TP +.B never +This is the default. Connections will be opened in the clear unless +TLS is explicitly specified (e.g. using an "ldaps://" URL.) +.TP +.B hard +All connections will be established with TLS. +Note that using this option effectively makes the library open every +session as an ldaps session and is incompatible with the LDAPv3 StartTLS +request. +.RE +.TP +.B TLS_CACERT +Specifies the file that contains certificates for all of the Certificate +Authorities the client will recognize. +.TP +.B TLS_CACERTDIR +Specifies the path of a directory that contains Certificate Authority +certificates in separate individual files. The +.B TLS_CACERT +is always used before +.B TLS_CACERTDIR. +.TP +.B TLS_CERT +Specifies the file that contains the client certificate. This is +a user\-only option. +.TP +.B TLS_KEY +Specifies the file that contains the private key that matches the certificate +stored in the +.B TLS_CERT +file. Currently, the private key must not be protected with a password, so +it is of critical importance that the key file is protected carefully. This +is a user\-only option. +.TP +.B TLS_RANDFILE +Specifies the file to obtain random bits from when /dev/[u]random is +not available. Generally set to the name of the EGD/PRNGD socket. +The environment variable RANDFILE can also be used to specify the filename. +.TP +.B TLS_REQCERT +Specifies what checks to perform on server certificates in a TLS session, +if any. The +.B +can be specified as one of the following keywords: +.RS +.TP +.B never +The client will not request or check any server certificate. +.TP +.B allow +The server certificate is requested. If no certificate is provided, +the session proceeds normally. If a bad certificate is provided, it will +be ignored and the session proceeds normally. +.TP +.B try +The server certificate is requested. If no certificate is provided, +the session proceeds normally. If a bad certificate is provided, +the session is immediately terminated. +.TP +.B demand | hard +These keywords are equivalent. The server certificate is requested. If no +certificate is provided, or a bad certificate is provided, the session +is immediately terminated. This is the default setting. .SH "ENVIRONMENT VARIABLES" .TP LDAPNOINIT diff --git a/doc/man/man5/ldif.5 b/doc/man/man5/ldif.5 index 3eaba3b54c..eec8fdfa4c 100644 --- a/doc/man/man5/ldif.5 +++ b/doc/man/man5/ldif.5 @@ -1,47 +1,45 @@ -.TH LDIF 5 "13 November 1995" "U-M LDAP LDVERSION" +.TH LDIF 5 "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME ldif \- LDAP Data Interchange Format .SH DESCRIPTION The LDAP Data Interchange Format (LDIF) is used to represent LDAP -entries in text form. The -.BR ldif2ldbm (8) -tools can be used to convert from LDIF format to the LDBM format -used by -.BR slapd (8). -The -.BR ldbmcat (8) -tool can be used to do the reverse conversion. See "The SLAPD and -SLURPD Administrator's Guide" for more information on this format and -the conversion tools. +entries in text form. LDAP tools, such as +.BR ldapadd (1) +and +.BR ldapsearch (1), +read and write LDIF. .LP The basic form of an LDIF entry is: .LP .nf .ft tt - [] dn: - : - : + : + : + :: + :< ... .ft .fi .LP -where is the optional entry ID (a positive decimal number). -Normally, you would not supply the , allowing the database creation -tools to do that for you. The -.BR ldbmcat (8) -program, however, produces an LDIF format that includes so that -new indexes created will be consistent with the existing database. A -line may be continued by starting the next line with a single space or -tab character, e.g., +The value may be specified as UTF-8 text or as base64 encoded data, +or a URI may be provided to the location of the attribute value. +.LP +A line may be continued by starting the next line with a single space +or tab, e.g., .LP .nf .ft tt - dn: cn=Barbara J Jensen, o=University of Michi - gan, c=US + dn: cn=Barbara J Jensen,dc=exam + ple,dc=com .ft .fi .LP +Lines beginning with a sharpe sign ('#') are ignored. +.LP Multiple attribute values are specified on separate lines, e.g., .LP .nf @@ -51,10 +49,10 @@ Multiple attribute values are specified on separate lines, e.g., .ft .fi .LP -If an contains a non-printing character, or begins with a -space or a colon ':', the is followed by a double colon and -the value is encoded in base 64 notation. e.g., the value " begins with -a space" would be encoded like this: +If an value contains a non-printing character, or begins +with a space or a colon ':', the is followed by a +double colon and the value is encoded in base 64 notation. e.g., +the value " begins with a space" would be encoded like this: .LP .nf .ft tt @@ -62,6 +60,17 @@ a space" would be encoded like this: .ft .fi .LP +If the attribute value is located in a file, the is +followed by a ':<' and a file: URI. e.g., the value contained +in the file /tmp/value would be listed like this: +.LP +.nf +.ft tt + cn:< file:///tmp/value +.ft +.fi +Other URI schemes (ftp,http) may be supported as well. +.LP Multiple entries within the same LDIF file are separated by blank lines. .SH EXAMPLE @@ -69,22 +78,20 @@ Here is an example of an LDIF file containing three entries. .LP .nf .ft tt - dn: cn=Barbara J Jensen, o=University of Michi - gan, c=US + dn: cn=Barbara J Jensen,dc=example,dc=com cn: Barbara J Jensen cn: Babs Jensen objectclass: person + description:< file://tmp/babs sn: Jensen - dn: cn=Bjorn J Jensen, o=University of Michi - gan, c=US + dn: cn=Bjorn J Jensen,dc=example,dc=com cn: Bjorn J Jensen cn: Bjorn Jensen objectclass: person sn: Jensen - dn: cn=Jennifer J Jensen, o=University of Michi - gan, c=US + dn: cn=Jennifer J Jensen,dc=example,dc=com cn: Jennifer J Jensen cn: Jennifer Jensen objectclass: person @@ -96,12 +103,17 @@ Here is an example of an LDIF file containing three entries. .ft .fi .LP -Notice that the jpegPhoto in Jennifer Jensen's entry is encoded using -base 64. +Notice that the description in Barbara Jensen's entry is +read from file://tmp/babs and the jpegPhoto in Jennifer +Jensen's entry is encoded using base 64. .SH SEE ALSO .BR ldap (3), -.BR slapd (8), -.BR ldif2ldbm (8), -.BR ldbmcat (8) +.BR ldapsearch (1), +.BR ldapadd (1). .LP -"The SLAPD and SLURPD Administrator's Guide" +"LDAP Data Interchange Format," Good, G., RFC 2849. +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man5/slapd-bdb.5 b/doc/man/man5/slapd-bdb.5 index 0dfdb8ba9e..c76dbdb4bc 100644 --- a/doc/man/man5/slapd-bdb.5 +++ b/doc/man/man5/slapd-bdb.5 @@ -1,4 +1,4 @@ -.TH SLAPD-BDB 5 "30 April 2002" "OpenLDAP LDVERSION" +.TH SLAPD-BDB 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ diff --git a/doc/man/man5/slapd-dnssrv.5 b/doc/man/man5/slapd-dnssrv.5 index 9e3fbdf3aa..2436495321 100644 --- a/doc/man/man5/slapd-dnssrv.5 +++ b/doc/man/man5/slapd-dnssrv.5 @@ -1,4 +1,4 @@ -.TH SLAPD-DNSSRV 5 "3 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-DNSSRV 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ diff --git a/doc/man/man5/slapd-ldap.5 b/doc/man/man5/slapd-ldap.5 index 192d0e7159..e102d3830e 100644 --- a/doc/man/man5/slapd-ldap.5 +++ b/doc/man/man5/slapd-ldap.5 @@ -1,4 +1,4 @@ -.TH SLAPD-LDAP 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-LDAP 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ @@ -64,17 +64,16 @@ them to the client. The field must be defined as a valid suffix (or suffixAlias?) for the current database. .TP -.B map "{attribute | objectclass} { | *} [ | *]" +.B map "{attribute | objectclass} [ | *] { | *}" Map attribute names and object classes from the foreign server to different values on the local slapd. The reason is that some attributes might not be part of the local slapd's schema, some attribute names might be different but serve the same purpose, etc. If local or foreign name is `*', the name is preserved. -If foreign name is missing, the name is dropped. -Local name `*' and no foreign name means unmapped attributes are -removed, while local name = foreign name = `*' means unmapped -attributes are preserved. +If local name is omitted, the foreign name is removed. +Unmapped names are preseved if both local and foreign name are `*', +and removed if local name is omitted and foreign name is `*'. .TP .B rewrite* The rewrite options are described in the "REWRITING" section of the diff --git a/doc/man/man5/slapd-ldbm.5 b/doc/man/man5/slapd-ldbm.5 index 3fd0c3bff1..40eec21aee 100644 --- a/doc/man/man5/slapd-ldbm.5 +++ b/doc/man/man5/slapd-ldbm.5 @@ -1,4 +1,4 @@ -.TH SLAPD-LDBM 5 "30 April 2002" "OpenLDAP LDVERSION" +.TH SLAPD-LDBM 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ diff --git a/doc/man/man5/slapd-meta.5 b/doc/man/man5/slapd-meta.5 index 6671174e4d..d953d09dcd 100644 --- a/doc/man/man5/slapd-meta.5 +++ b/doc/man/man5/slapd-meta.5 @@ -1,4 +1,4 @@ -.TH SLAPD-META 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-META 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. .\" Copying restrictions apply. See the COPYRIGHT file. .\" Copyright 2001, Pierangelo Masarati, All rights reserved. @@ -169,7 +169,7 @@ so "dc=foo, dc=com" would not match "dc=foo,dc=com". .LP See the "REWRITING" section. .TP -.B map {objectClass|attribute} {|*} [|*] +.B map "{attribute|objectclass} [|*] {|*}" This maps object classes and attributes as in the LDAP backend. See .BR slapd-ldap (5). diff --git a/doc/man/man5/slapd-null.5 b/doc/man/man5/slapd-null.5 index fad41f5560..ee4272f38e 100644 --- a/doc/man/man5/slapd-null.5 +++ b/doc/man/man5/slapd-null.5 @@ -1,4 +1,4 @@ -.TH SLAPD-NULL 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-NULL 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .SH NAME slapd-null \- Null backend to slapd diff --git a/doc/man/man5/slapd-passwd.5 b/doc/man/man5/slapd-passwd.5 index 6765d2e3c5..644d3b5e2b 100644 --- a/doc/man/man5/slapd-passwd.5 +++ b/doc/man/man5/slapd-passwd.5 @@ -1,4 +1,4 @@ -.TH SLAPD-PASSWD 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-PASSWD 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ diff --git a/doc/man/man5/slapd-perl.5 b/doc/man/man5/slapd-perl.5 index d544a4412d..d0627c03ee 100644 --- a/doc/man/man5/slapd-perl.5 +++ b/doc/man/man5/slapd-perl.5 @@ -1,4 +1,4 @@ -.TH SLAPD-PERL 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-PERL 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .SH NAME slapd-perl \- Perl backend to slapd diff --git a/doc/man/man5/slapd-shell.5 b/doc/man/man5/slapd-shell.5 index a880f68c6a..58a6a18866 100644 --- a/doc/man/man5/slapd-shell.5 +++ b/doc/man/man5/slapd-shell.5 @@ -1,4 +1,4 @@ -.TH SLAPD-SHELL 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-SHELL 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ diff --git a/doc/man/man5/slapd-sql.5 b/doc/man/man5/slapd-sql.5 index b01e04df86..be64585863 100644 --- a/doc/man/man5/slapd-sql.5 +++ b/doc/man/man5/slapd-sql.5 @@ -1,4 +1,4 @@ -.TH SLAPD-SQL 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-SQL 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .SH NAME slapd-sql \- SQL backend to slapd diff --git a/doc/man/man5/slapd-tcl.5 b/doc/man/man5/slapd-tcl.5 index 9a95c9e70b..e5c168f722 100644 --- a/doc/man/man5/slapd-tcl.5 +++ b/doc/man/man5/slapd-tcl.5 @@ -1,4 +1,4 @@ -.TH SLAPD-TCL 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD-TCL 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .SH NAME slapd-tcl \- Tcl backend to slapd diff --git a/doc/man/man5/slapd.access.5 b/doc/man/man5/slapd.access.5 index 4b30c60e84..90931cd9da 100644 --- a/doc/man/man5/slapd.access.5 +++ b/doc/man/man5/slapd.access.5 @@ -1,4 +1,4 @@ -.TH SLAPD.ACCESS 5 "30 April 2002" "OpenLDAP LDVERSION" +.TH SLAPD.ACCESS 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5 index 0d41ed4bea..a32a2fe91f 100644 --- a/doc/man/man5/slapd.conf.5 +++ b/doc/man/man5/slapd.conf.5 @@ -1,4 +1,4 @@ -.TH SLAPD.CONF 5 "2 May 2002" "OpenLDAP LDVERSION" +.TH SLAPD.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. .\" $OpenLDAP$ @@ -195,6 +195,9 @@ disallow (default none). disables acceptance of anonymous bind requests. .B bind_simple disables simple (bind) authentication. +.B bind_simple_unprotected +disables simple (bind) authentication when confidentiality +protections (e.g. TLS) are not in place. .B bind_krbv4 disables Kerberos V4 (bind) authentication. .B tls_2_anon @@ -208,7 +211,8 @@ disables StartTLS if authenticated (see also A SIGHUP signal will only cause a 'gentle' shutdown-attempt: .B Slapd will stop listening for new connections, but will not close the -connections to the current clients. It terminates when all clients +connections to the current clients. Future write operations return +unwilling-to-perform, though. Slapd terminates when all clients have closed their connections (if they ever do), or \- as before \- if it receives a SIGTERM signal. This can be useful if you wish to terminate the server and start a new @@ -447,12 +451,18 @@ The must be one of .BR {SHA} , .BR {SMD5} , .BR {MD5} , +.BR {CRYPT} , and -.BR {CRYPT} . +.BR {CLEARTEXT} . The default is .BR {SSHA} . -Note that this option does not alter the normal user applications +Note that +.B {CLEARTEXT} +indicates that the new password should be +added to userPassword as clear text. + +Also, note that this option does not alter the normal user applications handling of userPassword during LDAP Add, Modify, or other LDAP operations. .TP .B password\-crypt\-salt\-format @@ -499,11 +509,8 @@ requires authentication prior to directory operations. requires SASL authentication prior to directory operations. .B strong requires strong authentication prior to directory operations. -The -.B SASL -and -.B strong -conditions are currently same. +The strong keyword allows protected "simple" authentication +as well as SASL authentication. .B none may be used to require no conditions (useful for clearly globally set conditions within a particular database). @@ -518,6 +525,43 @@ Specify the name of an LDIF(5) file containing user defined attributes for the root DSE. These attributes are returned in addition to the attributes normally produced by slapd. .TP +.B sasl-authz-policy +Used to specify which rules to use for SASL Proxy Authorization. Proxy +authorization allows a client to authenticate to the server using one +user's credentials, but specify a different identity to use for authorization +and access control purposes. It essentially allows user A to login as user +B, using user A's password. +The +.B none +flag disables proxy authorization. This is the default setting. +The +.B from +flag will use rules in the +.I saslAuthzFrom +attribute of the authorization DN. +The +.B to +flag will use rules in the +.I saslAuthzTo +attribute of the authentication DN. +The +.B both +flag will allow both of the above. The rules are simply regular expressions +specifying which DNs are allowed to perform proxy authorization. The +.I saslAuthzFrom +attribute in an entry specifies which other users +are allowed to proxy login to this entry. The +.I saslAuthzTo +attribute in +an entry specifies which other users this user can authorize as. Use of +.I saslAuthzTo +rules can be easily +abused if users are allowed to write arbitrary values to this attribute. +In general the +.I saslAuthzTo +attribute must be protected with ACLs such that +only privileged users can modify it. +.TP .B sasl-host Used to specify the fully qualified domain name used for SASL processing. .TP diff --git a/doc/man/man5/slapd.replog.5 b/doc/man/man5/slapd.replog.5 index 46586e2c22..4ad60bbc20 100644 --- a/doc/man/man5/slapd.replog.5 +++ b/doc/man/man5/slapd.replog.5 @@ -1,4 +1,4 @@ -.TH SLAPD.REPLOG 5 "20 August 2000" "OpenLDAP LDVERSION" +.TH SLAPD.REPLOG 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man5/ud.conf.5 b/doc/man/man5/ud.conf.5 index 8dbd40a0eb..91cb5bf733 100644 --- a/doc/man/man5/ud.conf.5 +++ b/doc/man/man5/ud.conf.5 @@ -1,4 +1,4 @@ -.TH UD.CONF 5 "20 August 2000" "OpenLDAP LDVERSION" +.TH UD.CONF 5 "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man8/mail500.8 b/doc/man/man8/mail500.8 index 58c157ed25..5c23263ed7 100644 --- a/doc/man/man8/mail500.8 +++ b/doc/man/man8/mail500.8 @@ -1,4 +1,4 @@ -.TH MAIL500 8C "20 August 2000" "OpenLDAP LDVERSION" +.TH MAIL500 8C "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man8/slapadd.8 b/doc/man/man8/slapadd.8 new file mode 100644 index 0000000000..b7928e28a1 --- /dev/null +++ b/doc/man/man8/slapadd.8 @@ -0,0 +1,105 @@ +.TH SLAPADD 8C "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. +.SH NAME +slapadd \- Add entries to a SLAPD database +.SH SYNOPSIS +.B SBINDIR/slapadd +.B [\-v] +.B [\-c] +.B [\-d level] +.B [\-b suffix] +.B [\-n dbnum] +.B [\-f slapd.conf] +.B [\-l ldif-file] +.B +.LP +.SH DESCRIPTION +.LP +.B Slapadd +is used to add entries specified in LDAP Directory Interchange Format +(LDIF) to a +.BR slapd (8) +database. +It opens the given database determined by the database number or +suffix and adds entries corresponding to the provided LDIF to +the database. The LDIF input is read from standard input or +the specified file. +.LP +As +.B slapadd +is designed to accept LDIF in database order, as produced by +.BR slapcat (8), +it does not verify that superior entries exist before +adding an entry. +.SH OPTIONS +.TP +.B \-v +enable verbose mode. +.TP +.B \-c +enable continue (ignore errors) mode. +.TP +.BI \-d " level" +enable debugging messages as defined by the specified +.IR level . +.TP +.BI \-b " suffix" +Use the specified \fIsuffix\fR to determine which database to +add entries to. The \-b cannot be used in conjunction +with the +.B \-n +option. +.TP +.BI \-n " dbnum" +Add entries to the \fIdbnum\fR\-th database listed in the +configuration file. The +.B \-n +cannot be used in conjunction with the +.B \-b +option. +.TP +.BI \-f " slapd.conf" +specify an alternative +.BR slapd.conf (5) +file. +.TP +.BI \-l " ldif-file" +Read LDIF from the specified file instead of standard input. +.SH LIMITATIONS +Your +.BR slapd (8) +should not be running +when you do this to ensure consistency of the database. +.LP +.B slapadd +may not provide naming or schema checks. It is advisable to +use +.BR ldapadd (1) +when adding new entries into an existing directory. +.SH EXAMPLES +To import a entries specified in file +.B ldif +into your +.BR slapd (8) +database give the command: +.LP +.nf +.ft tt + SBINDIR/slapadd -l ldif +.ft +.fi +.SH "SEE ALSO" +.BR ldap (3), +.BR ldif (5), +.BR slapcat (8), +.BR ldapadd (1), +.BR slapd (8) +.LP +"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man8/slapcat.8 b/doc/man/man8/slapcat.8 new file mode 100644 index 0000000000..f0d1129ea2 --- /dev/null +++ b/doc/man/man8/slapcat.8 @@ -0,0 +1,96 @@ +.TH SLAPCAT 8C "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. +.SH NAME +slapcat \- SLAPD database to LDIF utility +.SH SYNOPSIS +.B SBINDIR/slapcat +.B [\-v] +.B [\-c] +.B [\-d level] +.B [\-b suffix] +.B [\-n dbnum] +.B [\-f slapd.conf] +.B [\-l ldif-file] +.B +.LP +.SH DESCRIPTION +.LP +.B Slapcat +is used to generate an LDAP Directory Interchange Format +(LDIF) output based upon the contents of a +.BR slapd (8) +database. +It opens the given database determined by the database number or +suffix and writes the corresponding LDIF to standard output or +the specified file. +.LP +The LDIF generated by this tool is suitable for use with +.BR slapadd (8). +As the entries are in database order, not superior first order, +they cannot be loaded with +.BR ldapadd (8) +without being reordered. +.SH OPTIONS +.TP +.B \-v +enable verbose mode. +.TP +.B \-c +enable continue (ignore errors) mode. +.TP +.BI \-d " level" +enable debugging messages as defined by the specified +.IR level . +.TP +.BI \-b " suffix" +Use the specified \fIsuffix\fR to determine which database to +generate output for. The \-b cannot be used in conjunction +with the +.B \-n +option. +.TP +.BI \-n " dbnum" +Generate output for the \fIdbnum\fR\-th database listed in the +configuration file. The +.B \-n +cannot be used in conjunction with the +.B \-b +option. +.TP +.BI \-f " slapd.conf" +specify an alternative +.BR slapd.conf (5) +file. +.TP +.BI \-l " ldif-file" +Write LDIF to specified file instead of standard output. +.SH Limitations +Your +.BR slapd (8) +should not be running (at least, not in read-write +mode) when you do this to ensure consistency of the database. +.SH EXAMPLES +To make a text backup of your SLAPD database and put it in a file called +.BR ldif , +give the command: +.LP +.nf +.ft tt + SBINDIR/slapcat -l ldif +.ft +.fi +.SH "SEE ALSO" +.BR ldap (3), +.BR ldif (5), +.BR slapadd (8), +.BR ldapadd (1), +.BR slapd (8) +.LP +"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man8/slapd.8 b/doc/man/man8/slapd.8 index 842aade8e4..f30dcc0a9f 100644 --- a/doc/man/man8/slapd.8 +++ b/doc/man/man8/slapd.8 @@ -1,11 +1,12 @@ .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. -.TH SLAPD 8C "5 Novemeber 2000" "OpenLDAP LDVERSION" +.TH SLAPD 8C "RELEASEDATE" "OpenLDAP LDVERSION" .SH NAME slapd \- Stand-alone LDAP Daemon .SH SYNOPSIS .B LIBEXECDIR/slapd +.B [\-[4|6]] .B [\-d debug\-level] .B [\-f slapd\-config\-file] .B [\-h URLs] @@ -57,6 +58,12 @@ See the "OpenLDAP Administrator's Guide" for more details on .BR slapd . .SH OPTIONS .TP +.B \-4 +Listen on IPv4 addresses only. +.TP +.B \-6 +Listen on IPv6 addresses only. +.TP .BI \-d " debug\-level" Turn on debugging as defined by .I debug\-level. diff --git a/doc/man/man8/slapindex.8 b/doc/man/man8/slapindex.8 index d44aa1e2fe..5b77e152ce 100644 --- a/doc/man/man8/slapindex.8 +++ b/doc/man/man8/slapindex.8 @@ -1,4 +1,4 @@ -.TH SLAPINDEX 8C "20 August 2000" "OpenLDAP LDVERSION" +.TH SLAPINDEX 8C "RELEASEDATE" "OpenLDAP LDVERSION" .\" $OpenLDAP$ .\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. .\" Copying restrictions apply. See COPYRIGHT/LICENSE. diff --git a/doc/man/man8/slappasswd.8 b/doc/man/man8/slappasswd.8 new file mode 100644 index 0000000000..4b34bc060e --- /dev/null +++ b/doc/man/man8/slappasswd.8 @@ -0,0 +1,85 @@ +.TH SLAPPASSWD 8C "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. +.SH NAME +slappasswd \- OpenLDAP password utility +.SH SYNOPSIS +.B SBINDIR/slappasswd +.B [\-v] +.B [\-u] +.B [\-s secret] +.B [\-h hash] +.B [\-c salt-format] +.B +.LP +.SH DESCRIPTION +.LP +.B Slappasswd +is used to generate an userPassword value +suitable for use with +.BR ldapmodify (1) +or +.BR slapd.conf (5) +.I rootpw +configuration directive. +.SH OPTIONS +.TP +.B \-v +enable verbose mode. +.TP +.B \-u +Generate RFC2307 userPassword values (the default). Future +versions of this program may generate alternative syntaxes +by default. This option is provided for forward compatibility. +.TP +.BI \-s " secret" +The secret to hash. If not provided, the user will be prompted +for the secret to hash. +.TP +.BI \-h " scheme" +If -h is specified, one of the following RFC2307 schemes may +be specified: +.IR {CRYPT} , +.IR {MD5} , +.IR {SMD5} , +.IR {SSHA} ", and" +.IR {SHA} . +The default is +.IR {SSHA} . +.TP +.BI \-c " crypt-salt-format" +Specify the format of the salt passed to +.BR crypt (3) +when generating {CRYPT} passwords. +This string needs to be in +.BR sprintf (3) +format and may include one (and only one) %s conversion. +This conversion will be substituted with a string random +characters from [A\-Za\-z0\-9./]. For example, "%.2s" +provides a two character salt and "$1$%.8s" tells some +versions of crypt(3) to use an MD5 algorithm and provides +8 random characters of salt. The default is "%s", which +provides 31 characters of salt. +.SH LIMITATIONS +The practice storing hashed passwords in userPassword violates +Standard Track (RFC2256) schema specifications and may hinder +interoperability. A new attribute type to hold hashed +passwords is needed. +.SH "SECURITY CONSIDERATIONS" +Use of hashed passwords does not protect passwords during +protocol transfer. TLS or other eavesdropping protections +should be inplace before using LDAP simple bind. The +hashed password values should be protected as if they +were clear text passwords. +.SH "SEE ALSO" +.BR ldappasswd (1), +.BR ldapmodify (1), +.BR slapd (8) +.BR slapd.conf (5) +.LP +"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) +.SH ACKNOWLEDGEMENTS +OpenLDAP is developed and maintained by +The OpenLDAP Project (http://www.openldap.org/). +OpenLDAP is derived from University of Michigan LDAP 3.3 Release. diff --git a/doc/man/man8/slurpd.8 b/doc/man/man8/slurpd.8 index 037584e8a1..3a56d9ea5e 100644 --- a/doc/man/man8/slurpd.8 +++ b/doc/man/man8/slurpd.8 @@ -1,8 +1,11 @@ -.TH SLURPD 8C "6 November 1995" "U-M LDAP LDVERSION" +.TH SLURPD 8C "RELEASEDATE" "OpenLDAP LDVERSION" +.\" $OpenLDAP$ +.\" Copyright 1998-2002 The OpenLDAP Foundation All Rights Reserved. +.\" Copying restrictions apply. See COPYRIGHT/LICENSE. .SH NAME slurpd \- Standalone LDAP Update Replication Daemon .SH SYNOPSIS -.B ETCDIR/slurpd [\-d debug\-level] +.B LIBEXECDIR/slurpd [\-d debug\-level] .B [\-f slapd\-config\-file] [\-r slapd\-replog\-file] .B [\-t temp\-dir] [\-o] [\-k srvtab\-file] .B @@ -62,7 +65,7 @@ for details on the standalone LDAP daemon. .BI \-d " debug\-level" Turn on debugging as defined by .I debug\-level. -If this option is specified, +If this option is specified, even with a zero argument, .B slurpd will not fork or disassociate from the invoking terminal. Some general operation and status messages are printed for any value of \fIdebug\-level\fP. @@ -79,7 +82,8 @@ Specifies the name of the replication logfile. Normally, the name of the replication log file is read from the .B slapd -configuration file. +configuration file. The file should be located in a directory +with limited read/write/execute access. The .B \-r option allows you to override this. In conjunction with the @@ -104,9 +108,11 @@ processes a replication log and exits. .BI \-t " temp\-dir" .B slurpd copies the replication log to a working directory before processing it. +The directory permissions should limit read/write/execute access as +temporary files may contain sensitive information. This option allows you to specify the location of these temporary files. The default is -.BR /usr/tmp . +.BR LOCALSTATEDIR/openldap-slurp . .TP .BI \-k " srvtab\-file" Specify the location of the kerberos srvtab file which contains keys @@ -126,7 +132,7 @@ just type: .LP .nf .ft tt - ETCDIR/slurpd + LIBEXECDIR/slurpd .ft .fi .LP @@ -139,7 +145,7 @@ on voluminous debugging which will be printed on standard error, type: .LP .nf .ft tt - ETCDIR/slurpd -f /usr/local/etc/slapd.conf -d 255 + LIBEXECDIR/slurpd -f ETCDIR/slapd.conf -d 255 .ft .fi .LP @@ -148,4 +154,9 @@ on voluminous debugging which will be printed on standard error, type: .BR slapd.replog (5), .BR slapd (8) .LP -"The SLAPD and SLURPD Administrator's Guide" +"OpenLDAP Administrator's Guide" (http://www.OpenLDAP.org/doc/admin/) +.SH ACKNOWLEDGEMENTS +.B OpenLDAP +is developed and maintained by The OpenLDAP Project (http://www.openldap.org/). +.B OpenLDAP +is derived from University of Michigan LDAP 3.3 Release. diff --git a/include/ac/socket.h b/include/ac/socket.h new file mode 100644 index 0000000000..6e931ab28d --- /dev/null +++ b/include/ac/socket.h @@ -0,0 +1,204 @@ +/* Generic socket.h */ +/* $OpenLDAP$ */ +/* + * Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. A copy of this license is available at + * http://www.OpenLDAP.org/license.html or in file LICENSE in the + * top-level directory of the distribution. + */ + +#ifndef _AC_SOCKET_H_ +#define _AC_SOCKET_H_ + +#ifdef HAVE_SYS_TYPES_H +#include +#endif + +#ifdef HAVE_SYS_SOCKET_H +#include + +#ifdef HAVE_SYS_UN_H +#include +#endif + +#ifdef HAVE_SYS_SELECT_H +#include +#endif + +#include + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_ARPA_NAMESER_H +#include +#endif + +#include + +#ifdef HAVE_RESOLV_H +#include +#endif + +#endif /* HAVE_SYS_SOCKET_H */ + +#ifdef HAVE_WINSOCK2 +#include +#elif HAVE_WINSOCK +#include +#endif + +#ifdef HAVE_PCNFS +#include +#endif /* HAVE_PCNFS */ + +#ifndef INADDR_LOOPBACK +#define INADDR_LOOPBACK (0x7f000001UL) +#endif + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +#undef sock_errno +#undef sock_errstr +#define sock_errno() errno +#define sock_errstr(e) STRERROR(e) + +#ifdef HAVE_WINSOCK +# define tcp_read( s, buf, len ) recv( s, buf, len, 0 ) +# define tcp_write( s, buf, len ) send( s, buf, len, 0 ) +# define ioctl( s, c, a ) ioctlsocket( (s), (c), (a) ) +# define ioctl_t u_long +# define AC_SOCKET_INVALID ((unsigned int) ~0) + +# ifdef SD_BOTH +# define tcp_close( s ) (shutdown( s, SD_BOTH ), closesocket( s )) +# else +# define tcp_close( s ) closesocket( s ) +# endif + +#define EWOULDBLOCK WSAEWOULDBLOCK +#define EINPROGRESS WSAEINPROGRESS +#define ETIMEDOUT WSAETIMEDOUT + +#undef sock_errno +#undef sock_errstr +#define sock_errno() WSAGetLastError() +#define sock_errstr(e) ber_pvt_wsa_err2string(e) + +LBER_F( char * ) ber_pvt_wsa_err2string LDAP_P((int)); + +#elif MACOS +# define tcp_close( s ) tcpclose( s ) +# define tcp_read( s, buf, len ) tcpread( s, buf, len ) +# define tcp_write( s, buf, len ) tcpwrite( s, buf, len ) + +#elif DOS +# ifdef PCNFS +# define tcp_close( s ) close( s ) +# define tcp_read( s, buf, len ) recv( s, buf, len, 0 ) +# define tcp_write( s, buf, len ) send( s, buf, len, 0 ) +# endif /* PCNFS */ +# ifdef NCSA +# define tcp_close( s ) do { netclose( s ); netshut() } while(0) +# define tcp_read( s, buf, len ) nread( s, buf, len ) +# define tcp_write( s, buf, len ) netwrite( s, buf, len ) +# endif /* NCSA */ + +#elif HAVE_CLOSESOCKET +# define tcp_close( s ) closesocket( s ) + +# ifdef __BEOS__ +# define tcp_read( s, buf, len ) recv( s, buf, len, 0 ) +# define tcp_write( s, buf, len ) send( s, buf, len, 0 ) +# endif + +#else +# define tcp_read( s, buf, len) read( s, buf, len ) +# define tcp_write( s, buf, len) write( s, buf, len ) + +# ifdef SHUT_RDWR +# define tcp_close( s ) (shutdown( s, SHUT_RDWR ), close( s )) +# else +# define tcp_close( s ) close( s ) +# endif + +#ifdef HAVE_PIPE +/* + * Only use pipe() on systems where file and socket descriptors + * are interchangable + */ +# define USE_PIPE HAVE_PIPE +#endif + +#endif /* MACOS */ + +#ifndef ioctl_t +# define ioctl_t int +#endif + +#ifndef AC_SOCKET_INVALID +# define AC_SOCKET_INVALID (-1) +#endif +#ifndef AC_SOCKET_ERROR +# define AC_SOCKET_ERROR (-1) +#endif + +#if !defined( HAVE_INET_ATON ) && !defined( inet_aton ) +# define inet_aton ldap_pvt_inet_aton +struct in_addr; +LDAP_F (int) ldap_pvt_inet_aton LDAP_P(( const char *, struct in_addr * )); +#endif + +#if defined(__WIN32) && defined(_ALPHA) +/* NT on Alpha is hosed. */ +# define AC_HTONL( l ) \ + ((((l)&0xffU)<<24) + (((l)&0xff00U)<<8) + \ + (((l)&0xff0000U)>>8) + (((l)&0xff000000U)>>24)) +# define AC_NTOHL(l) AC_HTONL(l) + +#else +# define AC_HTONL( l ) htonl( l ) +# define AC_NTOHL( l ) ntohl( l ) +#endif + +/* htons()/ntohs() may be broken much like htonl()/ntohl() */ +#define AC_HTONS( s ) htons( s ) +#define AC_NTOHS( s ) ntohs( s ) + +#ifdef LDAP_PF_LOCAL +# if !defined( AF_LOCAL ) && defined( AF_UNIX ) +# define AF_LOCAL AF_UNIX +# endif +# if !defined( PF_LOCAL ) && defined( PF_UNIX ) +# define PF_LOCAL PF_UNIX +# endif +#endif + +#ifndef INET_ADDRSTRLEN +# define INET_ADDRSTRLEN 16 +#endif +#ifndef INET6_ADDRSTRLEN +# define INET6_ADDRSTRLEN 46 +#endif + +#ifdef HAVE_GETADDRINFO +# ifdef HAVE_GAI_STRERROR +# define AC_GAI_STRERROR(x) (gai_strerror((x))) +# else +# define AC_GAI_STRERROR(x) (ldap_pvt_gai_strerror((x))) + char * ldap_pvt_gai_strerror( int ); +# endif +#endif + +#endif /* _AC_SOCKET_H_ */ diff --git a/include/portable.h.in b/include/portable.h.in index 654de6d662..f3a5f4164a 100644 --- a/include/portable.h.in +++ b/include/portable.h.in @@ -899,6 +899,9 @@ /* define to support SASL passwords */ #undef SLAPD_SPASSWD +/* define to support multimaster replication */ +#undef SLAPD_MULTIMASTER + /* define to support phonetic */ #undef SLAPD_PHONETIC diff --git a/libraries/liblber/io.c b/libraries/liblber/io.c index 95dc49b79e..6474acd56d 100644 --- a/libraries/liblber/io.c +++ b/libraries/liblber/io.c @@ -191,7 +191,7 @@ ber_free( BerElement *ber, int freebuf ) int ber_flush( Sockbuf *sb, BerElement *ber, int freeit ) { - ber_len_t nwritten, towrite; + ber_len_t towrite; ber_slen_t rc; assert( sb != NULL ); @@ -222,16 +222,14 @@ ber_flush( Sockbuf *sb, BerElement *ber, int freeit ) #endif } - nwritten = 0; - do { + while ( towrite > 0 ) { rc = ber_int_sb_write( sb, ber->ber_rwptr, towrite ); if (rc<=0) { return -1; } towrite -= rc; - nwritten += rc; ber->ber_rwptr += rc; - } while ( towrite > 0 ); + } if ( freeit ) ber_free( ber, 1 ); diff --git a/libraries/libldap/extended.c b/libraries/libldap/extended.c index 74e31281ca..b0a7ed691a 100644 --- a/libraries/libldap/extended.c +++ b/libraries/libldap/extended.c @@ -138,8 +138,8 @@ ldap_extended_operation_s( return( ld->ld_errno ); } - *retoidp = NULL; - *retdatap = NULL; + if ( retoidp != NULL ) *retoidp = NULL; + if ( retdatap != NULL ) *retdatap = NULL; rc = ldap_parse_extended_result( ld, res, retoidp, retdatap, 0 ); diff --git a/libraries/libldap/os-ip.c b/libraries/libldap/os-ip.c index 0084743d84..7412a58014 100644 --- a/libraries/libldap/os-ip.c +++ b/libraries/libldap/os-ip.c @@ -30,6 +30,10 @@ int ldap_int_tblsize = 0; +#if defined( HAVE_GETADDRINFO ) && defined( HAVE_INET_NTOP ) +int ldap_int_inet4or6 = AF_UNSPEC; +#endif + /* * nonblock connect code * written by Lars Uffmann, . @@ -340,7 +344,7 @@ ldap_connect_to_host(LDAP *ld, Sockbuf *sb, struct addrinfo hints, *res, *sai; memset( &hints, '\0', sizeof(hints) ); - hints.ai_family = AF_UNSPEC; + hints.ai_family = ldap_int_inet4or6; hints.ai_socktype = socktype; snprintf(serv, sizeof serv, "%d", port ); diff --git a/libraries/libldap/tls.c b/libraries/libldap/tls.c index f1d4fc1345..5bfb832ede 100644 --- a/libraries/libldap/tls.c +++ b/libraries/libldap/tls.c @@ -7,6 +7,7 @@ */ #include "portable.h" +#include "ldap_config.h" #include @@ -17,6 +18,7 @@ #include #include #include +#include #include "ldap-int.h" @@ -339,10 +341,43 @@ get_ca_list( char * bundle, char * dir ) if ( bundle ) { ca_list = SSL_load_client_CA_file( bundle ); } - /* - * FIXME: We have now to go over all files in dir, load them - * and add every certificate there to ca_list. - */ + if ( dir ) { + DIR *dirp; + struct dirent *d; + char buf[MAXPATHLEN]; + int l = strlen(dir), freeit = 0; + + if (l > sizeof(buf)) + goto done; + + dirp = opendir( dir ); + + if ( !ca_list ) { + ca_list = sk_X509_NAME_new_null(); + freeit = 1; + } + + strcpy(buf, dir); + + while ( dirp ) { + if ( ( d = readdir( dirp )) == NULL) { + closedir( dirp ); + break; + } + if (l + sizeof(LDAP_DIRSEP) + NAMLEN(d) > sizeof(buf)) + continue; + + sprintf( buf+l, LDAP_DIRSEP "%s", d->d_name ); + if ( SSL_add_file_cert_subjects_to_stack(ca_list, buf)) { + freeit = 0; + } + } + if ( freeit ) { + sk_X509_NAME_free( ca_list ); + ca_list = NULL; + } + } +done: return ca_list; } diff --git a/libraries/liblutil/passwd.c b/libraries/liblutil/passwd.c index dba06c9b2b..7a04154b98 100644 --- a/libraries/liblutil/passwd.c +++ b/libraries/liblutil/passwd.c @@ -180,6 +180,11 @@ static struct berval *hash_crypt( const struct berval *passwd ); #endif +#ifdef SLAPD_CLEARTEXT +static struct berval *hash_clear( + const struct pw_scheme *scheme, + const struct berval *passwd ); +#endif static const struct pw_scheme pw_schemes[] = { @@ -212,7 +217,7 @@ static const struct pw_scheme pw_schemes[] = #ifdef SLAPD_CLEARTEXT /* psuedo scheme */ - { {0, "{CLEARTEXT}"}, NULL, NULL }, + { {0, "{CLEARTEXT}"}, NULL, hash_clear }, #endif { {0, NULL}, NULL, NULL } @@ -224,11 +229,9 @@ static const struct pw_scheme *get_scheme( int i; for( i=0; pw_schemes[i].name.bv_val; i++) { - if( pw_schemes[i].name.bv_len == 0 ) continue; + if( pw_schemes[i].name.bv_val == NULL ) continue; - if( strncasecmp(scheme, pw_schemes[i].name.bv_val, - pw_schemes[i].name.bv_len) == 0 ) - { + if( strcasecmp(scheme, pw_schemes[i].name.bv_val ) == 0 ) { return &pw_schemes[i]; } } @@ -1257,3 +1260,14 @@ int lutil_salt_format(const char *format) return 0; } + +#ifdef SLAPD_CLEARTEXT +static struct berval *hash_clear( + const struct pw_scheme *scheme, + const struct berval *passwd ) +{ + return ber_bvdup( (struct berval *) passwd ); +} +#endif + + diff --git a/servers/slapd/acl.c b/servers/slapd/acl.c index 3b73c8d9d9..46159d2156 100644 --- a/servers/slapd/acl.c +++ b/servers/slapd/acl.c @@ -37,7 +37,13 @@ static struct berval aci_bv_set = BER_BVC("set"), aci_bv_set_ref = BER_BVC("set-ref"), aci_bv_grant = BER_BVC("grant"), - aci_bv_deny = BER_BVC("deny"); + aci_bv_deny = BER_BVC("deny"), + + aci_bv_group_class = BER_BVC(SLAPD_GROUP_CLASS), + aci_bv_group_attr = BER_BVC(SLAPD_GROUP_ATTR), + aci_bv_role_class = BER_BVC(SLAPD_ROLE_CLASS), + aci_bv_role_attr = BER_BVC(SLAPD_ROLE_ATTR); + static AccessControl * acl_get( AccessControl *ac, int *count, @@ -1328,21 +1334,6 @@ acl_check_modlist( return( 1 ); } -#if 0 /* not used any more */ -static char * -aci_bvstrdup( struct berval *bv ) -{ - char *s; - - s = (char *)ch_malloc(bv->bv_len + 1); - if (s != NULL) { - AC_MEMCPY(s, bv->bv_val, bv->bv_len); - s[bv->bv_len] = 0; - } - return(s); -} -#endif - static int aci_get_part( struct berval *list, @@ -1680,7 +1671,7 @@ aci_group_member ( char buf[ACL_BUF_SIZE]; struct berval bv, ndn; bv.bv_len = sizeof( buf ); - bv.bv_val = &buf; + bv.bv_val = (char *)&buf; string_expand(&bv, &subjdn, e->e_ndn, matches); if ( dnNormalize2(NULL, &bv, &ndn) == LDAP_SUCCESS ) { rc = (backend_group(be, conn, op, e, &ndn, &op->o_ndn, grp_oc, grp_ad) == 0); @@ -1692,15 +1683,6 @@ done: return(rc); } -static struct berval GroupClass = { - sizeof(SLAPD_GROUP_CLASS)-1, SLAPD_GROUP_CLASS }; -static struct berval GroupAttr = { - sizeof(SLAPD_GROUP_ATTR)-1, SLAPD_GROUP_ATTR }; -static struct berval RoleClass = { - sizeof(SLAPD_ROLE_CLASS)-1, SLAPD_ROLE_CLASS }; -static struct berval RoleAttr = { - sizeof(SLAPD_ROLE_ATTR)-1, SLAPD_ROLE_ATTR }; - static int aci_mask( Backend *be, @@ -1768,10 +1750,9 @@ aci_mask( rc = 0; free(ndn.bv_val); } - return(rc); - } + return (rc); - if (ber_bvstrcasecmp( &aci_bv_self, &bv ) == 0) { + } else if (ber_bvstrcasecmp( &aci_bv_self, &bv ) == 0) { if (dn_match(&op->o_ndn, &e->e_nname)) return(1); @@ -1804,11 +1785,11 @@ aci_mask( } else if (ber_bvstrcasecmp( &aci_bv_group, &bv ) == 0) { - if (aci_group_member(&sdn, &GroupClass, &GroupAttr, be, e, conn, op, matches)) + if (aci_group_member(&sdn, &aci_bv_group_class, &aci_bv_group_attr, be, e, conn, op, matches)) return(1); } else if (ber_bvstrcasecmp( &aci_bv_role, &bv ) == 0) { - if (aci_group_member(&sdn, &RoleClass, &RoleAttr, be, e, conn, op, matches)) + if (aci_group_member(&sdn, &aci_bv_role_class, &aci_bv_role_attr, be, e, conn, op, matches)) return(1); } else if (ber_bvstrcasecmp( &aci_bv_set, &bv ) == 0) { diff --git a/servers/slapd/back-bdb/delete.c b/servers/slapd/back-bdb/delete.c index a348631cc7..8c26e9a080 100644 --- a/servers/slapd/back-bdb/delete.c +++ b/servers/slapd/back-bdb/delete.c @@ -309,7 +309,7 @@ retry: /* transaction retry */ goto done; } - rc = bdb_dn2id_children( be, ltid, &e->e_nname ); + rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 ); if( rc != DB_NOTFOUND ) { switch( rc ) { case DB_LOCK_DEADLOCK: diff --git a/servers/slapd/back-bdb/dn2entry.c b/servers/slapd/back-bdb/dn2entry.c index a6440536f7..4975141130 100644 --- a/servers/slapd/back-bdb/dn2entry.c +++ b/servers/slapd/back-bdb/dn2entry.c @@ -44,9 +44,9 @@ bdb_dn2entry_rw( if( matched != NULL ) { *matched = NULL; - rc = bdb_dn2id_matched( be, tid, dn, &id, &id2 ); + rc = bdb_dn2id_matched( be, tid, dn, &id, &id2, flags ); } else { - rc = bdb_dn2id( be, tid, dn, &id ); + rc = bdb_dn2id( be, tid, dn, &id, flags ); } if( rc != 0 ) { diff --git a/servers/slapd/back-bdb/dn2id.c b/servers/slapd/back-bdb/dn2id.c index d9792904fb..ea63172b6a 100644 --- a/servers/slapd/back-bdb/dn2id.c +++ b/servers/slapd/back-bdb/dn2id.c @@ -270,7 +270,8 @@ bdb_dn2id( BackendDB *be, DB_TXN *txn, struct berval *dn, - ID *id ) + ID *id, + int flags ) { int rc; DBT key, data; @@ -304,7 +305,7 @@ bdb_dn2id( data.flags = DB_DBT_USERMEM; /* fetch it */ - rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags ); + rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags | flags); if( rc != 0 ) { #ifdef NEW_LOGGING @@ -335,7 +336,8 @@ bdb_dn2id_matched( DB_TXN *txn, struct berval *in, ID *id, - ID *id2 ) + ID *id2, + int flags ) { int rc; DBT key, data; @@ -383,7 +385,7 @@ bdb_dn2id_matched( break; } else { /* fetch it */ - rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags ); + rc = db->get(db, txn, &key, &data, bdb->bi_db_opflags | flags ); } if( rc == DB_NOTFOUND ) { @@ -459,7 +461,8 @@ int bdb_dn2id_children( BackendDB *be, DB_TXN *txn, - struct berval *dn ) + struct berval *dn, + int flags ) { int rc; DBT key, data; @@ -489,7 +492,7 @@ bdb_dn2id_children( data.doff = 0; data.dlen = sizeof(id); - rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags ); + rc = db->get( db, txn, &key, &data, bdb->bi_db_opflags | flags ); free( key.data ); #ifdef NEW_LOGGING diff --git a/servers/slapd/back-bdb/id2entry.c b/servers/slapd/back-bdb/id2entry.c index 0a841cab21..ef377fd5bd 100644 --- a/servers/slapd/back-bdb/id2entry.c +++ b/servers/slapd/back-bdb/id2entry.c @@ -104,7 +104,7 @@ int bdb_id2entry_rw( } /* fetch it */ - rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags ); + rc = db->get( db, tid, &key, &data, bdb->bi_db_opflags | ( rw ? DB_RMW : 0 )); if( rc != 0 ) { return rc; diff --git a/servers/slapd/back-bdb/modify.c b/servers/slapd/back-bdb/modify.c index d205b60060..a6c80c3992 100644 --- a/servers/slapd/back-bdb/modify.c +++ b/servers/slapd/back-bdb/modify.c @@ -356,7 +356,7 @@ retry: /* transaction retry */ ber_bvarray_free( refs ); free( matched_dn ); - return rc; + goto done; } if ( !manageDSAit && is_entry_referral( e ) ) { diff --git a/servers/slapd/back-bdb/modrdn.c b/servers/slapd/back-bdb/modrdn.c index 30f345c7f0..439fcc2b5d 100644 --- a/servers/slapd/back-bdb/modrdn.c +++ b/servers/slapd/back-bdb/modrdn.c @@ -130,7 +130,7 @@ retry: /* transaction retry */ op->o_private = &opinfo; /* get entry */ - rc = bdb_dn2entry_w( be, ltid, ndn, &e, &matched, 0, locker, &lock ); + rc = bdb_dn2entry_w( be, ltid, ndn, &e, &matched, DB_RMW, locker, &lock ); switch( rc ) { case 0: @@ -520,7 +520,7 @@ retry: /* transaction retry */ new_ndn.bv_val, 0, 0 ); #endif - rc = bdb_dn2id ( be, ltid, &new_ndn, &id ); + rc = bdb_dn2id ( be, ltid, &new_ndn, &id, 0 ); switch( rc ) { case DB_LOCK_DEADLOCK: case DB_LOCK_NOTGRANTED: diff --git a/servers/slapd/back-bdb/operational.c b/servers/slapd/back-bdb/operational.c index 5278c23ba3..9cff5cb3fc 100644 --- a/servers/slapd/back-bdb/operational.c +++ b/servers/slapd/back-bdb/operational.c @@ -87,7 +87,7 @@ retry: /* transaction retry */ opinfo.boi_err = 0; op->o_private = &opinfo; - rc = bdb_dn2id_children( be, ltid, &e->e_nname ); + rc = bdb_dn2id_children( be, ltid, &e->e_nname, 0 ); switch( rc ) { case DB_LOCK_DEADLOCK: diff --git a/servers/slapd/back-bdb/proto-bdb.h b/servers/slapd/back-bdb/proto-bdb.h index f5c7af92fd..7adf2f0d47 100644 --- a/servers/slapd/back-bdb/proto-bdb.h +++ b/servers/slapd/back-bdb/proto-bdb.h @@ -69,14 +69,16 @@ int bdb_dn2id( BackendDB *be, DB_TXN *tid, struct berval *dn, - ID *id ); + ID *id, + int flags ); int bdb_dn2id_matched( BackendDB *be, DB_TXN *tid, struct berval *dn, ID *id, - ID *id2 ); + ID *id2, + int flags ); int bdb_dn2id_add( BackendDB *be, @@ -93,7 +95,8 @@ int bdb_dn2id_delete( int bdb_dn2id_children( BackendDB *be, DB_TXN *tid, - struct berval *dn ); + struct berval *dn, + int flags ); int bdb_dn2idl( diff --git a/servers/slapd/back-ldap/bind.c b/servers/slapd/back-ldap/bind.c index 2c1af55ef7..c0e532930a 100644 --- a/servers/slapd/back-ldap/bind.c +++ b/servers/slapd/back-ldap/bind.c @@ -242,7 +242,7 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op) ( void )rewrite_session_init( li->rwinfo, conn ); #endif /* ENABLE_REWRITE */ - if ( lc->conn->c_cdn.bv_len != 0 ) { + if ( lc->conn->c_dn.bv_len != 0 ) { /* * Rewrite the bind dn if needed @@ -251,23 +251,23 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op) lc->bound_dn.bv_val = NULL; lc->bound_dn.bv_len = 0; switch ( rewrite_session( li->rwinfo, "bindDn", - lc->conn->c_cdn.bv_val, conn, + lc->conn->c_dn.bv_val, conn, &lc->bound_dn.bv_val ) ) { case REWRITE_REGEXEC_OK: if ( lc->bound_dn.bv_val == NULL ) { - ber_dupbv( &lc->bound_dn, &lc->conn->c_cdn ); + ber_dupbv( &lc->bound_dn, &lc->conn->c_dn ); } #ifdef NEW_LOGGING LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1, "[rw] bindDn: \"%s\" ->" " \"%s\"\n%s", - lc->conn->c_cdn.bv_val, + lc->conn->c_dn.bv_val, lc->bound_dn.bv_val )); #else /* !NEW_LOGGING */ Debug( LDAP_DEBUG_ARGS, "rw> bindDn: \"%s\" ->" " \"%s\"\n%s", - lc->conn->c_cdn.bv_val, + lc->conn->c_dn.bv_val, lc->bound_dn.bv_val, "" ); #endif /* !NEW_LOGGING */ break; @@ -288,8 +288,8 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op) } #else /* !ENABLE_REWRITE */ struct berval bv; - ldap_back_dn_massage( li, &lc->conn->c_cdn, &bv, 0, 1 ); - if ( bv.bv_val == lc->conn->c_cdn.bv_val ) + ldap_back_dn_massage( li, &lc->conn->c_dn, &bv, 0, 1 ); + if ( bv.bv_val == lc->conn->c_dn.bv_val ) ber_dupbv( &lc->bound_dn, &bv ); else lc->bound_dn = bv; diff --git a/servers/slapd/back-ldap/config.c b/servers/slapd/back-ldap/config.c index f40fd8273f..a8e82ad0ea 100644 --- a/servers/slapd/back-ldap/config.c +++ b/servers/slapd/back-ldap/config.c @@ -232,7 +232,7 @@ ldap_back_db_config( if ( argc < 3 || argc > 4 ) { fprintf( stderr, - "%s: line %d: syntax is \"map {objectclass | attribute} { | *} [ | *]\"\n", + "%s: line %d: syntax is \"map {objectclass | attribute} [ | *] { | *}\"\n", fname, lineno ); return( 1 ); } @@ -243,32 +243,24 @@ ldap_back_db_config( map = &li->at_map; } else { fprintf( stderr, "%s: line %d: syntax is " - "\"map {objectclass | attribute} { | *} " - "[ | *]\"\n", + "\"map {objectclass | attribute} [ | *] " + "{ | *}\"\n", fname, lineno ); return( 1 ); } - if ( strcasecmp( argv[2], "*" ) != 0 ) { - src = argv[2]; - if ( argc < 4 ) - dst = ""; - else if ( strcasecmp( argv[3], "*" ) == 0 ) - dst = src; - else - dst = argv[3]; - } else { - if ( argc < 4 ) { - map->drop_missing = 1; + if ( strcmp( argv[2], "*" ) == 0 ) { + if ( argc < 4 || strcmp( argv[3], "*" ) == 0 ) { + map->drop_missing = ( argc < 4 ); return 0; } - if ( strcasecmp( argv[3], "*" ) == 0 ) { - map->drop_missing = 0; - return 0; - } - - src = argv[3]; - dst = src; + src = dst = argv[3]; + } else if ( argc < 4 ) { + src = ""; + dst = argv[2]; + } else { + src = argv[2]; + dst = ( strcmp( argv[3], "*" ) == 0 ? src : argv[3] ); } if ( ( map == &li->at_map ) @@ -290,15 +282,11 @@ ldap_back_db_config( } ber_str2bv( src, 0, 1, &mapping->src ); ber_str2bv( dst, 0, 1, &mapping->dst ); - if ( *dst != 0 ) { - mapping[1].src = mapping->dst; - mapping[1].dst = mapping->src; - } else { - mapping[1].src = mapping->src; - mapping[1].dst = mapping->dst; - } + mapping[1].src = mapping->dst; + mapping[1].dst = mapping->src; - if ( avl_find( map->map, (caddr_t)mapping, mapping_cmp ) != NULL || + if ( (*src != '\0' && + avl_find( map->map, (caddr_t)mapping, mapping_cmp ) != NULL) || avl_find( map->remap, (caddr_t)&mapping[1], mapping_cmp ) != NULL) { fprintf( stderr, @@ -307,8 +295,9 @@ ldap_back_db_config( return 0; } - avl_insert( &map->map, (caddr_t)mapping, - mapping_cmp, mapping_dup ); + if ( *src != '\0' ) + avl_insert( &map->map, (caddr_t)mapping, + mapping_cmp, mapping_dup ); avl_insert( &map->remap, (caddr_t)&mapping[1], mapping_cmp, mapping_dup ); diff --git a/servers/slapd/back-ldap/map.c b/servers/slapd/back-ldap/map.c new file mode 100644 index 0000000000..7bf1e470a1 --- /dev/null +++ b/servers/slapd/back-ldap/map.c @@ -0,0 +1,245 @@ +/* map.c - ldap backend mapping routines */ +/* + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ +/* This is an altered version */ +/* + * Copyright 1999, Howard Chu, All rights reserved. + * + * Permission is granted to anyone to use this software for any purpose + * on any computer system, and to alter it and redistribute it, subject + * to the following restrictions: + * + * 1. The author is not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits should appear in the documentation. + * + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits should appear in the documentation. + * + * 4. This notice may not be removed or altered. + * + * + * + * Copyright 2000, Pierangelo Masarati, All rights reserved. + * + * This software is being modified by Pierangelo Masarati. + * The previously reported conditions apply to the modified code as well. + * Changes in the original code are highlighted where required. + * Credits for the original code go to the author, Howard Chu. + */ + +#include "portable.h" + +#include + +#include +#include + +#include "slap.h" +#include "back-ldap.h" + +int +mapping_cmp ( const void *c1, const void *c2 ) +{ + struct ldapmapping *map1 = (struct ldapmapping *)c1; + struct ldapmapping *map2 = (struct ldapmapping *)c2; + int rc = map1->src.bv_len - map2->src.bv_len; + if (rc) return rc; + return ( strcasecmp(map1->src.bv_val, map2->src.bv_val) ); +} + +int +mapping_dup ( void *c1, void *c2 ) +{ + struct ldapmapping *map1 = (struct ldapmapping *)c1; + struct ldapmapping *map2 = (struct ldapmapping *)c2; + + return( ( strcasecmp(map1->src.bv_val, map2->src.bv_val) == 0 ) ? -1 : 0 ); +} + +void +ldap_back_map_init ( struct ldapmap *lm, struct ldapmapping **m ) +{ + struct ldapmapping *mapping; + + assert( m ); + + *m = NULL; + + mapping = (struct ldapmapping *)ch_calloc( 2, + sizeof( struct ldapmapping ) ); + if ( mapping == NULL ) { + return; + } + + ber_str2bv( "objectclass", sizeof("objectclass")-1, 1, &mapping->src); + ber_dupbv( &mapping->dst, &mapping->src ); + mapping[1].src = mapping->src; + mapping[1].dst = mapping->dst; + + avl_insert( &lm->map, (caddr_t)mapping, + mapping_cmp, mapping_dup ); + avl_insert( &lm->remap, (caddr_t)&mapping[1], + mapping_cmp, mapping_dup ); + *m = mapping; +} + +void +ldap_back_map ( struct ldapmap *map, struct berval *s, struct berval *bv, + int remap ) +{ + Avlnode *tree; + struct ldapmapping *mapping, fmapping; + + if (remap) + tree = map->remap; + else + tree = map->map; + + bv->bv_len = 0; + bv->bv_val = NULL; + fmapping.src = *s; + mapping = (struct ldapmapping *)avl_find( tree, (caddr_t)&fmapping, mapping_cmp ); + if (mapping != NULL) { + if ( mapping->dst.bv_val ) + *bv = mapping->dst; + return; + } + + if (!map->drop_missing) + *bv = *s; + + return; +} + +char * +ldap_back_map_filter( + struct ldapmap *at_map, + struct ldapmap *oc_map, + struct berval *f, + int remap +) +{ + char *nf, *p, *q, *s, c; + int len, extra, plen, in_quote; + struct berval m, tmp; + + if (f == NULL) + return(NULL); + + len = f->bv_len; + extra = len; + len *= 2; + nf = ch_malloc( len + 1 ); + if (nf == NULL) + return(NULL); + + /* this loop assumes the filter ends with one + * of the delimiter chars -- probably ')'. + */ + + s = nf; + q = NULL; + in_quote = 0; + for (p = f->bv_val; (c = *p); p++) { + if (c == '"') { + in_quote = !in_quote; + if (q != NULL) { + plen = p - q; + AC_MEMCPY(s, q, plen); + s += plen; + q = NULL; + } + *s++ = c; + } else if (in_quote) { + /* ignore everything in quotes -- + * what about attrs in DNs? + */ + *s++ = c; + } else if (c != '(' && c != ')' + && c != '=' && c != '>' && c != '<' + && c != '|' && c != '&') + { + if (q == NULL) + q = p; + } else { + if (q != NULL) { + *p = 0; + tmp.bv_len = p - q; + tmp.bv_val = q; + ldap_back_map(at_map, &tmp, &m, remap); + if (m.bv_val == NULL) + ldap_back_map(oc_map, &tmp, &m, remap); + if (m.bv_val == NULL) { + m = tmp; + } + extra += p - q; + plen = m.bv_len; + extra -= plen; + if (extra < 0) { + char *tmpnf; + while (extra < 0) { + extra += len; + len *= 2; + } + s -= (long)nf; + tmpnf = ch_realloc(nf, len + 1); + if (tmpnf == NULL) { + ch_free(nf); + return(NULL); + } + nf = tmpnf; + s += (long)nf; + } + AC_MEMCPY(s, m.bv_val, plen); + s += plen; + *p = c; + q = NULL; + } + *s++ = c; + } + } + *s = 0; + return(nf); +} + +char ** +ldap_back_map_attrs( + struct ldapmap *at_map, + AttributeName *an, + int remap +) +{ + int i, j; + char **na; + struct berval mapped; + + if (an == NULL) + return(NULL); + + for (i = 0; an[i].an_name.bv_val; i++) { + /* */ + } + + na = (char **)ch_calloc( i + 1, sizeof(char *) ); + if (na == NULL) + return(NULL); + + for (i = j = 0; an[i].an_name.bv_val; i++) { + ldap_back_map(at_map, &an[i].an_name, &mapped, remap); + if (mapped.bv_val != NULL) + na[j++] = mapped.bv_val; + } + if (j == 0 && i != 0) + na[j++] = LDAP_NO_ATTRS; + na[j] = NULL; + + return(na); +} + diff --git a/servers/slapd/back-meta/config.c b/servers/slapd/back-meta/config.c index 7b8f7cf6e5..107ac5cadb 100644 --- a/servers/slapd/back-meta/config.c +++ b/servers/slapd/back-meta/config.c @@ -503,7 +503,7 @@ meta_back_db_config( if ( argc < 3 || argc > 4 ) { fprintf( stderr, - "%s: line %d: syntax is \"map {objectclass | attribute} { | *} [ | *]\"\n", + "%s: line %d: syntax is \"map {objectclass | attribute} [ | *] { | *}\"\n", fname, lineno ); return 1; } @@ -514,32 +514,23 @@ meta_back_db_config( map = &li->targets[ i ]->at_map; } else { fprintf( stderr, - "%s: line %d: syntax is \"map {objectclass | attribute} { | *} [ | *]\"\n", + "%s: line %d: syntax is \"map {objectclass | attribute} [ | *] { | *}\"\n", fname, lineno ); return 1; } - if ( strcasecmp( argv[ 2 ], "*" ) != 0 ) { - src = argv[ 2 ]; - if ( argc < 4 ) { - dst = ""; - } else if ( strcasecmp( argv[ 3 ], "*" ) == 0 ) { - dst = src; - } else { - dst = argv[ 3 ]; - } - } else { - if ( argc < 4 ) { - map->drop_missing = 1; - return 0; - } - if ( strcasecmp( argv[ 3 ], "*" ) == 0 ) { - map->drop_missing = 0; + if ( strcmp( argv[ 2 ], "*" ) == 0 ) { + if ( argc < 4 || strcmp( argv[ 3 ], "*" ) == 0 ) { + map->drop_missing = ( argc < 4 ); return 0; } - - src = argv[ 3 ]; - dst = src; + src = dst = argv[ 3 ]; + } else if ( argc < 4 ) { + src = ""; + dst = argv[ 2 ]; + } else { + src = argv[ 2 ]; + dst = ( strcmp( argv[ 3 ], "*" ) == 0 ? src : argv[ 3 ] ); } if ( ( map == &li->targets[ i ]->at_map ) @@ -559,16 +550,12 @@ meta_back_db_config( } ber_str2bv( src, 0, 1, &mapping->src ); ber_str2bv( dst, 0, 1, &mapping->dst ); - if ( *dst != 0 ) { - mapping[ 1 ].src = mapping->dst; - mapping[ 1 ].dst = mapping->src; - } else { - mapping[ 1 ].src = mapping->src; - mapping[ 1 ].dst = mapping->dst; - } + mapping[ 1 ].src = mapping->dst; + mapping[ 1 ].dst = mapping->src; - if ( avl_find( map->map, ( caddr_t )mapping, - mapping_cmp ) != NULL + if ( (*src != '\0' && + avl_find( map->map, ( caddr_t )mapping, + mapping_cmp ) != NULL) || avl_find( map->remap, ( caddr_t )&mapping[ 1 ], mapping_cmp ) != NULL) { fprintf( stderr, @@ -577,8 +564,9 @@ meta_back_db_config( return 0; } - avl_insert( &map->map, ( caddr_t )mapping, - mapping_cmp, mapping_dup ); + if ( *src != '\0' ) + avl_insert( &map->map, ( caddr_t )mapping, + mapping_cmp, mapping_dup ); avl_insert( &map->remap, ( caddr_t )&mapping[ 1 ], mapping_cmp, mapping_dup ); diff --git a/servers/slapd/back-meta/conn.c b/servers/slapd/back-meta/conn.c new file mode 100644 index 0000000000..8f17f60590 --- /dev/null +++ b/servers/slapd/back-meta/conn.c @@ -0,0 +1,548 @@ +/* + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + * + * Copyright 2001, Pierangelo Masarati, All rights reserved. + * + * This work has been developed to fulfill the requirements + * of SysNet s.n.c. and it has been donated + * to the OpenLDAP Foundation in the hope that it may be useful + * to the Open Source community, but WITHOUT ANY WARRANTY. + * + * Permission is granted to anyone to use this software for any purpose + * on any computer system, and to alter it and redistribute it, subject + * to the following restrictions: + * + * 1. The author and SysNet s.n.c. are not responsible for the consequences + * of use of this software, no matter how awful, even if they arise from + * flaws in it. + * + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits should appear in the documentation. + * + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits should appear in the documentation. + * SysNet s.n.c. cannot be responsible for the consequences of the + * alterations. + * + * 4. This notice may not be removed or altered. + * + * + * This software is based on the backend back-ldap, implemented + * by Howard Chu , and modified by Mark Valence + * , Pierangelo Masarati and other + * contributors. The contribution of the original software to the present + * implementation is acknowledged in this copyright statement. + * + * A special acknowledgement goes to Howard for the overall architecture + * (and for borrowing large pieces of code), and to Mark, who implemented + * from scratch the attribute/objectclass mapping. + * + * The original copyright statement follows. + * + * Copyright 1999, Howard Chu, All rights reserved. + * + * Permission is granted to anyone to use this software for any purpose + * on any computer system, and to alter it and redistribute it, subject + * to the following restrictions: + * + * 1. The author is not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits should appear in the documentation. + * + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits should appear in the + * documentation. + * + * 4. This notice may not be removed or altered. + * + */ + +#include "portable.h" + +#include + +#include +#include + + +#define AVL_INTERNAL +#include "slap.h" +#include "../back-ldap/back-ldap.h" +#include "back-meta.h" + +/* + * Set PRINT_CONNTREE larger than 0 to dump the connection tree (debug only) + */ +#define PRINT_CONNTREE 0 + +/* + * meta_back_conn_cmp + * + * compares two struct metaconn based on the value of the conn pointer; + * used by avl stuff + */ +int +meta_back_conn_cmp( + const void *c1, + const void *c2 + ) +{ + struct metaconn *lc1 = ( struct metaconn * )c1; + struct metaconn *lc2 = ( struct metaconn * )c2; + + return ( ( lc1->conn < lc2->conn ) ? -1 : + ( ( lc1->conn > lc2-> conn ) ? 1 : 0 ) ); +} + +/* + * meta_back_conn_dup + * + * returns -1 in case a duplicate struct metaconn has been inserted; + * used by avl stuff + */ +int +meta_back_conn_dup( + void *c1, + void *c2 + ) +{ + struct metaconn *lc1 = ( struct metaconn * )c1; + struct metaconn *lc2 = ( struct metaconn * )c2; + + return( ( lc1->conn == lc2->conn ) ? -1 : 0 ); +} + +/* + * Debug stuff (got it from libavl) + */ +#if PRINT_CONNTREE > 0 +static void +ravl_print( Avlnode *root, int depth ) +{ + int i; + + if ( root == 0 ) { + return; + } + + ravl_print( root->avl_right, depth+1 ); + + for ( i = 0; i < depth; i++ ) { + printf( " " ); + } + + printf( "c(%d) %d\n", ( ( struct metaconn * )root->avl_data )->conn->c_connid, root->avl_bf ); + + ravl_print( root->avl_left, depth+1 ); +} + +static void +myprint( Avlnode *root ) +{ + printf( "********\n" ); + + if ( root == 0 ) { + printf( "\tNULL\n" ); + } else { + ravl_print( root, 0 ); + } + + printf( "********\n" ); +} +#endif /* PRINT_CONNTREE */ +/* + * End of debug stuff + */ + +/* + * metaconn_alloc + * + * Allocates a connection structure, making room for all the referenced targets + */ +static struct metaconn * +metaconn_alloc( int ntargets ) +{ + struct metaconn *lc; + int i; + + assert( ntargets > 0 ); + + lc = ch_calloc( sizeof( struct metaconn ), 1 ); + if ( lc == NULL ) { + return NULL; + } + + /* + * make it a null-terminated array ... + */ + lc->conns = ch_calloc( sizeof( struct metasingleconn * ), ntargets+1 ); + if ( lc->conns == NULL ) { + free( lc ); + return NULL; + } + + for ( i = 0; i < ntargets; i++ ) { + lc->conns[ i ] = + ch_calloc( sizeof( struct metasingleconn ), 1 ); + if ( lc->conns[ i ] == NULL ) { + charray_free( ( char ** )lc->conns ); + free( lc->conns ); + free( lc ); + return NULL; + } + } + + lc->bound_target = META_BOUND_NONE; + + return lc; +} + +/* + * metaconn_free + * + * clears a metaconn + */ +static void +metaconn_free( + struct metaconn *lc +) +{ + if ( !lc ) { + return; + } + + if ( lc->conns ) { + int i; + + for ( i = 0; lc->conns[ i ] != NULL; ++i ) { + free( lc->conns[ i ] ); + } + charray_free( ( char ** )lc->conns ); + } + + free( lc ); +} + +/* + * init_one_conn + * + * Initializes one connection + */ +static int +init_one_conn( + Connection *conn, + Operation *op, + struct metatarget *lt, + int vers, + struct metasingleconn *lsc + ) +{ + int err; + + /* + * Already init'ed + */ + if ( lsc->ld != NULL ) { + return LDAP_SUCCESS; + } + + /* + * Attempts to initialize the connection to the target ds + */ + err = ldap_initialize( &lsc->ld, lt->uri ); + if ( err != LDAP_SUCCESS ) { + return ldap_back_map_result( err ); + } + + /* + * Set LDAP version. This will always succeed: If the client + * bound with a particular version, then so can we. + */ + ldap_set_option( lsc->ld, LDAP_OPT_PROTOCOL_VERSION, &vers ); + + /* + * Sets a cookie for the rewrite session + */ + ( void )rewrite_session_init( lt->rwinfo, conn ); + + /* + * If the connection dn is not null, an attempt to rewrite it is made + */ + if ( conn->c_dn.bv_len != 0 ) { + + /* + * Rewrite the bind dn if needed + */ + lsc->bound_dn.bv_val = NULL; + switch ( rewrite_session( lt->rwinfo, "bindDn", + conn->c_dn.bv_val, conn, + &lsc->bound_dn.bv_val ) ) { + case REWRITE_REGEXEC_OK: + if ( lsc->bound_dn.bv_val == NULL ) { + ber_dupbv( &lsc->bound_dn, &conn->c_dn ); + } +#ifdef NEW_LOGGING + LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1, + "[rw] bindDn: \"%s\" -> \"%s\"\n", + conn->c_dn.bv_val, lsc->bound_dn.bv_val )); +#else /* !NEW_LOGGING */ + Debug( LDAP_DEBUG_ARGS, + "rw> bindDn: \"%s\" -> \"%s\"\n", + conn->c_dn.bv_val, lsc->bound_dn.bv_val, 0 ); +#endif /* !NEW_LOGGING */ + break; + + case REWRITE_REGEXEC_UNWILLING: + send_ldap_result( conn, op, + LDAP_UNWILLING_TO_PERFORM, + NULL, "Unwilling to perform", + NULL, NULL ); + return LDAP_UNWILLING_TO_PERFORM; + + case REWRITE_REGEXEC_ERR: + send_ldap_result( conn, op, + LDAP_OPERATIONS_ERROR, + NULL, "Operations error", + NULL, NULL ); + return LDAP_OPERATIONS_ERROR; + } + + assert( lsc->bound_dn.bv_val ); + + } else { + ber_str2bv( "", 0, 1, &lsc->bound_dn ); + } + + lsc->bound = META_UNBOUND; + + /* + * The candidate is activated + */ + lsc->candidate = META_CANDIDATE; + return LDAP_SUCCESS; +} + +/* + * meta_back_getconn + * + * Prepares the connection structure + * + * FIXME: This function needs to receive some info on the type of operation + * it is invoked by, so that only the correct pool of candidate targets + * is initialized in case no connection was available yet. + * + * At present a flag that says whether the candidate target must be unique + * is passed; eventually an operation agent will be used. + */ +struct metaconn * +meta_back_getconn( + struct metainfo *li, + Connection *conn, + Operation *op, + int op_type, + struct berval *ndn, + int *candidate ) +{ + struct metaconn *lc, lc_curr; + int vers, cached = -1, i = -1, err = LDAP_SUCCESS; + int new_conn = 0; + + /* Searches for a metaconn in the avl tree */ + lc_curr.conn = conn; + ldap_pvt_thread_mutex_lock( &li->conn_mutex ); + lc = (struct metaconn *)avl_find( li->conntree, + (caddr_t)&lc_curr, meta_back_conn_cmp ); + ldap_pvt_thread_mutex_unlock( &li->conn_mutex ); + + /* Looks like we didn't get a bind. Open a new session... */ + if ( !lc ) { + lc = metaconn_alloc( li->ntargets ); + lc->conn = conn; + new_conn = 1; + } + + vers = conn->c_protocol; + + /* + * looks in cache, if any + */ + if ( li->cache.ttl != META_DNCACHE_DISABLED ) { + cached = i = meta_dncache_get_target( &li->cache, ndn ); + } + + if ( op_type == META_OP_REQUIRE_SINGLE ) { + + /* + * tries to get a unique candidate + * (takes care of default target + */ + if ( i < 0 ) { + i = meta_back_select_unique_candidate( li, ndn ); + } + + /* + * if any is found, inits the connection + */ + if ( i < 0 ) { + if ( new_conn ) { + metaconn_free( lc ); + } + + send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT, + NULL, "", NULL, NULL ); + + return NULL; + } + +#ifdef NEW_LOGGING + LDAP_LOG(( "backend", LDAP_LEVEL_INFO, + "meta_back_getconn: got target %d" + " for ndn=\"%s\" from cache\n", + i, ndn->bv_val )); +#else /* !NEW_LOGGING */ + Debug( LDAP_DEBUG_CACHE, + "==>meta_back_getconn: got target %d for ndn=\"%s\" from cache\n%s", + i, ndn->bv_val, "" ); +#endif /* !NEW_LOGGING */ + + /* + * Clear all other candidates + */ + ( void )meta_clear_unused_candidates( li, lc, i, 0 ); + + /* + * The target is activated; if needed, it is + * also init'd. In case of error, init_one_conn + * sends the appropriate result. + */ + err = init_one_conn( conn, op, li->targets[ i ], + vers, lc->conns[ i ] ); + if ( err != LDAP_SUCCESS ) { + + /* + * FIXME: in case one target cannot + * be init'd, should the other ones + * be tried? + */ + ( void )meta_clear_one_candidate( lc->conns[ i ], 1 ); + if ( new_conn ) { + metaconn_free( lc ); + } + return NULL; + } + + if ( candidate ) { + *candidate = i; + } + + /* + * require all connections ... + */ + } else if (op_type == META_OP_REQUIRE_ALL) { + for ( i = 0; i < li->ntargets; i++ ) { + + /* + * The target is activated; if needed, it is + * also init'd + */ + int lerr = init_one_conn( conn, op, li->targets[ i ], + vers, lc->conns[ i ] ); + if ( lerr != LDAP_SUCCESS ) { + + /* + * FIXME: in case one target cannot + * be init'd, should the other ones + * be tried? + */ + ( void )meta_clear_one_candidate( lc->conns[ i ], 1 ); + err = lerr; + continue; + } + } + + /* + * if no unique candidate ... + */ + } else { + for ( i = 0; i < li->ntargets; i++ ) { + if ( i == cached + || meta_back_is_candidate( &li->targets[ i ]->suffix, ndn ) ) { + + /* + * The target is activated; if needed, it is + * also init'd + */ + int lerr = init_one_conn( conn, op, + li->targets[ i ], + vers, lc->conns[ i ] ); + if ( lerr != LDAP_SUCCESS ) { + + /* + * FIXME: in case one target cannot + * be init'd, should the other ones + * be tried? + */ + ( void )meta_clear_one_candidate( lc->conns[ i ], 1 ); + err = lerr; + continue; + } + } + } + } + + if ( new_conn ) { + + /* + * Inserts the newly created metaconn in the avl tree + */ + ldap_pvt_thread_mutex_lock( &li->conn_mutex ); + err = avl_insert( &li->conntree, ( caddr_t )lc, + meta_back_conn_cmp, meta_back_conn_dup ); + +#if PRINT_CONNTREE > 0 + myprint( li->conntree ); +#endif /* PRINT_CONNTREE */ + + ldap_pvt_thread_mutex_unlock( &li->conn_mutex ); + +#ifdef NEW_LOGGING + LDAP_LOG(( "backend", LDAP_LEVEL_INFO, + "meta_back_getconn: conn %ld inserted\n", + lc->conn->c_connid )); +#else /* !NEW_LOGGING */ + Debug( LDAP_DEBUG_TRACE, + "=>meta_back_getconn: conn %ld inserted\n%s%s", + lc->conn->c_connid, "", "" ); +#endif /* !NEW_LOGGING */ + + /* + * Err could be -1 in case a duplicate metaconn is inserted + */ + if ( err != 0 ) { + send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, + NULL, "Internal server error", NULL, NULL ); + metaconn_free( lc ); + return NULL; + } + } else { +#ifdef NEW_LOGGING + LDAP_LOG(( "backend", LDAP_LEVEL_INFO, + "meta_back_getconn: conn %ld fetched\n", + lc->conn->c_connid )); +#else /* !NEW_LOGGING */ + Debug( LDAP_DEBUG_TRACE, + "=>meta_back_getconn: conn %ld fetched\n%s%s", + lc->conn->c_connid, "", "" ); +#endif /* !NEW_LOGGING */ + } + + return lc; +} + diff --git a/servers/slapd/back-monitor/conn.c b/servers/slapd/back-monitor/conn.c index ae877020b7..43ba3dc4e4 100644 --- a/servers/slapd/back-monitor/conn.c +++ b/servers/slapd/back-monitor/conn.c @@ -322,7 +322,7 @@ conn_create( connection_state2str( c->c_conn_state ), c->c_sasl_bind_in_progress ? "S" : "", - c->c_cdn.bv_len ? c->c_cdn.bv_val : SLAPD_ANONYMOUS, + c->c_dn.bv_len ? c->c_dn.bv_val : SLAPD_ANONYMOUS, c->c_listener_url.bv_val, c->c_peer_domain.bv_val, diff --git a/servers/slapd/back-monitor/database.c b/servers/slapd/back-monitor/database.c index bfc1eded08..66b0b0bce4 100644 --- a/servers/slapd/back-monitor/database.c +++ b/servers/slapd/back-monitor/database.c @@ -48,6 +48,7 @@ monitor_subsys_database_init( int i; struct monitorentrypriv *mp; AttributeDescription *ad_nc = slap_schema.si_ad_namingContexts; + AttributeDescription *ad_mc = slap_schema.si_ad_monitorContext; AttributeDescription *ad_seeAlso = NULL; const char *text = NULL; @@ -114,8 +115,13 @@ monitor_subsys_database_init( return( -1 ); } - attr_merge( e, ad_nc, be->be_suffix ); - attr_merge( e_database, ad_nc, be->be_suffix ); + if ( be->be_flags & SLAP_BFLAG_MONITOR ) { + attr_merge( e, ad_mc, be->be_suffix ); + attr_merge( e_database, ad_mc, be->be_suffix ); + } else { + attr_merge( e, ad_nc, be->be_suffix ); + attr_merge( e_database, ad_nc, be->be_suffix ); + } for ( j = nBackendInfo; j--; ) { if ( &backendInfo[ j ] == be->bd_info ) { diff --git a/servers/slapd/back-perl/bind.c b/servers/slapd/back-perl/bind.c index 05ecf4d338..755a1329b9 100644 --- a/servers/slapd/back-perl/bind.c +++ b/servers/slapd/back-perl/bind.c @@ -20,7 +20,6 @@ #endif #include -#include #include #include "perl_back.h" diff --git a/servers/slapd/back-perl/init.c b/servers/slapd/back-perl/init.c index ec105f9543..8cac0819e0 100644 --- a/servers/slapd/back-perl/init.c +++ b/servers/slapd/back-perl/init.c @@ -20,7 +20,6 @@ #endif #include -#include #include #include "perl_back.h" diff --git a/servers/slapd/back-perl/modify.c b/servers/slapd/back-perl/modify.c index 0e2f570eab..5d13518fe6 100644 --- a/servers/slapd/back-perl/modify.c +++ b/servers/slapd/back-perl/modify.c @@ -69,7 +69,7 @@ perl_back_modify( } - XPUSHs(sv_2mortal(newSVpv( mods->sm_desc.ad_cname.bv_val, 0 ))); + XPUSHs(sv_2mortal(newSVpv( mods->sm_desc->ad_cname.bv_val, 0 ))); for ( i = 0; mods->sm_bvalues != NULL && mods->sm_bvalues[i].bv_val != NULL; diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c index 7d7414aaa8..a962aabd06 100644 --- a/servers/slapd/backend.c +++ b/servers/slapd/backend.c @@ -924,7 +924,8 @@ backend_check_restrictions( if( requires & SLAP_REQUIRE_STRONG ) { /* should check mechanism */ - if( op->o_authmech.bv_len == 0 || op->o_dn.bv_len == 0 ) + if( ( op->o_transport_ssf < ssf->sss_transport + && op->o_authmech.bv_len == 0 ) || op->o_dn.bv_len == 0 ) { *text = "strong authentication required"; return LDAP_STRONG_AUTH_REQUIRED; @@ -932,8 +933,7 @@ backend_check_restrictions( } if( requires & SLAP_REQUIRE_SASL ) { - if( op->o_authmech.bv_len == 0 || op->o_dn.bv_len == 0 ) - { + if( op->o_authmech.bv_len == 0 || op->o_dn.bv_len == 0 ) { *text = "SASL authentication required"; return LDAP_STRONG_AUTH_REQUIRED; } diff --git a/servers/slapd/backglue.c b/servers/slapd/backglue.c index e2afd09156..af3949325d 100644 --- a/servers/slapd/backglue.c +++ b/servers/slapd/backglue.c @@ -413,8 +413,15 @@ glue_back_bind ( be = glue_back_select (b0, ndn->bv_val); if (be && be->be_bind) { - conn->c_authz_backend = be; rc = be->be_bind (be, conn, op, dn, ndn, method, cred, edn); + + if( rc == LDAP_SUCCESS ) { + ldap_pvt_thread_mutex_lock( &conn->c_mutex ); + if( conn->c_authz_backend == NULL ) { + conn->c_authz_backend = be; + } + ldap_pvt_thread_mutex_unlock( &conn->c_mutex ); + } } else { rc = LDAP_UNWILLING_TO_PERFORM; send_ldap_result (conn, op, rc, NULL, "No bind target found", diff --git a/servers/slapd/bind.c b/servers/slapd/bind.c index cbbb1383f6..15055120b4 100644 --- a/servers/slapd/bind.c +++ b/servers/slapd/bind.c @@ -402,6 +402,27 @@ do_bind( Debug( LDAP_DEBUG_TRACE, "do_bind: v%d simple bind(%s) disallowed\n", version, ndn.bv_val, 0 ); +#endif + goto cleanup; + + } else if (( global_disallows & SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED ) + && ( op->o_ssf < global_ssf_set.sss_ssf )) + { + rc = LDAP_CONFIDENTIALITY_REQUIRED; + text = "unwilling to perform simple authentication " + "without confidentilty protection"; + + send_ldap_result( conn, op, rc, + NULL, text, NULL, NULL ); + +#ifdef NEW_LOGGING + LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_bind: conn %d " + "v%d unprotected simple bind(%s) disallowed\n", + conn->c_connid, version, ndn.bv_val )); +#else + Debug( LDAP_DEBUG_TRACE, + "do_bind: v%d unprotected simple bind(%s) disallowed\n", + version, ndn.bv_val, 0 ); #endif goto cleanup; } @@ -478,8 +499,6 @@ do_bind( goto cleanup; } - conn->c_authz_backend = be; - if ( be->be_bind ) { int ret; @@ -492,14 +511,17 @@ do_bind( if ( ret == 0 ) { ldap_pvt_thread_mutex_lock( &conn->c_mutex ); + if( conn->c_authz_backend == NULL ) { + conn->c_authz_backend = be; + } + if(edn.bv_len) { conn->c_dn = edn; } else { - ber_dupbv( &conn->c_dn, &pdn ); + conn->c_dn = pdn; + pdn.bv_val = NULL; + pdn.bv_len = 0; } - conn->c_cdn = pdn; - pdn.bv_val = NULL; - pdn.bv_len = 0; conn->c_ndn = ndn; ndn.bv_val = NULL; @@ -514,11 +536,11 @@ do_bind( #ifdef NEW_LOGGING LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1, "do_bind: conn %d v%d bind: \"%s\" to \"%s\" \n", - conn->c_connid, version, conn->c_cdn.bv_val, conn->c_dn.bv_val )); + conn->c_connid, version, dn.bv_val, conn->c_dn.bv_val )); #else Debug( LDAP_DEBUG_TRACE, "do_bind: v%d bind: \"%s\" to \"%s\"\n", - version, conn->c_cdn.bv_val, conn->c_dn.bv_val ); + version, dn.bv_val, conn->c_dn.bv_val ); #endif ldap_pvt_thread_mutex_unlock( &conn->c_mutex ); diff --git a/servers/slapd/config.c b/servers/slapd/config.c index 513372912a..d3619af889 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -61,9 +61,6 @@ char *slapd_args_file = NULL; char *strtok_quote_ptr; -int nSaslRegexp = 0; -SaslRegexp_t *SaslRegexp = NULL; - #ifdef SLAPD_RLOOKUPS int use_reverse_lookup = 1; #else /* !SLAPD_RLOOKUPS */ @@ -561,128 +558,12 @@ read_config( const char *fname ) lutil_salt_format( cargv[1] ); - /* set SASL host */ - } else if ( strcasecmp( cargv[0], "sasl-host" ) == 0 ) { - if ( cargc < 2 ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: missing host in \"sasl-host \" line\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing host in \"sasl-host \" line\n", - fname, lineno, 0 ); -#endif - - return( 1 ); - } - - if ( global_host != NULL ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: already set sasl-host!\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: already set sasl-host!\n", - fname, lineno, 0 ); -#endif - - return 1; - - } else { - global_host = ch_strdup( cargv[1] ); - } - - /* set SASL realm */ - } else if ( strcasecmp( cargv[0], "sasl-realm" ) == 0 ) { - if ( cargc < 2 ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: missing realm in \"sasl-realm \" line.\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing realm in \"sasl-realm \" line\n", - fname, lineno, 0 ); -#endif - - return( 1 ); - } - - if ( global_realm != NULL ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: already set sasl-realm!\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: already set sasl-realm!\n", - fname, lineno, 0 ); -#endif - +#ifdef HAVE_CYRUS_SASL + /* SASL config options */ + } else if ( strncasecmp( cargv[0], "sasl", 4 ) == 0 ) { + if ( slap_sasl_config( cargc, cargv, line, fname, lineno ) ) return 1; - - } else { - global_realm = ch_strdup( cargv[1] ); - } - - } else if ( !strcasecmp( cargv[0], "sasl-regexp" ) - || !strcasecmp( cargv[0], "saslregexp" ) ) - { - int rc; - if ( cargc != 3 ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: need 2 args in " - "\"saslregexp \"\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: need 2 args in \"saslregexp \"\n", - fname, lineno, 0 ); -#endif - - return( 1 ); - } - rc = slap_sasl_regexp_config( cargv[1], cargv[2] ); - if ( rc ) { - return rc; - } - - /* SASL security properties */ - } else if ( strcasecmp( cargv[0], "sasl-secprops" ) == 0 ) { - char *txt; - - if ( cargc < 2 ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: missing flags in " - "\"sasl-secprops \" line\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing flags in \"sasl-secprops \" line\n", - fname, lineno, 0 ); -#endif - - return 1; - } - - txt = slap_sasl_secprops( cargv[1] ); - if ( txt != NULL ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d sas-secprops: %s\n", - fname, lineno, txt )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: sasl-secprops: %s\n", - fname, lineno, txt ); -#endif - - return 1; - } +#endif /* HAVE_CYRUS_SASL */ /* set UCDATA path */ } else if ( strcasecmp( cargv[0], "ucdata-path" ) == 0 ) { @@ -1408,6 +1289,9 @@ read_config( const char *fname ) } else if( strcasecmp( cargv[i], "bind_simple" ) == 0 ) { disallows |= SLAP_DISALLOW_BIND_SIMPLE; + } else if( strcasecmp( cargv[i], "bind_simple_unprotected" ) == 0 ) { + disallows |= SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED; + } else if( strcasecmp( cargv[i], "bind_krbv4" ) == 0 ) { disallows |= SLAP_DISALLOW_BIND_KRBV4; diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index a93af0d116..0f4ce390da 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -417,8 +417,6 @@ long connection_init( c->c_dn.bv_len = 0; c->c_ndn.bv_val = NULL; c->c_ndn.bv_len = 0; - c->c_cdn.bv_val = NULL; - c->c_cdn.bv_len = 0; c->c_groups = NULL; c->c_listener_url.bv_val = NULL; @@ -461,7 +459,6 @@ long connection_init( assert( c->c_authmech.bv_val == NULL ); assert( c->c_dn.bv_val == NULL ); assert( c->c_ndn.bv_val == NULL ); - assert( c->c_cdn.bv_val == NULL ); assert( c->c_groups == NULL ); assert( c->c_listener_url.bv_val == NULL ); assert( c->c_peer_domain.bv_val == NULL ); @@ -573,8 +570,8 @@ long connection_init( void connection2anonymous( Connection *c ) { - assert( connections != NULL ); - assert( c != NULL ); + assert( connections != NULL ); + assert( c != NULL ); { ber_len_t max = sockbuf_max_incoming; @@ -587,35 +584,27 @@ void connection2anonymous( Connection *c ) } c->c_authmech.bv_len = 0; - if(c->c_dn.bv_val != NULL) { - free(c->c_dn.bv_val); - c->c_dn.bv_val = NULL; - } - c->c_dn.bv_len = 0; - if(c->c_ndn.bv_val != NULL) { - free(c->c_ndn.bv_val); - c->c_ndn.bv_val = NULL; - } - c->c_ndn.bv_len = 0; - - if(c->c_cdn.bv_val != NULL) { - free(c->c_cdn.bv_val); - c->c_cdn.bv_val = NULL; + if(c->c_dn.bv_val != NULL) { + free(c->c_dn.bv_val); + c->c_dn.bv_val = NULL; } - c->c_cdn.bv_len = 0; + c->c_dn.bv_len = 0; + if(c->c_ndn.bv_val != NULL) { + free(c->c_ndn.bv_val); + c->c_ndn.bv_val = NULL; + } + c->c_ndn.bv_len = 0; c->c_authz_backend = NULL; - - { - GroupAssertion *g, *n; - for (g = c->c_groups; g; g=n) + { - n = g->ga_next; - free(g); + GroupAssertion *g, *n; + for (g = c->c_groups; g; g=n) { + n = g->ga_next; + free(g); + } + c->c_groups = NULL; } - c->c_groups = NULL; - } - } static void diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 137734c104..c34077e224 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -33,6 +33,8 @@ int deny_severity = LOG_NOTICE; #define LDAPI_MOD_URLEXT "x-mod" #endif /* LDAP_PF_LOCAL */ +int slap_inet4or6 = AF_UNSPEC; + /* globals */ time_t starttime; ber_socket_t dtblsize; @@ -237,7 +239,7 @@ void slapd_remove(ber_socket_t s, int wake) { FD_CLR( s, &slap_daemon.sd_writers ); ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); - WAKE_LISTENER(wake || slapd_gentle_shutdown < 0); + WAKE_LISTENER(wake || slapd_gentle_shutdown == 2); } void slapd_clr_write(ber_socket_t s, int wake) { @@ -414,7 +416,7 @@ static int slap_get_listener_addresses( memset( &hints, '\0', sizeof(hints) ); hints.ai_flags = AI_PASSIVE; hints.ai_socktype = SOCK_STREAM; - hints.ai_family = AF_UNSPEC; + hints.ai_family = slap_inet4or6; snprintf(serv, sizeof serv, "%d", port); if ( (err = getaddrinfo(host, serv, &hints, &res)) ) { @@ -1114,17 +1116,18 @@ slapd_daemon_task( if( slapd_gentle_shutdown ) { ber_socket_t active; - if( slapd_gentle_shutdown > 0 ) { + if( slapd_gentle_shutdown == 1 ) { Debug( LDAP_DEBUG_ANY, "slapd gentle shutdown\n", 0, 0, 0 ); close_listeners( 1 ); - slapd_gentle_shutdown = -1; + global_restrictops |= SLAP_RESTRICT_OP_WRITES; + slapd_gentle_shutdown = 2; } ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); active = slap_daemon.sd_nactives; ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); if( active == 0 ) { - slapd_shutdown = -1; + slapd_shutdown = 2; break; } } @@ -1780,7 +1783,7 @@ slapd_daemon_task( #endif } - if( slapd_gentle_shutdown >= 0 ) + if( slapd_gentle_shutdown != 2 ) close_listeners ( 0 ); free ( slap_listeners ); slap_listeners = NULL; diff --git a/servers/slapd/entry.c b/servers/slapd/entry.c index 8a1106e974..f5829d395a 100644 --- a/servers/slapd/entry.c +++ b/servers/slapd/entry.c @@ -305,6 +305,8 @@ entry2str( int i; ber_len_t tmplen; + assert( e != NULL ); + /* * In string format, an entry looks like this: * dn: \n diff --git a/servers/slapd/main.c b/servers/slapd/main.c index b48f222450..cea889cf7a 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -96,6 +96,8 @@ usage( char *name ) fprintf( stderr, "usage: %s options\n", name ); fprintf( stderr, + "\t-4\t\tIPv4 only\n" + "\t-6\t\tIPv6 only\n" "\t-d level\tDebug level" "\n" "\t-f filename\tConfiguration file\n" #if defined(HAVE_SETUID) && defined(HAVE_SETGID) @@ -216,6 +218,9 @@ int main( int argc, char **argv ) while ( (i = getopt( argc, argv, "d:f:h:s:n:t" +#if LDAP_PF_INET6 + "46" +#endif #ifdef HAVE_CHROOT "r:" #endif @@ -227,6 +232,15 @@ int main( int argc, char **argv ) #endif )) != EOF ) { switch ( i ) { +#ifdef LDAP_PF_INET6 + case '4': + slap_inet4or6 = AF_INET; + break; + case '6': + slap_inet4or6 = AF_INET6; + break; +#endif + case 'h': /* listen URLs */ if ( urls != NULL ) free( urls ); urls = ch_strdup( optarg ); diff --git a/servers/slapd/passwd.c b/servers/slapd/passwd.c index 94cbeac0cf..06cc1586a8 100644 --- a/servers/slapd/passwd.c +++ b/servers/slapd/passwd.c @@ -29,6 +29,7 @@ int passwd_extop( const char **text, BerVarray *refs ) { + Backend *be; int rc; assert( reqoid != NULL ); @@ -39,31 +40,44 @@ int passwd_extop( return LDAP_STRONG_AUTH_REQUIRED; } - if( conn->c_authz_backend == NULL || !conn->c_authz_backend->be_extended ) { + ldap_pvt_thread_mutex_lock( &conn->c_mutex ); + be = conn->c_authz_backend; + ldap_pvt_thread_mutex_unlock( &conn->c_mutex ); + + if( be && !be->be_extended ) { *text = "operation not supported for current user"; return LDAP_UNWILLING_TO_PERFORM; } { struct berval passwd = BER_BVC( LDAP_EXOP_MODIFY_PASSWD ); - - rc = backend_check_restrictions( conn->c_authz_backend, - conn, op, &passwd, text ); + rc = backend_check_restrictions( be, conn, op, &passwd, text ); } if( rc != LDAP_SUCCESS ) { return rc; } - if( conn->c_authz_backend->be_update_ndn.bv_len ) { + if( be == NULL ) { +#ifdef HAVE_CYRUS_SASL + rc = slap_sasl_setpass( conn, op, + reqoid, reqdata, + rspoid, rspdata, rspctrls, + text ); +#else + *text = "no authz backend"; + rc = LDAP_OTHER; +#endif + + } else if( be->be_update_ndn.bv_len ) { /* we SHOULD return a referral in this case */ - *refs = referral_rewrite( conn->c_authz_backend->be_update_refs, + *refs = referral_rewrite( be->be_update_refs, NULL, NULL, LDAP_SCOPE_DEFAULT ); rc = LDAP_REFERRAL; } else { - rc = conn->c_authz_backend->be_extended( - conn->c_authz_backend, conn, op, + rc = be->be_extended( + be, conn, op, reqoid, reqdata, rspoid, rspdata, rspctrls, text, refs ); @@ -88,6 +102,11 @@ int slap_passwd_parse( struct berval *reqdata, return LDAP_SUCCESS; } + if( reqdata->bv_len == 0 ) { + *text = "empty request data field"; + return LDAP_PROTOCOL_ERROR; + } + /* ber_init2 uses reqdata directly, doesn't allocate new buffers */ ber_init2( ber, reqdata, 0 ); @@ -204,7 +223,6 @@ decoding_error: (long) len, 0, 0 ); #endif - *text = "data decoding error"; rc = LDAP_PROTOCOL_ERROR; } diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index f80e53969a..98aab651f7 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -830,6 +830,24 @@ LDAP_SLAPD_F (int) slap_sasl_bind LDAP_P(( struct berval *cred, struct berval *edn, slap_ssf_t *ssf )); +LDAP_SLAPD_F (int) slap_sasl_setpass( + Connection *conn, + Operation *op, + const char *reqoid, + struct berval *reqdata, + char **rspoid, + struct berval **rspdata, + LDAPControl *** rspctrls, + const char **text ); + +LDAP_SLAPD_F (int) slap_sasl_config( + int cargc, + char **cargv, + char *line, + const char *fname, + int lineno ); + + /* * saslauthz.c */ @@ -842,6 +860,8 @@ LDAP_SLAPD_F (int) slap_sasl_authorized LDAP_P(( struct berval *authzid )); LDAP_SLAPD_F (int) slap_sasl_regexp_config LDAP_P(( const char *match, const char *replace )); +LDAP_SLAPD_F (int) slap_sasl_setpolicy LDAP_P(( const char * )); + /* * schema.c @@ -1028,9 +1048,6 @@ LDAP_SLAPD_V (int) ldap_syslog; LDAP_SLAPD_V (struct berval) default_search_base; LDAP_SLAPD_V (struct berval) default_search_nbase; -LDAP_SLAPD_V (int) nSaslRegexp; -LDAP_SLAPD_V (SaslRegexp_t*) SaslRegexp; - LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) num_sent_mutex; LDAP_SLAPD_V (unsigned long) num_bytes_sent; LDAP_SLAPD_V (unsigned long) num_pdu_sent; diff --git a/servers/slapd/result.c b/servers/slapd/result.c index 140e4a6d6c..b6099f4cf2 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -236,14 +236,14 @@ send_ldap_response( } } if (conn->c_is_udp && op->o_protocol == LDAP_VERSION2) { - rc = ber_printf( ber, "{is{t{ess", + rc = ber_printf( ber, "{is{t{ess" /*"}}}"*/, msgid, "", tag, err, matched == NULL ? "" : matched, text == NULL ? "" : text ); } else #endif { - rc = ber_printf( ber, "{it{ess", + rc = ber_printf( ber, "{it{ess" /*"}}"*/, msgid, tag, err, matched == NULL ? "" : matched, text == NULL ? "" : text ); @@ -275,11 +275,11 @@ send_ldap_response( } if( rc != -1 ) { - rc = ber_printf( ber, "N}N}" ); + rc = ber_printf( ber, /*"{{"*/ "N}N}" ); } #ifdef LDAP_CONNECTIONLESS if( conn->c_is_udp && op->o_protocol == LDAP_VERSION2 && rc != -1 ) { - rc = ber_printf( ber, "N}" ); + rc = ber_printf( ber, /*"{"*/ "N}" ); } #endif @@ -1139,11 +1139,11 @@ send_search_entry( if ( bytes < 0 ) { #ifdef NEW_LOGGING LDAP_LOG(( "operation", LDAP_LEVEL_ERR, - "send_ldap_response: conn %lu ber write failed.\n", + "send_search_entry: conn %lu ber write failed.\n", op->o_connid )); #else Debug( LDAP_DEBUG_ANY, - "send_ldap_response: ber write failed\n", + "send_search_entry: ber write failed\n", 0, 0, 0 ); #endif diff --git a/servers/slapd/root_dse.c b/servers/slapd/root_dse.c index 5db42c0f70..e814c5155d 100644 --- a/servers/slapd/root_dse.c +++ b/servers/slapd/root_dse.c @@ -58,6 +58,8 @@ root_dse_info( = slap_schema.si_ad_supportedSASLMechanisms; AttributeDescription *ad_supportedFeatures = slap_schema.si_ad_supportedFeatures; + AttributeDescription *ad_monitorContext + = slap_schema.si_ad_monitorContext; AttributeDescription *ad_ref = slap_schema.si_ad_ref; @@ -77,10 +79,6 @@ root_dse_info( e->e_private = NULL; - vals[0].bv_val = "OpenLDAProotDSE"; - vals[0].bv_len = sizeof("OpenLDAProotDSE")-1; - attr_merge( e, ad_structuralObjectClass, vals ); - vals[0].bv_val = "top"; vals[0].bv_len = sizeof("top")-1; attr_merge( e, ad_objectClass, vals ); @@ -88,8 +86,14 @@ root_dse_info( vals[0].bv_val = "OpenLDAProotDSE"; vals[0].bv_len = sizeof("OpenLDAProotDSE")-1; attr_merge( e, ad_objectClass, vals ); + attr_merge( e, ad_structuralObjectClass, vals ); for ( i = 0; i < nbackends; i++ ) { + if ( backends[i].be_flags & SLAP_BFLAG_MONITOR ) { + vals[0] = backends[i].be_suffix[0]; + attr_merge( e, ad_monitorContext, vals ); + continue; + } if ( backends[i].be_flags & SLAP_BFLAG_GLUE_SUBORDINATE ) { continue; } diff --git a/servers/slapd/sasl.c b/servers/slapd/sasl.c index ba1cdb0c2f..13088088af 100644 --- a/servers/slapd/sasl.c +++ b/servers/slapd/sasl.c @@ -44,6 +44,171 @@ static sasl_security_properties_t sasl_secprops; +int slap_sasl_config( int cargc, char **cargv, char *line, + const char *fname, int lineno ) +{ + /* set SASL proxy authorization policy */ + if ( strcasecmp( cargv[0], "sasl-authz-policy" ) == 0 ) { + if ( cargc != 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: missing policy in \"sasl-authz-policy \" line\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing policy in \"sasl-authz-policy \" line\n", + fname, lineno, 0 ); +#endif + + return( 1 ); + } + if ( slap_sasl_setpolicy( cargv[1] ) ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"sasl-authz-policy " + "\" line.\n", + fname, lineno, cargv[1] )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: unable " + "to parse value \"%s\" " + "in \"sasl-authz-policy " + "\" line\n", + fname, lineno, cargv[1] ); +#endif + return( 1 ); + } + + + /* set SASL host */ + } else if ( strcasecmp( cargv[0], "sasl-host" ) == 0 ) { + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: missing host in \"sasl-host \" line\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing host in \"sasl-host \" line\n", + fname, lineno, 0 ); +#endif + + return( 1 ); + } + + if ( global_host != NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: already set sasl-host!\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: already set sasl-host!\n", + fname, lineno, 0 ); +#endif + + return 1; + + } else { + global_host = ch_strdup( cargv[1] ); + } + + /* set SASL realm */ + } else if ( strcasecmp( cargv[0], "sasl-realm" ) == 0 ) { + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: missing realm in \"sasl-realm \" line.\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing realm in \"sasl-realm \" line\n", + fname, lineno, 0 ); +#endif + + return( 1 ); + } + + if ( global_realm != NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: already set sasl-realm!\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: already set sasl-realm!\n", + fname, lineno, 0 ); +#endif + + return 1; + + } else { + global_realm = ch_strdup( cargv[1] ); + } + + } else if ( !strcasecmp( cargv[0], "sasl-regexp" ) + || !strcasecmp( cargv[0], "saslregexp" ) ) + { + int rc; + if ( cargc != 3 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: need 2 args in " + "\"saslregexp \"\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: need 2 args in \"saslregexp \"\n", + fname, lineno, 0 ); +#endif + + return( 1 ); + } + rc = slap_sasl_regexp_config( cargv[1], cargv[2] ); + if ( rc ) { + return rc; + } + + /* SASL security properties */ + } else if ( strcasecmp( cargv[0], "sasl-secprops" ) == 0 ) { + char *txt; + + if ( cargc < 2 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: missing flags in " + "\"sasl-secprops \" line\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: missing flags in \"sasl-secprops \" line\n", + fname, lineno, 0 ); +#endif + + return 1; + } + + txt = slap_sasl_secprops( cargv[1] ); + if ( txt != NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d sasl-secprops: %s\n", + fname, lineno, txt )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: sasl-secprops: %s\n", + fname, lineno, txt ); +#endif + + return 1; + } + } + + return LDAP_SUCCESS; +} + static int slap_sasl_log( void *context, @@ -602,17 +767,26 @@ slap_sasl_authorize( "authcid=\"%s\" authzid=\"%s\"\n", conn ? conn->c_connid : -1, auth_identity, requested_user ); #endif + if ( conn->c_sasl_dn.bv_val ) { + ch_free( conn->c_sasl_dn.bv_val ); + conn->c_sasl_dn.bv_val = NULL; + conn->c_sasl_dn.bv_len = 0; + } prop_getnames( props, slap_propnames, auxvals ); + AC_MEMCPY( &authcDN, auxvals[0].values[0], sizeof(authcDN) ); + /* Nothing to do if no authzID was given */ - if ( !auxvals[1].name || !auxvals[1].values ) + if ( !auxvals[1].name || !auxvals[1].values ) { + conn->c_sasl_dn = authcDN; return SASL_OK; + } - AC_MEMCPY( &authcDN, auxvals[0].values[0], sizeof(authcDN) ); AC_MEMCPY( &authzDN, auxvals[1].values[0], sizeof(authzDN) ); rc = slap_sasl_authorized( &authcDN, &authzDN ); + ch_free( authcDN.bv_val ); if ( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_INFO, @@ -625,9 +799,12 @@ slap_sasl_authorize( #endif sasl_seterror( sconn, 0, "not authorized" ); + ch_free( authzDN.bv_val ); return SASL_NOAUTHZ; } + conn->c_sasl_dn = authzDN; + #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY, "slap_sasl_authorize: conn %d authorization allowed\n", @@ -654,6 +831,11 @@ slap_sasl_authorize( char *realm; *user = NULL; + if ( conn->c_sasl_dn.bv_val ) { + ch_free( conn->c_sasl_dn.bv_val ); + conn->c_sasl_dn.bv_val = NULL; + conn->c_sasl_dn.bv_len = 0; + } #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY, @@ -700,7 +882,7 @@ slap_sasl_authorize( "Using authcDN=%s\n", (long) (conn ? conn->c_connid : -1), authcDN.bv_val,0 ); #endif - *user = authcDN.bv_val; + conn->c_sasl_dn = authcDN; *errstr = NULL; return SASL_OK; } @@ -712,6 +894,7 @@ slap_sasl_authorize( } rc = slap_sasl_authorized( &authcDN, &authzDN ); + ch_free( authcDN.bv_val ); if( rc ) { #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_INFO, @@ -724,7 +907,6 @@ slap_sasl_authorize( #endif *errstr = "not authorized"; - ch_free( authcDN.bv_val ); ch_free( authzDN.bv_val ); return SASL_NOAUTHZ; } @@ -739,9 +921,7 @@ slap_sasl_authorize( (long) (conn ? conn->c_connid : -1), 0, 0 ); #endif - - ch_free( authcDN.bv_val ); - *user = authzDN.bv_val; + conn->c_sasl_dn = authzDN; *errstr = NULL; return SASL_OK; } @@ -1169,18 +1349,11 @@ int slap_sasl_bind( response.bv_len = reslen; if ( sc == SASL_OK ) { -#if SASL_VERSION_MAJOR >= 2 - struct propctx *props = sasl_auxprop_getctx( ctx ); - struct propval vals[3]; sasl_ssf_t *ssf = NULL; - prop_getnames( props, slap_propnames, vals ); - - AC_MEMCPY( edn, vals[0].values[0], sizeof(*edn) ); - if ( vals[1].name && vals[1].values ) { - ch_free( edn->bv_val ); - AC_MEMCPY( edn, vals[1].values[0], sizeof(*edn) ); - } + *edn = conn->c_sasl_dn; + conn->c_sasl_dn.bv_val = NULL; + conn->c_sasl_dn.bv_len = 0; rc = LDAP_SUCCESS; @@ -1196,46 +1369,6 @@ int slap_sasl_bind( send_ldap_sasl( conn, op, rc, NULL, NULL, NULL, NULL, response.bv_len ? &response : NULL ); -#else - char *username = NULL; - - sc = sasl_getprop( ctx, - SASL_USERNAME, (SASL_CONST void **)&username ); - - if ( sc != SASL_OK ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "sasl", LDAP_LEVEL_ERR, - "slap_sasl_bind: getprop(USERNAME) failed: %d\n", sc )); -#else - Debug(LDAP_DEBUG_TRACE, - "slap_sasl_bind: getprop(USERNAME) failed!\n", - 0, 0, 0); -#endif - - - send_ldap_result( conn, op, rc = slap_sasl_err2ldap( sc ), - NULL, "no SASL username", NULL, NULL ); - - } else { - sasl_ssf_t *ssf = NULL; - - rc = LDAP_SUCCESS; - ber_str2bv( username, 0, 1, edn ); - - (void) sasl_getprop( ctx, SASL_SSF, (void *)&ssf ); - *ssfp = ssf ? *ssf : 0; - - if( *ssfp ) { - ldap_pvt_thread_mutex_lock( &conn->c_mutex ); - conn->c_sasl_layers++; - ldap_pvt_thread_mutex_unlock( &conn->c_mutex ); - } - - send_ldap_sasl( conn, op, rc, - NULL, NULL, NULL, NULL, - response.bv_len ? &response : NULL ); - } -#endif } else if ( sc == SASL_CONTINUE ) { send_ldap_sasl( conn, op, rc = LDAP_SASL_BIND_IN_PROGRESS, @@ -1281,3 +1414,90 @@ char* slap_sasl_secprops( const char *in ) return "SASL not supported"; #endif } + +#ifdef HAVE_CYRUS_SASL +int +slap_sasl_setpass( + Connection *conn, + Operation *op, + const char *reqoid, + struct berval *reqdata, + char **rspoid, + struct berval **rspdata, + LDAPControl *** rspctrls, + const char **text ) +{ + int rc; + struct berval id = { 0, NULL }; /* needs to come from connection */ + struct berval new = { 0, NULL }; + struct berval old = { 0, NULL }; + + assert( reqoid != NULL ); + assert( strcmp( LDAP_EXOP_MODIFY_PASSWD, reqoid ) == 0 ); + + rc = sasl_getprop( conn->c_sasl_context, SASL_USERNAME, + (SASL_CONST void **)&id.bv_val ); + + if( rc != SASL_OK ) { + *text = "unable to retrieve SASL username"; + rc = LDAP_OTHER; + goto done; + } + +#ifdef NEW_LOGGING + LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY, + "slap_sasl_setpass: \"%s\"\n", + id.bv_val ? id.bv_val : "" )); +#else + Debug( LDAP_DEBUG_ARGS, "==> ldbm_back_exop_passwd: \"%s\"\n", + id.bv_val ? id.bv_val : "", 0, 0 ); +#endif + + rc = slap_passwd_parse( reqdata, + NULL, &old, &new, text ); + + if( rc != LDAP_SUCCESS ) { + goto done; + } + + if( new.bv_len == 0 ) { + slap_passwd_generate(&new); + + if( new.bv_len == 0 ) { + *text = "password generation failed."; + rc = LDAP_OTHER; + goto done; + } + + *rspdata = slap_passwd_return( &new ); + } + +#if SASL_VERSION_MAJOR < 2 + rc = sasl_setpass( conn->c_sasl_context, + id.bv_val, new.bv_val, new.bv_len, 0, text ); +#else + rc = sasl_setpass( conn->c_sasl_context, id.bv_val, + old.bv_val, old.bv_len, new.bv_val, new.bv_len, 0 ); + if( rc != SASL_OK ) { + *text = sasl_errdetail( conn->c_sasl_context ); + } +#endif + switch(rc) { + case SASL_OK: + rc = LDAP_SUCCESS; + break; + + case SASL_NOCHANGE: + case SASL_NOMECH: + case SASL_DISABLED: + case SASL_PWLOCK: + case SASL_FAIL: + case SASL_BADPARAM: + default: + rc = LDAP_OTHER; + } + +done: + return rc; +} +#endif diff --git a/servers/slapd/saslauthz.c b/servers/slapd/saslauthz.c index d196a4f084..601d0245c8 100644 --- a/servers/slapd/saslauthz.c +++ b/servers/slapd/saslauthz.c @@ -30,6 +30,50 @@ #include +#define SASLREGEX_REPLACE 10 + +typedef struct sasl_uri { + struct berval dn; + struct berval filter; + int scope; +} SaslUri_t; + +typedef struct sasl_regexp { + char *sr_match; /* regexp match pattern */ + SaslUri_t sr_replace; /* regexp replace pattern */ + regex_t sr_workspace; /* workspace for regexp engine */ + regmatch_t sr_strings[SASLREGEX_REPLACE]; /* strings matching $1,$2 ... */ + int sr_dn_offset[SASLREGEX_REPLACE+2]; /* offsets of $1,$2... in *replace */ + int sr_fi_offset[SASLREGEX_REPLACE+2]; /* offsets of $1,$2... in *replace */ +} SaslRegexp_t; + +static int nSaslRegexp = 0; +static SaslRegexp_t *SaslRegexp = NULL; + +/* What SASL proxy authorization policies are allowed? */ +#define SASL_AUTHZ_NONE 0 +#define SASL_AUTHZ_FROM 1 +#define SASL_AUTHZ_TO 2 + +static int authz_policy = SASL_AUTHZ_NONE; + +int slap_sasl_setpolicy( const char *arg ) +{ + int rc = LDAP_SUCCESS; + + if ( strcasecmp( arg, "none" ) == 0 ) + authz_policy = SASL_AUTHZ_NONE; + else if ( strcasecmp( arg, "from" ) == 0 ) + authz_policy = SASL_AUTHZ_FROM; + else if ( strcasecmp( arg, "to" ) == 0 ) + authz_policy = SASL_AUTHZ_TO; + else if ( strcasecmp( arg, "both" ) == 0 ) + authz_policy = SASL_AUTHZ_FROM | SASL_AUTHZ_TO; + else + rc = LDAP_OTHER; + return rc; +} + /* URI format: ldap:///[?[][?[][?[]]]] */ static int slap_parseURI( struct berval *uri, @@ -81,7 +125,10 @@ is_dn: bv.bv_len = uri->bv_len - (bv.bv_val - uri->bv_val); return( LDAP_PROTOCOL_ERROR ); } - /* could check the hostname here */ + if ( ludp->lud_host && *ludp->lud_host ) { + /* host part should be empty */ + return( LDAP_PROTOCOL_ERROR ); + } /* Grab the scope */ *scope = ludp->lud_scope; @@ -357,21 +404,22 @@ static int sasl_sc_sasl2dn( BackendDB *be, Connection *conn, Operation *o, struct berval *ndn = o->o_callback->sc_private; /* We only want to be called once */ - if (ndn->bv_val) { + if( ndn->bv_val ) { free(ndn->bv_val); ndn->bv_val = NULL; + #ifdef NEW_LOGGING - LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1, - "slap_sasl2dn: search DN returned more than 1 entry\n" )); + LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1, + "slap_sasl2dn: search DN returned more than 1 entry\n" )); #else - Debug( LDAP_DEBUG_TRACE, - "slap_sasl2dn: search DN returned more than 1 entry\n", 0,0,0 ); + Debug( LDAP_DEBUG_TRACE, + "slap_sasl2dn: search DN returned more than 1 entry\n", 0,0,0 ); #endif return -1; - } else { - ber_dupbv(ndn, &e->e_nname); - return 0; } + + ber_dupbv(ndn, &e->e_nname); + return 0; } /* @@ -396,9 +444,10 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY, "slap_sasl2dn: converting SASL name %s to DN.\n", saslname->bv_val )); #else - Debug( LDAP_DEBUG_TRACE, - "==>slap_sasl2dn: Converting SASL name %s to a DN\n", saslname->bv_val, 0,0 ); + Debug( LDAP_DEBUG_TRACE, "==>slap_sasl2dn: " + "converting SASL name %s to a DN\n", saslname->bv_val, 0,0 ); #endif + dn->bv_val = NULL; dn->bv_len = 0; cb.sc_private = dn; @@ -414,8 +463,6 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn be = select_backend( &uri.dn, 0, 1 ); - conn->c_authz_backend = be; - /* Massive shortcut: search scope == base */ if( uri.scope == LDAP_SCOPE_BASE ) { *dn = uri.dn; @@ -426,16 +473,17 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1, - "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n", - uri.dn.bv_val, uri.scope )); + "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n", + uri.dn.bv_val, uri.scope )); #else Debug( LDAP_DEBUG_TRACE, "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n", uri.dn.bv_val, uri.scope, 0 ); #endif - if(( be == NULL ) || ( be->be_search == NULL)) + if(( be == NULL ) || ( be->be_search == NULL)) { goto FINISHED; + } suffix_alias( be, &uri.dn ); op.o_tag = LDAP_REQ_SEARCH; @@ -444,10 +492,14 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn op.o_callback = &cb; op.o_time = slap_get_time(); - (*be->be_search)( be, /*conn*/NULL, &op, /*base*/NULL, &uri.dn, - uri.scope, /*deref=*/1, /*sizelimit=*/1, /*time=*/0, filter, /*fstr=*/NULL, - /*attrs=*/NULL, /*attrsonly=*/0 ); + (*be->be_search)( be, NULL, &op, NULL, &uri.dn, + uri.scope, LDAP_DEREF_NEVER, 1, 0, + filter, NULL, NULL, 1 ); + if( dn->bv_len ) { + conn->c_authz_backend = be; + } + FINISHED: if( uri.dn.bv_len ) ch_free( uri.dn.bv_val ); if( uri.filter.bv_len ) ch_free( uri.filter.bv_val ); @@ -593,27 +645,21 @@ CONCLUDED: * The DNs should not have the dn: prefix */ static int -slap_sasl_check_authz(struct berval *searchDN, struct berval *assertDN, struct berval *attr, struct berval *authc) +slap_sasl_check_authz(struct berval *searchDN, struct berval *assertDN, AttributeDescription *ad, struct berval *authc) { - const char *errmsg; int i, rc; BerVarray vals=NULL; - AttributeDescription *ad=NULL; #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY, "slap_sasl_check_authz: does %s match %s rule in %s?\n", - assertDN->bv_val, attr->bv_val, searchDN->bv_val )); + assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val )); #else Debug( LDAP_DEBUG_TRACE, "==>slap_sasl_check_authz: does %s match %s rule in %s?\n", - assertDN->bv_val, attr->bv_val, searchDN->bv_val); + assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val); #endif - rc = slap_bv2ad( attr, &ad, &errmsg ); - if( rc != LDAP_SUCCESS ) - goto COMPLETE; - rc = backend_attribute( NULL, NULL, NULL, NULL, searchDN, ad, &vals ); if( rc != LDAP_SUCCESS ) goto COMPLETE; @@ -631,10 +677,10 @@ COMPLETE: #ifdef NEW_LOGGING LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY, - "slap_sasl_check_authz: %s check returning %s\n", attr->bv_val, rc )); + "slap_sasl_check_authz: %s check returning %s\n", ad->ad_cname.bv_val, rc )); #else Debug( LDAP_DEBUG_TRACE, - "<==slap_sasl_check_authz: %s check returning %d\n", attr->bv_val, rc, 0); + "<==slap_sasl_check_authz: %s check returning %d\n", ad->ad_cname.bv_val, rc, 0); #endif return( rc ); @@ -646,12 +692,6 @@ COMPLETE: * The DNs should not have the dn: prefix */ -static struct berval sasl_authz_src = { - sizeof(SASL_AUTHZ_SOURCE_ATTR)-1, SASL_AUTHZ_SOURCE_ATTR }; - -static struct berval sasl_authz_dst = { - sizeof(SASL_AUTHZ_DEST_ATTR)-1, SASL_AUTHZ_DEST_ATTR }; - int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN ) { int rc = LDAP_INAPPROPRIATE_AUTH; @@ -678,17 +718,21 @@ int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN ) } /* Check source rules */ - rc = slap_sasl_check_authz( authcDN, authzDN, &sasl_authz_src, - authcDN ); - if( rc == LDAP_SUCCESS ) { - goto DONE; + if( authz_policy & SASL_AUTHZ_TO ) { + rc = slap_sasl_check_authz( authcDN, authzDN, + slap_schema.si_ad_saslAuthzTo, authcDN ); + if( rc == LDAP_SUCCESS ) { + goto DONE; + } } /* Check destination rules */ - rc = slap_sasl_check_authz( authzDN, authcDN, &sasl_authz_dst, - authcDN ); - if( rc == LDAP_SUCCESS ) { - goto DONE; + if( authz_policy & SASL_AUTHZ_FROM ) { + rc = slap_sasl_check_authz( authzDN, authcDN, + slap_schema.si_ad_saslAuthzFrom, authcDN ); + if( rc == LDAP_SUCCESS ) { + goto DONE; + } } rc = LDAP_INAPPROPRIATE_AUTH; diff --git a/servers/slapd/schema_prep.c b/servers/slapd/schema_prep.c index d06b32fe29..6262c414fb 100644 --- a/servers/slapd/schema_prep.c +++ b/servers/slapd/schema_prep.c @@ -339,6 +339,15 @@ static struct slap_schema_ad_map { "USAGE dSAOperation )", rootDseAttribute, 0, NULL, NULL, NULL, offsetof(struct slap_internal_schema, si_ad_supportedFeatures) }, + { "monitorContext", "( 1.3.6.1.4.1.4203.666.1.10 " + "NAME 'monitorContext' " + "DESC 'monitor context' " + "EQUALITY objectIdentifierMatch " + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 " + "SINGLE-VALUE NO-USER-MODIFICATION " + "USAGE dSAOperation )", + rootDseAttribute, SLAP_AT_HIDE, NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_monitorContext) }, { "vendorName", "( 1.3.6.1.1.4 NAME 'vendorName' " "DESC 'RFC3045: name of implementation vendor' " "EQUALITY 1.3.6.1.4.1.1466.109.114.1 " @@ -453,7 +462,22 @@ static struct slap_schema_ad_map { "SINGLE-VALUE NO-USER-MODIFICATION USAGE dSAOperation )", NULL, SLAP_AT_HIDE, NULL, NULL, NULL, offsetof(struct slap_internal_schema, si_ad_children) }, - + { "saslAuthzTo", "( 1.3.6.1.4.1.4203.666.1.8 " + "NAME 'saslAuthzTo' " + "DESC 'SASL proxy authorization targets' " + "EQUALITY caseExactMatch " + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 " + "USAGE distributedOperation )", + NULL, SLAP_AT_HIDE, NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_saslAuthzTo) }, + { "saslAuthzFrom", "( 1.3.6.1.4.1.4203.666.1.9 " + "NAME 'saslAuthzFrom' " + "DESC 'SASL proxy authorization sources' " + "EQUALITY caseExactMatch " + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 " + "USAGE distributedOperation )", + NULL, SLAP_AT_HIDE, NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_saslAuthzFrom) }, #ifdef SLAPD_ACI_ENABLED { "OpenLDAPaci", "( 1.3.6.1.4.1.4203.666.1.5 " "NAME 'OpenLDAPaci' " diff --git a/servers/slapd/schemaparse.c b/servers/slapd/schemaparse.c index 10e92f827c..1f9138753b 100644 --- a/servers/slapd/schemaparse.c +++ b/servers/slapd/schemaparse.c @@ -22,6 +22,7 @@ static void oc_usage(void); static void at_usage(void); static char *const err2text[] = { + "Success", "Out of memory", "ObjectClass not found", "ObjectClass inappropriate SUPerior", @@ -46,7 +47,7 @@ static char *const err2text[] = { char * scherr2str(int code) { - if ( code < 0 || SLAP_SCHERR_LAST < code ) { + if ( code < 0 || SLAP_SCHERR_LAST <= code ) { return "Unknown error"; } else { return err2text[code]; diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h index a4b02c75bd..4284b9dfdd 100644 --- a/servers/slapd/slap.h +++ b/servers/slapd/slap.h @@ -250,6 +250,10 @@ typedef union slap_sockaddr { #endif } Sockaddr; +#ifdef LDAP_PF_INET6 +extern int slap_inet4or6; +#endif + typedef struct slap_oid_macro { struct berval som_oid; char **som_names; @@ -590,6 +594,7 @@ struct slap_internal_schema { AttributeDescription *si_ad_supportedLDAPVersion; AttributeDescription *si_ad_supportedSASLMechanisms; AttributeDescription *si_ad_supportedFeatures; + AttributeDescription *si_ad_monitorContext; AttributeDescription *si_ad_vendorName; AttributeDescription *si_ad_vendorVersion; @@ -614,6 +619,8 @@ struct slap_internal_schema { /* Access Control Internals */ AttributeDescription *si_ad_entry; AttributeDescription *si_ad_children; + AttributeDescription *si_ad_saslAuthzTo; + AttributeDescription *si_ad_saslAuthzFrom; #ifdef SLAPD_ACI_ENABLED AttributeDescription *si_ad_aci; #endif @@ -1161,7 +1168,9 @@ struct slap_backend_db { #define SLAP_DISALLOW_BIND_ANON 0x0001U /* no anonymous */ #define SLAP_DISALLOW_BIND_SIMPLE 0x0002U /* simple authentication */ -#define SLAP_DISALLOW_BIND_KRBV4 0x0004U /* Kerberos V4 authentication */ +#define SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED \ + 0x0004U /* unprotected simple auth */ +#define SLAP_DISALLOW_BIND_KRBV4 0x0008U /* Kerberos V4 authentication */ #define SLAP_DISALLOW_TLS_2_ANON 0x0010U /* StartTLS -> Anonymous */ #define SLAP_DISALLOW_TLS_AUTHC 0x0020U /* TLS while authenticated */ @@ -1541,7 +1550,7 @@ typedef struct slap_conn { /* only can be changed by binding thread */ int c_sasl_bind_in_progress; /* multi-op bind in progress */ struct berval c_sasl_bind_mech; /* mech in progress */ - struct berval c_cdn; + struct berval c_sasl_dn; /* temporary storage */ /* authorization backend */ Backend *c_authz_backend; @@ -1596,26 +1605,6 @@ typedef struct slap_conn { #define Statslog( level, fmt, connid, opid, arg1, arg2, arg3 ) #endif - -#define SASLREGEX_REPLACE 10 -#define SASL_AUTHZ_SOURCE_ATTR "saslAuthzTo" -#define SASL_AUTHZ_DEST_ATTR "saslAuthzFrom" - -typedef struct sasl_uri { - struct berval dn; - struct berval filter; - int scope; -} SaslUri_t; - -typedef struct sasl_regexp { - char *sr_match; /* regexp match pattern */ - SaslUri_t sr_replace; /* regexp replace pattern */ - regex_t sr_workspace; /* workspace for regexp engine */ - regmatch_t sr_strings[SASLREGEX_REPLACE]; /* strings matching $1,$2 ... */ - int sr_dn_offset[SASLREGEX_REPLACE+2]; /* offsets of $1,$2... in *replace */ - int sr_fi_offset[SASLREGEX_REPLACE+2]; /* offsets of $1,$2... in *replace */ -} SaslRegexp_t; - /* * listener; need to access it from monitor backend */ diff --git a/servers/slapd/tools/mimic.c b/servers/slapd/tools/mimic.c index 3db426bac4..a6c9ebb3ae 100644 --- a/servers/slapd/tools/mimic.c +++ b/servers/slapd/tools/mimic.c @@ -140,15 +140,27 @@ int slap_sasl_destroy(void) return LDAP_SUCCESS; } -char * slap_sasl_secprops( const char *in ) +int slap_sasl_setpass( + Connection *conn, + Operation *op, + const char *reqoid, + struct berval *reqdata, + char **rspoid, + struct berval **rspdata, + LDAPControl *** rspctrls, + const char **text ) { - return NULL; + return LDAP_SUCCESS; } - -int slap_sasl_regexp_config( const char *match, const char *replace ) +int slap_sasl_config( + int cargc, + char **cargv, + char *line, + const char *fname, + int lineno ) { - return(0); + return LDAP_SUCCESS; } diff --git a/tests/Makefile.in b/tests/Makefile.in new file mode 100644 index 0000000000..bbbbc87fef --- /dev/null +++ b/tests/Makefile.in @@ -0,0 +1,64 @@ +# $OpenLDAP$ +## Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. +## COPYING RESTRICTIONS APPLY, see COPYRIGHT file +## +## tests Makefile.in for OpenLDAP +SUBDIRS= progs +BUILD_LDBM=@BUILD_LDBM@ +BUILD_BDB=@BUILD_BDB@ +BUILD_MONITOR=@BUILD_MONITOR@ + +test: tests +tests: bdb ldbm + +bdb: test-bdb +test-bdb: FORCE + @-$(LN_S) $(srcdir)/data . + @-$(LN_S) $(top_srcdir)/servers/slapd/schema . + @-$(LN_S) ../libraries/liblunicode ucdata + @if test "$(BUILD_BDB)" = "yes" ; then \ + echo "Initiating LDAP tests for BDB..." ; \ + $(MKDIR) test-db test-repl || true; \ + $(srcdir)/scripts/all $(srcdir) bdb $(BUILD_MONITOR) ; \ + else \ + echo "run configure with --enable-bdb" ; \ + fi + +ldbm: test-ldbm +test-ldbm: FORCE + @-$(LN_S) $(srcdir)/data . + @-$(LN_S) $(top_srcdir)/servers/slapd/schema . + @-$(LN_S) ../libraries/liblunicode ucdata + @if test "$(BUILD_LDBM)" = "yes" ; then \ + echo "Initiating LDAP tests for LDBM..." ; \ + $(MKDIR) test-db test-repl || true; \ + $(srcdir)/scripts/all $(srcdir) ldbm $(BUILD_MONITOR); \ + else \ + echo "run configure with --enable-ldbm" ; \ + fi + +passwd: test-passwd +test-passwd: FORCE + @-$(LN_S) $(srcdir)/data . + @-$(LN_S) $(top_srcdir)/servers/slapd/schema . + @-$(LN_S) ../libraries/liblunicode ucdata + @echo "Initiating LDAP tests..." + @-$(MKDIR) test-db test-repl || true + @$(srcdir)/scripts/passwd-search $(srcdir) passwd + +test-nis-schema: test-nis-schema-ldbm +test-nis-schema-ldbm: + @-$(LN_S) $(srcdir)/data . + @-$(LN_S) $(top_srcdir)/servers/slapd/schema . + @-$(LN_S) ../libraries/liblunicode ucdata + @echo "Initiating LDAP server with NIS schema & ldbm backend..."; \ + $(MKDIR) test-db test-repl ; \ + $(srcdir)/scripts/startup_nis_ldap_server.sh $(srcdir) ldbm + +clean-local: FORCE + -$(RM) -r test-db/[!C]* test-repl/[!C]* *leak *gmon *core + +veryclean-local: FORCE + @-$(RM) data schema ucdata + -$(RM) -r test-db test-repl + diff --git a/tests/data/slapd-schema.conf b/tests/data/slapd-schema.conf index fa715ef1c7..055e5fe145 100644 --- a/tests/data/slapd-schema.conf +++ b/tests/data/slapd-schema.conf @@ -32,3 +32,5 @@ directory ./test-db #suffix "dc=example,dc=com" #directory ./test-repl #index objectClass eq + +#monitor#database monitor diff --git a/tests/scripts/all b/tests/scripts/all index 451c739caa..85cb1a0edb 100755 --- a/tests/scripts/all +++ b/tests/scripts/all @@ -1,23 +1,49 @@ -#!/bin/sh +#! /bin/sh +# $OpenLDAP$ + +# disable LDAP initialization +LDAPNOINIT=true; export LDAPNOINIT echo ">>>>> Executing all LDAP tests..." -if [ $# -eq 0 ]; then - SCRIPTDIR="." +if test $# -eq 0 ; then + SRCDIR="." +else + SRCDIR=$1; shift +fi + +echo ">>>>> Test Directory: $SRCDIR" + +if test $# -eq 0 ; then + BACKEND=bdb else - SCRIPTDIR=$1; shift + BACKEND=$1; shift fi -for i in $SCRIPTDIR/test*; do - CMD=$i $* - echo ">>>>> Starting $CMD ..." - $CMD +echo ">>>>> Backend: $BACKEND" + +if test $# -eq 0 ; then + MONITOR=no +else + MONITOR=$1; shift +fi + +SHTOOL="$SRCDIR/../build/shtool" + +TB=`$SHTOOL echo -e "%B"` +TN=`$SHTOOL echo -e "%b"` + +for CMD in $SRCDIR/scripts/test*; do + echo ">>>>> Starting ${TB}`basename $CMD`${TN} ..." + $CMD $SRCDIR $BACKEND $MONITOR RC=$? - if [ $RC -eq 0 ]; then - echo ">>>>> $CMD completed OK." + if test $RC -eq 0 ; then + echo ">>>>> $CMD completed ${TB}OK${TN}." else - echo ">>>>> $CMD failed (exit $RC)" + echo ">>>>> $CMD ${TB}failed${TN} (exit $RC)" exit $RC fi - echo + echo ">>>>> waiting 10 seconds for things to exit" + sleep 10 + echo "" done diff --git a/tests/scripts/conf.sh b/tests/scripts/conf.sh index afdaa5c693..703b199f4b 100755 --- a/tests/scripts/conf.sh +++ b/tests/scripts/conf.sh @@ -1,3 +1,8 @@ #! /bin/sh # $OpenLDAP$ -sed -e "s/@BACKEND@/$BACKEND/" -e "s/^#$BACKEND#//" +if [ x"$MONITORDB" = x"yes" ] ; then + MON=monitor +else + MON=nomonitor +fi +sed -e "s/@BACKEND@/$BACKEND/" -e "s/^#$BACKEND#//" -e "s/^#$MON#//" diff --git a/tests/scripts/test000-rootdse b/tests/scripts/test000-rootdse new file mode 100755 index 0000000000..b407afb309 --- /dev/null +++ b/tests/scripts/test000-rootdse @@ -0,0 +1,71 @@ +#! /bin/sh +# $OpenLDAP$ + +SRCDIR="." +if test $# -ge 1 ; then + SRCDIR=$1; shift +fi +BACKEND=bdb +if test $# -ge 1 ; then + BACKEND=$1; shift +fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi + +WAIT=0 +if test $# -ge 1 ; then + WAIT=1; shift +fi + +echo "running defines.sh" +. $SRCDIR/scripts/defines.sh + +echo "Datadir is $DATADIR" + +echo "Cleaning up in $DBDIR..." + +rm -f $DBDIR/[!C]* + +echo "Starting slapd on TCP/IP port $PORT..." +. $CONFFILTER $BACKEND $MONITORDB < $SCHEMACONF > $DBCONF +$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & +PID=$! +if test $WAIT != 0 ; then + echo PID $PID + read foo +fi + +echo "Using ldapsearch to retrieve the root DSE..." +for i in 0 1 2 3 4 5; do + $LDAPSEARCH -b "" -s base -h $LOCALHOST -p $PORT 'extensibleObject' > $SEARCHOUT 2>&1 + RC=$? + if test $RC = 1 ; then + echo "Waiting 5 seconds for slapd to start..." + sleep 5 + fi +done + +if test $RC = 0 -a $MONITORDB = yes ; then + echo "Using ldapsearch to retrieve the cn=Monitor..." + $LDAPSEARCH -b "cn=Monitor" -s base -h $LOCALHOST -p $PORT 'extensibleObject' >> $SEARCHOUT 2>&1 + RC=$? +fi + +kill -HUP $PID + +cat $SEARCHOUT + +if test $RC != 0 ; then + echo ">>>>> Test failed" +else + if grep "TLS:" $SEARCHOUT; then + RC=-1 + else + echo ">>>>> Test succeeded" + fi +fi + + +exit $RC diff --git a/tests/scripts/test001-slapadd b/tests/scripts/test001-slapadd index d22e04c8e0..de2f05a331 100755 --- a/tests/scripts/test001-slapadd +++ b/tests/scripts/test001-slapadd @@ -1,30 +1,55 @@ -#!/bin/sh +#! /bin/sh +# $OpenLDAP$ -. scripts/defines.sh +SRCDIR="." +if test $# -ge 1 ; then + SRCDIR=$1; shift +fi +BACKEND=bdb +if test $# -ge 1 ; then + BACKEND=$1; shift +fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi +WAIT=0 +if test $# -ge 1 ; then + WAIT=1; shift +fi +echo "running defines.sh" +. $SRCDIR/scripts/defines.sh + +echo "Datadir is $DATADIR" echo "Cleaning up in $DBDIR..." -rm -f $DBDIR/* +rm -f $DBDIR/[!C]* -echo "Running ldif2ldbm to build slapd database..." -$LDIF2LDBM -f $CONF -i $LDIF -e ../servers/slapd/tools +echo "Running slapadd to build slapd database..." +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $ADDCONF +$SLAPADD -f $ADDCONF -l $LDIFORDERED RC=$? -if [ $RC != 0 ]; then - echo "ldif2ldbm failed!" +if test $RC != 0 ; then + echo "slapadd failed ($RC)!" exit $RC fi echo "Starting slapd on TCP/IP port $PORT..." -$SLAPD -f $CONF -p $PORT -d 1 > /dev/null 2>&1 & +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF +$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! +if test $WAIT != 0 ; then + echo PID $PID + read foo +fi echo "Using ldapsearch to retrieve all the entries..." for i in 0 1 2 3 4 5; do - $LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \ - 'objectClass=*' > $SEARCHOUT 2>&1 + $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT > $SEARCHOUT 2>&1 RC=$? - if [ $RC = 1 ]; then + if test $RC = 1 ; then echo "Waiting 5 seconds for slapd to start..." sleep 5 fi @@ -32,15 +57,22 @@ done kill -HUP $PID -if [ $RC != 0 ]; then - echo "ldapsearch failed!" +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" exit $RC fi -echo "Comparing retrieved entries to LDIF file used to create database" -cmp $SEARCHOUT $LDIF -if [ $? != 0 ]; then +echo "Filtering ldapsearch results..." +. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT +echo "Filtering original ldif used to create database..." +. $LDIFFILTER < $LDIF > $LDIFFLT +echo "Comparing filter output..." +$CMP $SEARCHFLT $LDIFFLT > $CMPOUT + +if test $? != 0 ; then echo "comparison failed - database was not created correctly" + echo $SEARCHFLT $LDIFFLT + $DIFF $SEARCHFLT $LDIFFLT exit 1 fi diff --git a/tests/scripts/test002-populate b/tests/scripts/test002-populate index dd785f0944..3d6fea0806 100755 --- a/tests/scripts/test002-populate +++ b/tests/scripts/test002-populate @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Starting slapd on TCP/IP port $PORT..." -. $CONFFILTER $BACKEND < $CONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test003-search b/tests/scripts/test003-search index 94121d32f4..c69cc2d797 100755 --- a/tests/scripts/test003-search +++ b/tests/scripts/test003-search @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Running slapadd to build slapd database..." -. $CONFFILTER $BACKEND < $MCONF > $ADDCONF +. $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF $SLAPADD -f $ADDCONF -l $LDIFORDERED RC=$? if test $RC != 0 ; then @@ -31,7 +35,7 @@ if test $RC != 0 ; then fi echo "Running slapindex to index slapd database..." -. $CONFFILTER $BACKEND < $CONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF $SLAPINDEX -f $DBCONF RC=$? if test $RC != 0 ; then diff --git a/tests/scripts/test004-modify b/tests/scripts/test004-modify index 09a4fdfee1..d5571ae3a4 100755 --- a/tests/scripts/test004-modify +++ b/tests/scripts/test004-modify @@ -1,54 +1,86 @@ -#!/bin/sh +#! /bin/sh +# $OpenLDAP$ -. scripts/defines.sh +SRCDIR="." +if test $# -ge 1 ; then + SRCDIR=$1; shift +fi +BACKEND=bdb +if test $# -ge 1 ; then + BACKEND=$1; shift +fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi +WAIT=0 +if test $# -ge 1 ; then + WAIT=1; shift +fi + +echo "running defines.sh" +. $SRCDIR/scripts/defines.sh + +echo "running defines.sh $SRCDIR $BACKEND" +. $SRCDIR/scripts/defines.sh echo "Cleaning up in $DBDIR..." -rm -f $DBDIR/* +rm -f $DBDIR/[!C]* -echo "Running ldif2ldbm to build slapd database..." -$LDIF2LDBM -f $CONF -i $LDIF -e ../servers/slapd/tools +echo "Running slapadd to build slapd database..." +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF +$SLAPADD -f $DBCONF -l $LDIFORDERED RC=$? -if [ $RC != 0 ]; then - echo "ldif2ldbm failed!" +if test $RC != 0 ; then + echo "slapadd failed ($RC)!" exit $RC fi echo "Starting slapd on TCP/IP port $PORT..." -$SLAPD -f $CONF -p $PORT -d 1 > /dev/null 2>&1 & +$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! +if test $WAIT != 0 ; then + echo PID $PID + read foo +fi echo "Testing slapd modify operations..." for i in 0 1 2 3 4 5; do - $LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \ - 'cn=Manager' > /dev/null 2>&1 + $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \ + 'objectclass=*' > /dev/null 2>&1 RC=$? - if [ $RC = 1 ]; then + if test $RC = 1 ; then echo "Waiting 5 seconds for slapd to start..." sleep 5 fi done -if [ $RC != 0 ]; then - echo "ldapsearch failed!" +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" kill -HUP $PID exit $RC fi -cat /dev/null > $TESTOUT - echo "Testing modify, add, and delete..." -$LDAPMODIFY -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \ - /dev/null 2>&1 << EOMODS -dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US +$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \ + $TESTOUT 2>&1 << EOMODS +version: 1 + +# LEADING COMMENT AND WHITE SPACE + +dn: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michigan,c=US +# EMBEDDED COMMENT changetype: modify add: drink drink: Orange Juice -dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US +dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US changetype: modify -replace: multilinedescription -multilinedescription: The replaced multiLineDescription $ Blah Woof. +# EMBEDDED COMMENT + CONTINUED +replace: description +description: The replaced multiLineDescription $ Blah Woof. - replace: drink drink: Iced Tea @@ -56,71 +88,76 @@ drink: Mad Dog 20/20 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US delete: member -member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US -member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US +member: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=University of Michigan,c=US +member: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US - add: member -member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US -member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US +member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michigan,c=US +member: cn=James A Jones 1,ou=Alumni Association,ou=People,o=University of Michigan,c=US dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US changetype: modify delete: member +- +add: member +member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,o=University of Michigan,c=US -dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US +dn: cn=Gern Jensen,ou=Information Technology Division,ou=People,o=University of Michigan,c=US changetype: add objectclass: top objectclass: person -objectclass: organizationalPerson -objectclass: newPilotPerson -objectclass: umichPerson +objectclass: OpenLDAPperson cn: Gern Jensen +sn: Jensen +uid: gjensen title: Chief Investigator, ITD postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103 -seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US -uid: gjensen -krbname: gjensen@umich.edu -nobatchupdates: TRUE -onvacation: FALSE +seealso: cn=All Staff,ou=Groups,o=University of Michigan,c=US drink: Coffee homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104 -multilinedescription: Very odd +description: Very odd facsimiletelephonenumber: +1 313 555 7557 telephonenumber: +1 313 555 8343 mail: gjensen@mailgw.umich.edu homephone: +1 313 555 8844 -dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US +dn: cn=James A Jones 2,ou=Information Technology Division,ou=People,o=University of Michigan,c=US changetype: delete +# TRAILING COMMENT AND WHITE SPACE EOMODS RC=$? -if [ $RC != 0 ]; then - echo "ldapmodify failed!" +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" kill -HUP $PID exit $RC fi echo "Using ldapsearch to retrieve all the entries..." -$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \ - 'objectClass=*' | egrep -iv '^createtimestamp:|^modifytimestamp:' \ - > $SEARCHOUT 2>&1 +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \ + 'objectClass=*' > $SEARCHOUT 2>&1 RC=$? kill -HUP $PID -if [ $RC != 0 ]; then - echo "ldapsearch failed!" +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" exit $RC fi -echo "Comparing database to reference file" -cmp $SEARCHOUT $MODIFYOUTMASTER -if [ $? != 0 ]; then +LDIF=$MODIFYOUTMASTER + +echo "Filtering ldapsearch results..." +. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT +echo "Filtering original ldif used to create database..." +. $LDIFFILTER < $LDIF > $LDIFFLT +echo "Comparing filter output..." +$CMP $SEARCHFLT $LDIFFLT > $CMPOUT + +if test $? != 0 ; then echo "comparison failed - modify operations did not complete correctly" exit 1 fi echo ">>>>> Test succeeded" - exit 0 diff --git a/tests/scripts/test005-modrdn b/tests/scripts/test005-modrdn index 11d3c44f03..994cc41191 100755 --- a/tests/scripts/test005-modrdn +++ b/tests/scripts/test005-modrdn @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Running slapadd to build slapd database..." -. $CONFFILTER $BACKEND < $CONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF $SLAPADD -f $DBCONF -l $LDIFORDERED RC=$? if test $RC != 0 ; then diff --git a/tests/scripts/test006-acls b/tests/scripts/test006-acls index 8a389b67f3..91b412fe8b 100755 --- a/tests/scripts/test006-acls +++ b/tests/scripts/test006-acls @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Running slapadd to build slapd database..." -. $CONFFILTER $BACKEND < $ACLCONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $ACLCONF > $DBCONF $SLAPADD -f $DBCONF -l $LDIFORDERED RC=$? if test $RC != 0 ; then diff --git a/tests/scripts/test007-replication b/tests/scripts/test007-replication index 4f93e1a62c..e3eaab27bd 100755 --- a/tests/scripts/test007-replication +++ b/tests/scripts/test007-replication @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -39,7 +43,7 @@ echo "Cleaning up in $REPLDIR..." rm -f $REPLDIR/[!C]* echo "Starting master slapd on TCP/IP port $PORT..." -. $CONFFILTER $BACKEND < $MASTERCONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $MASTERCONF > $DBCONF $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! if test $WAIT != 0 ; then @@ -48,7 +52,7 @@ if test $WAIT != 0 ; then fi echo "Starting slave slapd on TCP/IP port $SLAVEPORT..." -. $CONFFILTER $BACKEND < $SLAVECONF > $REPLCONF +. $CONFFILTER $BACKEND $MONITORDB < $SLAVECONF > $REPLCONF $SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 & SLAVEPID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test008-concurrency b/tests/scripts/test008-concurrency new file mode 100755 index 0000000000..e646a083cb --- /dev/null +++ b/tests/scripts/test008-concurrency @@ -0,0 +1,97 @@ +#! /bin/sh +# $OpenLDAP$ + +SRCDIR="." +if test $# -ge 1 ; then + SRCDIR=$1; shift +fi +BACKEND=bdb +if test $# -ge 1 ; then + BACKEND=$1; shift +fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi +WAIT=0 +if test $# -ge 1 ; then + WAIT=1; shift +fi + +echo "running defines.sh" +. $SRCDIR/scripts/defines.sh + +echo "Datadir is $DATADIR" + +echo "Cleaning up in $DBDIR..." + +rm -f $DBDIR/[!C]* + +echo "Running slapadd to build slapd database..." +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF +$SLAPADD -f $DBCONF -l $LDIFORDERED +RC=$? +if test $RC != 0 ; then + echo "slapadd failed ($RC)!" + exit $RC +fi + +echo "Waiting 5 seconds for slapadd to build slapd database..." +sleep 5 + +echo "Starting slapd on TCP/IP port $PORT..." +$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & +PID=$! +if test $WAIT != 0 ; then + echo PID $PID + read foo +fi + +echo "Using ldapsearch to check that slapd is running..." +for i in 0 1 2 3 4 5; do + $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \ + 'objectclass=*' > /dev/null 2>&1 + RC=$? + if test $RC = 1 ; then + echo "Waiting 5 seconds for slapd to start..." + sleep 5 + fi +done + +echo "Using tester for concurrent server access..." +$SLAPDTESTER -b "$BASEDN" -P "$PROGDIR" -d "$DATADIR" -h $LOCALHOST -p $PORT -D "$MANAGERDN" -w $PASSWD -l 50 +RC=$? + +if test $RC != 0 ; then + echo "slapd-tester failed ($RC)!" + exit $RC +fi + +echo "Using ldapsearch to retrieve all the entries..." +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \ + 'objectClass=*' > $SEARCHOUT 2>&1 +RC=$? + +kill -HUP $PID + +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + exit $RC +fi + +echo "Filtering ldapsearch results..." +. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT +echo "Filtering original ldif used to create database..." +. $LDIFFILTER < $LDIF > $LDIFFLT +echo "Comparing filter output..." +$CMP $SEARCHFLT $LDIFFLT > $CMPOUT + +if test $? != 0 ; then + echo "comparison failed - database was not created correctly" + exit 1 +fi + +echo ">>>>> Test succeeded" + + +exit 0 diff --git a/tests/scripts/test009-referral b/tests/scripts/test009-referral index 63e145eebc..bf295ea656 100755 --- a/tests/scripts/test009-referral +++ b/tests/scripts/test009-referral @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -28,7 +32,7 @@ rm -f $DBDIR/[!C]* rm -f $REPLDIR/[!C]* echo "Running slapadd to build slapd database..." -. $CONFFILTER $BACKEND < $CONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF $SLAPADD -f $DBCONF -l $LDIFORDERED RC=$? if test $RC != 0 ; then @@ -45,7 +49,7 @@ if test $WAIT != 0 ; then fi echo "Starting slave slapd on TCP/IP port $SLAVEPORT..." -. $CONFFILTER $BACKEND < $REFSLAVECONF > $REPLCONF +. $CONFFILTER $BACKEND $MONITORDB < $REFSLAVECONF > $REPLCONF $SLAPD -n slave -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 & SLAVEPID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test010-passwd b/tests/scripts/test010-passwd index acf6175319..aeafbd1eb6 100755 --- a/tests/scripts/test010-passwd +++ b/tests/scripts/test010-passwd @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Starting slapd on TCP/IP port $PORT..." -. $CONFFILTER $BACKEND < $PWCONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $PWCONF > $DBCONF $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test011-subtree-repl b/tests/scripts/test011-subtree-repl index a1db8872e0..9957160c01 100755 --- a/tests/scripts/test011-subtree-repl +++ b/tests/scripts/test011-subtree-repl @@ -12,6 +12,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -44,7 +48,7 @@ rm -f $REPLDIR/replica/[!C]* rm -f $REPLDIR/[!C]* echo "Starting master slapd on TCP/IP port $PORT..." -. $CONFFILTER $BACKEND < $SUBMASTERCONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $SUBMASTERCONF > $DBCONF $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! if test $WAIT != 0 ; then @@ -53,7 +57,7 @@ if test $WAIT != 0 ; then fi echo "Starting slave slapd on TCP/IP port $SLAVEPORT..." -. $CONFFILTER $BACKEND < $SUBSLAVECONF > $REPLCONF +. $CONFFILTER $BACKEND $MONITORDB < $SUBSLAVECONF > $REPLCONF $SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 & SLAVEPID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test012-glue b/tests/scripts/test012-glue index 51c589ca84..ff5b1ec2f8 100755 --- a/tests/scripts/test012-glue +++ b/tests/scripts/test012-glue @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -24,7 +28,7 @@ mkdir $DBDIR/C_db1 $DBDIR/C_db2 $DBDIR/C_db3 rm -f $DBDIR/[!C]* $DBDIR/C_db?/* echo "Running slapadd to build glued slapd databases..." -. $CONFFILTER $BACKEND < $GLUECONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $GLUECONF > $DBCONF $SLAPADD -d $LVL -f $DBCONF -l $LDIFORDERED > $DBDIR/slapadd.log 2>&1 RC=$? if test $RC != 0 ; then diff --git a/tests/scripts/test013-language b/tests/scripts/test013-language index ba8b0eedbc..1deb30164f 100755 --- a/tests/scripts/test013-language +++ b/tests/scripts/test013-language @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Starting slapd on TCP/IP port $PORT..." -. $CONFFILTER $BACKEND < $CONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test014-whoami b/tests/scripts/test014-whoami index 705600981b..cdedf81b1e 100755 --- a/tests/scripts/test014-whoami +++ b/tests/scripts/test014-whoami @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Starting slapd on TCP/IP port $PORT..." -. $CONFFILTER $BACKEND < $PWCONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $PWCONF > $DBCONF $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 & PID=$! if test $WAIT != 0 ; then diff --git a/tests/scripts/test015-xsearch b/tests/scripts/test015-xsearch index 9f66443aa1..1657b9204c 100755 --- a/tests/scripts/test015-xsearch +++ b/tests/scripts/test015-xsearch @@ -9,6 +9,10 @@ BACKEND=bdb if test $# -ge 1 ; then BACKEND=$1; shift fi +MONITORDB=no +if test $# -ge 1 ; then + MONITORDB=$1; shift +fi WAIT=0 if test $# -ge 1 ; then WAIT=1; shift @@ -22,7 +26,7 @@ echo "Cleaning up in $DBDIR..." rm -f $DBDIR/[!C]* echo "Running slapadd to build slapd database..." -. $CONFFILTER $BACKEND < $MCONF > $ADDCONF +. $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF $SLAPADD -f $ADDCONF -l $LDIFORDERED RC=$? if test $RC != 0 ; then @@ -31,7 +35,7 @@ if test $RC != 0 ; then fi echo "Running slapindex to index slapd database..." -. $CONFFILTER $BACKEND < $CONF > $DBCONF +. $CONFFILTER $BACKEND $MONITORDB < $CONF > $DBCONF $SLAPINDEX -f $DBCONF RC=$? if test $RC != 0 ; then