]> git.sur5r.net Git - openldap/commitdiff
Remove cruft
authorKurt Zeilenga <kurt@openldap.org>
Fri, 31 Dec 2004 13:09:10 +0000 (13:09 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Fri, 31 Dec 2004 13:09:10 +0000 (13:09 +0000)
15 files changed:
contrib/README
contrib/ldaptcl/CHANGES [deleted file]
contrib/ldaptcl/COPYRIGHT [deleted file]
contrib/ldaptcl/Makefile.in [deleted file]
contrib/ldaptcl/README [deleted file]
contrib/ldaptcl/configure [deleted file]
contrib/ldaptcl/configure.in [deleted file]
contrib/ldaptcl/install-sh [deleted file]
contrib/ldaptcl/ldap.n [deleted file]
contrib/ldaptcl/ldaperr.tcl [deleted file]
contrib/ldaptcl/man.macros [deleted file]
contrib/ldaptcl/neoXldap.c [deleted file]
contrib/ldaptcl/pkgIndex.tcl.in [deleted file]
contrib/ldaptcl/tclAppInit.c [deleted file]
contrib/ldaptcl/tkAppInit.c [deleted file]

index 50205582be5dc868d548a746e543f9cf94c9612e..d2144c55502de7b43d46454e80673b938683d170 100644 (file)
@@ -15,19 +15,15 @@ Current contributions:
                LDAP SASL auxprop plugin
                Contributed by Symas Corp.
 
-       ldaptcl
-               LDAP TCL API
-               Contributed by NeoSoft
-
        slapd-modules
                Native modules
 
-       slapd-tools
-               Tools to use with slapd
-
        slapi-plugins
                SLAPI plugins
 
+       slapd-tools
+               Tools to use with slapd
+
 
 OpenLDAP Contributing Guidelines are available at:
   <http://www.openldap.org/devel/contributing.html>.
diff --git a/contrib/ldaptcl/CHANGES b/contrib/ldaptcl/CHANGES
deleted file mode 100644 (file)
index 09e976c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Package rersion 2.0:
-- Detects OpenLDAP 2.0 and builds correctly with it.
-- Increment major version to 2, library file to libldaptcl2.0.so.
-- Can now perform add/delete/replace modifications in a single command.
-- Replaced calls to TclX_WrongArgs with core Tcl_WrongNumArgs to reduce
-  dependency on Extended Tcl.
-- Wrap dereference search control with #ifdef LDAP_OPT_DEREF.
-- Deref during search should work.
-- Add protocol_version option to ldap init command.
-- Add LDAPTCL_PROTOCOL_VERSION_DEFAULT to allow specifying the default
-  protocol version used.
-- Add controlArray(timeout) to control timeouts during searches.
-- Add controlArray(cache) to control caching current search results.
-  (Experience has shown this to be not very useful or not working correctly.
-  Caching search results should probably be done in Ldaptcl rather than
-  letting the LDAP API do it.)
-- Add "compare" subcommand
-- Add experimental trap subcommand (undocumented -- use at your own risk).
-
-Package version 1.2:
-
-- Filter no longer a required controlArray member, defaults to objectclass=*.
-- Sets errorCode with LDAP macro string value (better to test than the more
-  human readable values).
-- Shorten minimum required characters for search scope definitions: now allows
-  "base", "one", and "sub".  For the latter two, additional characters are
-  ignored.
-- Now compiles successfully with -devel branch.
-- Client cache management code enabled for OpenLDAP versions <= 1.2.4.  (This
-  code is relatively untested and feedback is welcome.)
diff --git a/contrib/ldaptcl/COPYRIGHT b/contrib/ldaptcl/COPYRIGHT
deleted file mode 100644 (file)
index e9be9a7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-NeoSoft Tcl client extensions to Lightweight Directory Access Protocol.
-
-Copyright (c) 1998-1999 NeoSoft, Inc.  
-All Rights Reserved.
-
-This software may be used, modified, copied, distributed, and sold,
-in both source and binary form provided that these copyrights are
-retained and their terms are followed.
-
-Under no circumstances are the authors or NeoSoft Inc. responsible
-for the proper functioning of this software, nor do the authors
-assume any liability for damages incurred with its use.
-
-Redistribution and use in source and binary forms are permitted
-provided that this notice is preserved and that due credit is given
-to NeoSoft, Inc.
-
-NeoSoft, Inc. may not be used to endorse or promote products derived
-from this software without specific prior written permission. This
-software is provided ``as is'' without express or implied warranty.
-
-Requests for permission may be sent to NeoSoft Inc, 1770 St. James Place,
-Suite 500, Houston, TX, 77056.
diff --git a/contrib/ldaptcl/Makefile.in b/contrib/ldaptcl/Makefile.in
deleted file mode 100644 (file)
index 04586ff..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-# This file is a Makefile for Neo, the NeoSoft extensions to Tcl.
-# If it has the name "Makefile.in" then it is a template for a
-# Makefile;  to generate the actual Makefile, run "./configure",
-# which is a configuration script generated by the "autoconf" program
-# (constructs like "@foo@" will get replaced in the actual Makefile.
-#
-
-VERSION = @NEO_VERSION@
-LIBNAME = @NEO_SHARED_LIB_FILE@
-
-# Default top-level directories in which to install architecture-
-# specific files (exec_prefix) and machine-independent files such
-# as scripts (prefix).  The values specified here may be overridden
-# at configure-time with the --exec-prefix and --prefix options
-# to the "configure" script.
-
-prefix =        @prefix@
-exec_prefix =       @exec_prefix@
-
-# The following definition can be set to non-null for special systems
-# like AFS with replication.  It allows the pathnames used for installation
-# to be different than those used for actually reference files at
-# run-time.  DESTDIR is prepended to $prefix and $exec_prefix
-# when installing files.
-DESTDIR =
-
-# Directory in which to search for tcl libraries
-NEO_LIBRARY    = $(exec_prefix)/lib/ldaptcl$(VERSION)
-
-# Directory in which to install the ldaptcl binary:
-BIN_INSTALL_DIR = $(DESTDIR)$(exec_prefix)/bin
-
-# Directory in which to install the .a or .so binary for the Neo library:
-LIB_INSTALL_DIR = $(DESTDIR)$(exec_prefix)/lib
-
-# Path to use at runtime to refer to LIB_INSTALL_DIR:
-LIB_RUNTIME_DIR =      $(exec_prefix)/lib
-
-# Top-level directory for man entries:
-MANN_INSTALL_DIR =     $(DESTDIR)$(prefix)/man/mann
-
-
-# The symbols below provide support for dynamic loading and shared
-# libraries.  The values of the symbols are normally set by the
-# configure script.  You shouldn't normally need to modify any of
-# these definitions by hand.
-
-SHLIB_CFLAGS = @NEO_SHLIB_CFLAGS@
-
-NEO_LIB_FILE = @NEO_LIB_FILE@
-
-NEO_SHARED_LIB_FILE = @NEO_SHARED_LIB_FILE@
-
-# The directory containing the Tcl sources and headers appropriate
-# for this version of Neo ("srcdir" will be replaced or has already
-# been replaced by the configure script):
-TCL_GENERIC_DIR =   @TCL_SRC_DIR@/generic
-
-# The top of the TclX directory tree
-TCLX_TOP_DIR   =       @TCLX_TOP_DIR@
-
-# The directory where tclExtend.h will be:
-TCLX_TCL_GEN_DIR =     ${TCLX_TOP_DIR}/tcl/generic
-
-# The directory where tclXunixPort.h will be:
-TCLX_TCL_UNIX_DIR =    ${TCLX_TOP_DIR}/tcl/unix
-
-# The path to tclX the runtcl script:
-TCLX_RUNTCL    =       ${TCLX_TOP_DIR}/unix/runtcl
-
-# The directory containing the Tcl library archive file appropriate
-# for this version of Neo:
-TCL_BIN_DIR =       @TCL_BIN_DIR@
-
-
-# The symbol below provides support for dynamic loading and shared
-# libraries.  See configure.in for a description of what it means.
-# The values of the symbolis normally set by the configure script.
-
-SHLIB_LD = @SHLIB_LD@
-
-# Set to the options to include libldap.a and liblber.a 
-# (eg. -L../tools/blah -lldap -llber)
-
-LDAP_LIBFLAGS  = @ldaplibflags@
-LDAP_CFLAGS    = @ldapinclude@
-LDAP_INCDIR    = @ldapincdir@
-LDAP_BUILD     = @ldapbuild@
-LDAP_DIR       = @ldapdir@
-
-
-#----------------------------------------------------------------
-# The information below is modified by the configure script when
-# Makefile is generated from Makefile.in.  You shouldn't normally
-# modify any of this stuff by hand.
-#----------------------------------------------------------------
-
-AC_FLAGS =      @DEFS@
-INSTALL=       @INSTALL@
-INSTALL_PROGRAM =   @INSTALL_PROGRAM@
-INSTALL_DATA =      @INSTALL_DATA@
-RANLIB =        @RANLIB@
-SRC_DIR =       @srcdir@/..
-TOP_DIR =       @srcdir@/..
-GENERIC_DIR =       $(TOP_DIR)/generic
-
-#----------------------------------------------------------------
-# The information below should be usable as is.  The configure
-# script won't modify it and you shouldn't need to modify it
-# either.
-#----------------------------------------------------------------
-
-
-OBJS= neoXldap.o
-
-LIBDIR=$(exec_prefix)/lib
-INCDIR=$(prefix)/include
-
-LIBS= @LIBS@ @TCLX_LIB_SPEC@ @TCL_LIB_SPEC@ @TCL_LIBS@ $(LDAP_LIBFLAGS) -lc
-TK_LIBS=@TKX_LIB_SPEC@ @TK_LIB_SPEC@ @TK_LIBS@
-TK_VERSION=@TK_VERSION@
-
-CC =        @CC@
-CC_SWITCHES =   ${CFLAGS} @NEO_SHLIB_CFLAGS@ -I. \
--I@prefix@/include ${AC_FLAGS} ${PROTO_FLAGS} \
-${SECURITY_FLAGS} ${MEM_DEBUG_FLAGS} ${KEYSYM_FLAGS} \
--DNEO_LIBRARY=\"${NEO_LIBRARY}\" -DVERSION=\"${VERSION}\" 
-
-TK_SWITCHES = ${CC_SWITCHES} @TK_XINCLUDES@
-
-.c.o:
-       $(CC) -c $(CC_SWITCHES) $<
-
-all:   @NEO_LIB_FILE@ ldaptclsh @LDAPWISH@
-
-@NEO_LIB_FILE@:        $(OBJS)
-       rm -f @NEO_LIB_FILE@
-       @MAKE_LIB@
-       $(RANLIB) @NEO_LIB_FILE@
-
-neoXldap.o: neoXldap.c ldaptclerr.h
-       $(CC) -c $(LDAP_CFLAGS) $(CC_SWITCHES) $<
-
-ldaptclerr.h: ldaperr.tcl
-       tcl ldaperr.tcl $(LDAP_INCDIR)/ldap.h > ldaptclerr.h
-       
-
-clean:
-       -rm -f ldaptclsh ldapwish
-       -rm -f *.o *.a *.so*
-
-distclean: clean
-       rm -f Makefile pkgIndex.tcl config.cache config.log config.status \
-               ldaptclerr.h
-
-install: install-binaries install-man
-
-install-binaries: @NEO_LIB_FILE@ ldaptclsh @LDAPWISH@
-       @-mkdir -p $(BIN_INSTALL_DIR)
-       $(INSTALL_PROGRAM) ldaptclsh $(BIN_INSTALL_DIR)/ldaptclsh
-       @if [ -n "@LDAPWISH@" ] ; then \
-           echo $(INSTALL_PROGRAM) ldapwish $(BIN_INSTALL_DIR)/ldapwish; \
-           $(INSTALL_PROGRAM) ldapwish $(BIN_INSTALL_DIR)/ldapwish; \
-       fi
-       $(INSTALL_DATA) @NEO_LIB_FILE@ $(LIB_INSTALL_DIR)
-       @if [ "$(NEO_LIB_FILE)" = "$(NEO_SHARED_LIB_FILE)" ] ; then \
-               echo Installing pkgIndex.tcl in $(NEO_LIBRARY); \
-               mkdir -p $(NEO_LIBRARY); \
-               $(INSTALL_DATA) pkgIndex.tcl $(NEO_LIBRARY); \
-       fi
-
-
-install-man:
-       @for i in ldap.n; \
-           do \
-           echo "Installing $$i"; \
-           rm -f $(MANN_INSTALL_DIR)/$$i; \
-           sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
-                   $$i > $(MANN_INSTALL_DIR)/$$i; \
-           chmod 444 $(MANN_INSTALL_DIR)/$$i; \
-       done;
-
-
-TCLOFILES= tclAppInit.o
-
-ldaptclsh:$(TCLOFILES) @NEO_LIB_FILE@
-       $(CC) @LD_FLAGS@ $(TCLOFILES) @NEO_BUILD_LIB_SPEC@ $(LIBS) \
-       @TCL_LD_SEARCH_FLAGS@ -o ldaptclsh
-
-tkAppInit.o: tkAppInit.c
-       $(CC) -c ${TK_SWITCHES} tkAppInit.c
-
-ldapwish:tkAppInit.o @NEO_LIB_FILE@
-       $(CC) @LD_FLAGS@ tkAppInit.o @NEO_BUILD_LIB_SPEC@ $(TK_LIBS) $(LIBS) \
-       @TCL_LD_SEARCH_FLAGS@ -o ldapwish
diff --git a/contrib/ldaptcl/README b/contrib/ldaptcl/README
deleted file mode 100644 (file)
index 0928d5f..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-Copyright (c) 1998-1999 NeoSoft, Inc.
-
-For licensing information, see the file neoXldap.c and/or the COPYRIGHT
-file contained in the directory you found this file.
-
-This directory contains an extension to Tcl to interface with an
-LDAP server.  While this software is being released to the OpenLDAP
-community, it is the authors' intention that support continue (and
-be added) for other client libraries as well.  As time goes on, it
-is expected that code will converge rather than diverge.
-
-Support is provided for University of Michigan LDAP version 3.3,
-OpenLDAP, and Netscape.  The default configuration supports
-OpenLDAP 1.2.4 and above.
-
-OpenLDAP 2.x is supported, but there is not yet any support for
-using SASL or TLS.  There may be interface changes in the LDAP API
-which the author is unaware of (a leak was recently fixed for the
-return values of ldap_first/next_attribute() calls).
-
-It uses GNU autoconf.  It builds and installs without requiring
-parallel directories, but it does require that Tcl and Extended Tcl
-are installed in the directory pointed to by --prefix (/usr/local
-by default).
-
-For further info, try "./configure --help".
-
-For example, I run:
-
-    ./configure  --prefix=/opt/neotcl --enable-shared \
-       --with-ldap=/usr/local/ldap
-
-Remember that --prefix must be the same prefix used when building
-and installint Tcl.
-
-Netscape configuration has not been well tested, and you may have to
-play with the resulting Makefile to get it to work.  In particular,
-you will probably need to modify the LDAP_LIBFLAGS.  However, the
-C code itself is reasonably well tested with Netscape.
-
-This module will install a regular shell (ldaptclsh) a windowing
-shell (ldapwish) a library, a pkgIndex.tcl, and a manpage (ldap.n).
-
-If your Tcl installation has been configured with --enable-shared,
-then you must also use --enable-shared here.
-
-Shared libraries and Tcl packages.
-
-If Tcl is built with --enable-shared, AND OpenLDAP (or another version
-for that matter) has been build to create -llber and -lldap as shared
-libaries, AND you build ldaptcl with --enable-shared, it should be
-possible to run a plain Tcl interpreter (eg. tclsh8.0) and do
-
-               package require Ldaptcl
-
-which will install the "ldap" command into the interpreter.
-
-You may need to set the LD_LIBRARY_PATH environment variable appropriately,
-or use -R or -W,-rpath ld command options to resolve the search for ldap
-and lber libraries.
-
-This package was test built on a Alpha OSF4.0e with the native C
-compiler.
-
-Please email comments or bug fixes to openldap-devel@OpenLDAP.org,
-or to kunkee@OpenLDAP.org.  I would also like to know if you are
-using this interface, so I invite you to drop me an email if you do.
diff --git a/contrib/ldaptcl/configure b/contrib/ldaptcl/configure
deleted file mode 100755 (executable)
index 5779bbd..0000000
+++ /dev/null
@@ -1,1423 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
-  --enable-gcc            allow use of gcc if available"
-ac_help="$ac_help
-  --with-tk=DIR          use Tk 8.0 binaries from DIR"
-ac_help="$ac_help
-  --without-x            do not build/install ldapwish"
-ac_help="$ac_help
-  --enable-shared         build libldaptcl as a shared library"
-ac_help="$ac_help
-  --with-ldap=<dir>           common parent of ldap include and lib dirs"
-ac_help="$ac_help
-  --with-ldap-incdir=<dir>    path to ldap.h"
-ac_help="$ac_help
-  --with-ldap-libdir=<dir>    path to ldap and lber libs"
-ac_help="$ac_help
-  --with-ldap-libflags=<libnames>   -l flags for ldap libraries"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=neoXldap.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-# $OpenLDAP$
-
-NEO_VERSION=2.0
-NEO_MAJOR_VERSION=2
-NEO_MINOR_VERSION=0
-VERSION=${NEO_VERSION}
-
-if test "${prefix}" = "NONE"; then
-    prefix=/usr/local
-fi
-if test "${exec_prefix}" = "NONE"; then
-    exec_prefix=$prefix
-fi
-
-# Check whether --enable-gcc or --disable-gcc was given.
-if test "${enable_gcc+set}" = set; then
-  enableval="$enable_gcc"
-  neo_ok=$enableval
-else
-  neo_ok=no
-fi
-
-if test "$neo_ok" = "yes"; then
-    # 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:567: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-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:597: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_prog_rejected=no
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  if test -z "$CC"; then
-    case "`uname -s`" in
-    *win32* | *WIN32*)
-      # 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:648: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="cl"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
- ;;
-    esac
-  fi
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:680: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 691 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:696: \"$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
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-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 $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:722: checking whether the C compiler ($CC $CFLAGS $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:727: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:736: \"$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
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-
-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:755: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-
-else
-    CC=${CC-cc}
-
-fi
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# 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:822: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# 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:877: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-if test ! -f $exec_prefix/lib/tclConfig.sh
-then
-    { echo "configure: error: Tcl must be installed first" 1>&2; exit 1; }
-fi
-
-. $exec_prefix/lib/tclConfig.sh
-
-if test ! -f $exec_prefix/lib/tclxConfig.sh
-then
-    { echo "configure: error: Extended Tcl must be installed first" 1>&2; exit 1; }
-fi
-. $exec_prefix/lib/tclxConfig.sh
-
-
-#--------------------------------------------------------------------
-#      See if there was a command-line option for where Tk is;  if
-#      not, assume that its top-level directory is a sibling of ours.
-#--------------------------------------------------------------------
-
-# Check whether --with-tk or --without-tk was given.
-if test "${with_tk+set}" = set; then
-  withval="$with_tk"
-  :
-else
-  with_tk=yes
-fi
-
-
-case "$with_tk" in
-    yes)
-       if test -f $exec_prefix/lib/tkConfig.sh -a $exec_prefix/lib/tkxConfig.sh
-       then
-           :
-       else
-           { echo "configure: error: Tk does not appear to be installed at $exec_prefix" 1>&2; exit 1; }
-       fi
-       ;;
-    no) ;;
-    *)  { echo "configure: error: Tk cannot be specified and must be in $exec_prefix" 1>&2; exit 1; }
-       ;;
-esac
-
-# Check whether --with-x or --without-x was given.
-if test "${with_x+set}" = set; then
-  withval="$with_x"
-  :
-fi
-
-if test "$with_x" = "no"
-then
-    with_tk=no
-fi
-
-if test "$with_tk" != "no"
-then
-    LDAPWISH=ldapwish
-    . $exec_prefix/lib/tkConfig.sh
-    . $exec_prefix/lib/tkxConfig.sh
-fi
-
-
-
-
-
-
-
-#--------------------------------------------------------------------
-#      Read in configuration information generated by Tcl for shared
-#      libraries, and arrange for it to be substituted into our
-#      Makefile.
-#--------------------------------------------------------------------
-
-CC=$TCL_CC
-SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
-SHLIB_LD=$TCL_SHLIB_LD
-SHLIB_LD_LIBS=$TCL_SHLIB_LD_LIBS
-SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
-SHLIB_VERSION=$TCL_SHLIB_VERSION
-DL_LIBS=$TCL_DL_LIBS
-LD_FLAGS=$TCL_LD_FLAGS
-NEO_LD_SEARCH_FLAGS=$TCL_LD_SEARCH_FLAGS
-
-eval "NEO_SHARED_LIB_FILE=libldaptcl${TCL_SHARED_LIB_SUFFIX}"
-eval "NEO_UNSHARED_LIB_FILE=libldaptcl${TCL_UNSHARED_LIB_SUFFIX}"
-
-#--------------------------------------------------------------------
-#      The statements below define a collection of symbols related to
-#      building libldap as a shared library instead of a static library.
-#--------------------------------------------------------------------
-
-# Warning: in order to use the following code for libldap and libdb versions,
-# the VERSION shell variable is modified, and then is restored after.
-
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
-  enableval="$enable_shared"
-  ok=$enableval
-else
-  ok=no
-fi
-
-if test "$ok" = "yes" -a "${SHLIB_SUFFIX}" != ""; then
-    NEO_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
-    eval "NEO_LIB_FILE=libldaptcl${TCL_SHARED_LIB_SUFFIX}"
-    MAKE_LIB="\${SHLIB_LD} $TCL_LIB_HNAME -o ${NEO_LIB_FILE} \${OBJS} \${LDAP_LIBFLAGS}"
-    RANLIB=":"
-else
-    NEO_SHLIB_CFLAGS=""
-    eval "NEO_LIB_FILE=libldaptcl${TCL_UNSHARED_LIB_SUFFIX}"
-    MAKE_LIB="ar cr ${NEO_LIB_FILE} \${OBJS}"
-fi
-
-# Check whether --with-ldap or --without-ldap was given.
-if test "${with_ldap+set}" = set; then
-  withval="$with_ldap"
-  neo_ldap=$withval
-       case $withval in
-           yes) ldapdir=/usr/local
-                ;;
-           no)  ;;
-           *)   ldapdir=$withval
-                neo_ldap=yes
-                ;;
-       esac
-       
-else
-  
-           neo_ldap=yes
-           ldapdir=/usr/local
-       
-fi
-
-
-ldapincdir=$ldapdir/include
-# Check whether --with-ldap-incdir or --without-ldap-incdir was given.
-if test "${with_ldap_incdir+set}" = set; then
-  withval="$with_ldap_incdir"
-  ldapincdir=$withval
-fi
-
-
-ldaplibdir=$ldapdir/lib
-# Check whether --with-ldap-libdir or --without-ldap-libdir was given.
-if test "${with_ldap_libdir+set}" = set; then
-  withval="$with_ldap_libdir"
-  ldaplibdir=$withval
-fi
-
-
-# Check whether --with-ldap-libraries or --without-ldap-libraries was given.
-if test "${with_ldap_libraries+set}" = set; then
-  withval="$with_ldap_libraries"
-  ldaplibflags="-L$ldaplibdir $withval"
-else
-  ldaplibflags="-L$ldaplibdir -lldap -llber"
-fi
-
-
-ldapinclude="-I$ldapincdir"
-
-ldapbuild=yes
-
-
-
-
-
-
-
-
-VERSION=${NEO_VERSION}
-# Note:  in the following variable, it's important to use the absolute
-# path name of the Tcl directory rather than "..":  this is because
-# AIX remembers this path and will attempt to use it at run-time to look
-# up the Tcl library.
-
-if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
-    NEO_BUILD_LIB_SPEC="-L`pwd` -lldaptcl${VERSION}"
-    NEO_LIB_SPEC="-L${exec_prefix}/lib -lldaptcl${VERSION}"
-else
-    NEO_BUILD_LIB_SPEC="-L`pwd` -lldaptcl`echo ${VERSION} | tr -d .`"
-    NEO_LIB_SPEC="-L${exec_prefix}/lib -lldaptcl`echo ${VERSION} | tr -d .`"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[    `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile pkgIndex.tcl" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@CC@%$CC%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@RANLIB@%$RANLIB%g
-s%@TK_LIBS@%$TK_LIBS%g
-s%@TK_LIB_SPEC@%$TK_LIB_SPEC%g
-s%@TK_XINCLUDES@%$TK_XINCLUDES%g
-s%@TK_VERSION@%$TK_VERSION%g
-s%@TKX_LIB_SPEC@%$TKX_LIB_SPEC%g
-s%@LDAPWISH@%$LDAPWISH%g
-s%@ldaplibflags@%$ldaplibflags%g
-s%@ldapinclude@%$ldapinclude%g
-s%@ldapbuild@%$ldapbuild%g
-s%@ldapdir@%$ldapdir%g
-s%@ldapincdir@%$ldapincdir%g
-s%@DL_LIBS@%$DL_LIBS%g
-s%@LD_FLAGS@%$LD_FLAGS%g
-s%@MATH_LIBS@%$MATH_LIBS%g
-s%@MAKE_LIB@%$MAKE_LIB%g
-s%@SHLIB_CFLAGS@%$SHLIB_CFLAGS%g
-s%@SHLIB_LD@%$SHLIB_LD%g
-s%@SHLIB_LD_LIBS@%$SHLIB_LD_LIBS%g
-s%@SHLIB_SUFFIX@%$SHLIB_SUFFIX%g
-s%@SHLIB_VERSION@%$SHLIB_VERSION%g
-s%@TCLX_TOP_DIR@%$TCLX_TOP_DIR%g
-s%@TCLX_TCL_DIR@%$TCLX_TCL_DIR%g
-s%@TCLX_LIB_SPEC@%$TCLX_LIB_SPEC%g
-s%@ITCL_LIB_SPEC@%$ITCL_LIB_SPEC%g
-s%@TCL_LIBS@%$TCL_LIBS%g
-s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g
-s%@TCL_BIN_DIR@%$TCL_BIN_DIR%g
-s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g
-s%@TCL_LD_SEARCH_FLAGS@%$TCL_LD_SEARCH_FLAGS%g
-s%@TCL_LIB_HNAME@%$TCL_LIB_HNAME%g
-s%@TCL_VERSION@%$TCL_VERSION%g
-s%@NEO_BUILD_LIB_SPEC@%$NEO_BUILD_LIB_SPEC%g
-s%@NEO_LD_SEARCH_FLAGS@%$NEO_LD_SEARCH_FLAGS%g
-s%@NEO_SHARED_LIB_FILE@%$NEO_SHARED_LIB_FILE%g
-s%@NEO_UNSHARED_LIB_FILE@%$NEO_UNSHARED_LIB_FILE%g
-s%@NEO_LIB_FILE@%$NEO_LIB_FILE%g
-s%@NEO_LIB_SPEC@%$NEO_LIB_SPEC%g
-s%@NEO_MAJOR_VERSION@%$NEO_MAJOR_VERSION%g
-s%@NEO_MINOR_VERSION@%$NEO_MINOR_VERSION%g
-s%@NEO_SHLIB_CFLAGS@%$NEO_SHLIB_CFLAGS%g
-s%@NEO_VERSION@%$NEO_VERSION%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile pkgIndex.tcl"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/contrib/ldaptcl/configure.in b/contrib/ldaptcl/configure.in
deleted file mode 100644 (file)
index 804c390..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-dnl    This file is an input file used by the GNU "autoconf" program to
-dnl    generate the file "configure", which is run during Tk installation
-dnl    to configure the system for the local environment.
-AC_INIT(neoXldap.c)
-# $OpenLDAP$
-
-NEO_VERSION=2.0
-NEO_MAJOR_VERSION=2
-NEO_MINOR_VERSION=0
-VERSION=${NEO_VERSION}
-
-if test "${prefix}" = "NONE"; then
-    prefix=/usr/local
-fi
-if test "${exec_prefix}" = "NONE"; then
-    exec_prefix=$prefix
-fi
-
-AC_ARG_ENABLE(gcc, [  --enable-gcc            allow use of gcc if available],
-    [neo_ok=$enableval], [neo_ok=no])
-if test "$neo_ok" = "yes"; then
-    AC_PROG_CC
-else
-    CC=${CC-cc}
-AC_SUBST(CC)
-fi
-
-AC_PROG_INSTALL(install-sh)
-AC_PROG_RANLIB
-
-if test ! -f $exec_prefix/lib/tclConfig.sh
-then
-    AC_MSG_ERROR(Tcl must be installed first)
-fi
-
-. $exec_prefix/lib/tclConfig.sh
-
-if test ! -f $exec_prefix/lib/tclxConfig.sh
-then
-    AC_MSG_ERROR(Extended Tcl must be installed first)
-fi
-. $exec_prefix/lib/tclxConfig.sh
-
-
-#--------------------------------------------------------------------
-#      See if there was a command-line option for where Tk is;  if
-#      not, assume that its top-level directory is a sibling of ours.
-#--------------------------------------------------------------------
-
-AC_ARG_WITH(tk, [  --with-tk=DIR          use Tk 8.0 binaries from DIR],
-       , with_tk=yes)
-
-case "$with_tk" in
-    yes)
-       if test -f $exec_prefix/lib/tkConfig.sh -a $exec_prefix/lib/tkxConfig.sh
-       then
-           :
-       else
-           AC_MSG_ERROR(Tk does not appear to be installed at $exec_prefix)
-       fi
-       ;;
-    no) ;;
-    *)  AC_MSG_ERROR(Tk cannot be specified and must be in $exec_prefix)
-       ;;
-esac
-
-AC_ARG_WITH(x, [  --without-x            do not build/install ldapwish])
-if test "$with_x" = "no"
-then
-    with_tk=no
-fi
-
-if test "$with_tk" != "no"
-then
-    LDAPWISH=ldapwish
-    . $exec_prefix/lib/tkConfig.sh
-    . $exec_prefix/lib/tkxConfig.sh
-fi
-AC_SUBST(TK_LIBS)
-AC_SUBST(TK_LIB_SPEC)
-AC_SUBST(TK_XINCLUDES)
-AC_SUBST(TK_VERSION)
-AC_SUBST(TKX_LIB_SPEC)
-AC_SUBST(LDAPWISH)
-
-#--------------------------------------------------------------------
-#      Read in configuration information generated by Tcl for shared
-#      libraries, and arrange for it to be substituted into our
-#      Makefile.
-#--------------------------------------------------------------------
-
-CC=$TCL_CC
-SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS
-SHLIB_LD=$TCL_SHLIB_LD
-SHLIB_LD_LIBS=$TCL_SHLIB_LD_LIBS
-SHLIB_SUFFIX=$TCL_SHLIB_SUFFIX
-SHLIB_VERSION=$TCL_SHLIB_VERSION
-DL_LIBS=$TCL_DL_LIBS
-LD_FLAGS=$TCL_LD_FLAGS
-NEO_LD_SEARCH_FLAGS=$TCL_LD_SEARCH_FLAGS
-
-eval "NEO_SHARED_LIB_FILE=libldaptcl${TCL_SHARED_LIB_SUFFIX}"
-eval "NEO_UNSHARED_LIB_FILE=libldaptcl${TCL_UNSHARED_LIB_SUFFIX}"
-
-#--------------------------------------------------------------------
-#      The statements below define a collection of symbols related to
-#      building libldap as a shared library instead of a static library.
-#--------------------------------------------------------------------
-
-# Warning: in order to use the following code for libldap and libdb versions,
-# the VERSION shell variable is modified, and then is restored after.
-
-AC_ARG_ENABLE(shared,
-    [  --enable-shared         build libldaptcl as a shared library],
-    [ok=$enableval], [ok=no])
-if test "$ok" = "yes" -a "${SHLIB_SUFFIX}" != ""; then
-    NEO_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
-    eval "NEO_LIB_FILE=libldaptcl${TCL_SHARED_LIB_SUFFIX}"
-    MAKE_LIB="\${SHLIB_LD} $TCL_LIB_HNAME -o ${NEO_LIB_FILE} \${OBJS} \${LDAP_LIBFLAGS}"
-    RANLIB=":"
-else
-    NEO_SHLIB_CFLAGS=""
-    eval "NEO_LIB_FILE=libldaptcl${TCL_UNSHARED_LIB_SUFFIX}"
-    MAKE_LIB="ar cr ${NEO_LIB_FILE} \${OBJS}"
-fi
-
-AC_ARG_WITH(ldap, [  --with-ldap=<dir>           common parent of ldap include and lib dirs],
-       [neo_ldap=$withval
-       case $withval in
-           yes) ldapdir=/usr/local
-                ;;
-           no)  ;;
-           *)   ldapdir=$withval
-                neo_ldap=yes
-                ;;
-       esac
-       ], [
-           neo_ldap=yes
-           ldapdir=/usr/local
-       ])
-
-ldapincdir=$ldapdir/include
-AC_ARG_WITH(ldap-incdir, [  --with-ldap-incdir=<dir>    path to ldap.h],
-       [ldapincdir=$withval])
-
-ldaplibdir=$ldapdir/lib
-AC_ARG_WITH(ldap-libdir, [  --with-ldap-libdir=<dir>    path to ldap and lber libs],
-       [ldaplibdir=$withval])
-
-AC_ARG_WITH(ldap-libraries, [  --with-ldap-libflags=<libnames>   -l flags for ldap libraries],
-       [ldaplibflags="-L$ldaplibdir $withval"],
-       [ldaplibflags="-L$ldaplibdir -lldap -llber"])
-
-ldapinclude="-I$ldapincdir"
-
-ldapbuild=yes
-
-AC_SUBST(ldaplibflags)
-AC_SUBST(ldapinclude)
-AC_SUBST(ldapbuild)
-AC_SUBST(ldapdir)
-AC_SUBST(ldapincdir)
-
-
-VERSION=${NEO_VERSION}
-# Note:  in the following variable, it's important to use the absolute
-# path name of the Tcl directory rather than "..":  this is because
-# AIX remembers this path and will attempt to use it at run-time to look
-# up the Tcl library.
-
-if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
-    NEO_BUILD_LIB_SPEC="-L`pwd` -lldaptcl${VERSION}"
-    NEO_LIB_SPEC="-L${exec_prefix}/lib -lldaptcl${VERSION}"
-else
-    NEO_BUILD_LIB_SPEC="-L`pwd` -lldaptcl`echo ${VERSION} | tr -d .`"
-    NEO_LIB_SPEC="-L${exec_prefix}/lib -lldaptcl`echo ${VERSION} | tr -d .`"
-fi
-
-AC_SUBST(CC)
-AC_SUBST(LIBS)
-AC_SUBST(DL_LIBS)
-AC_SUBST(LD_FLAGS)
-AC_SUBST(MATH_LIBS)
-AC_SUBST(MAKE_LIB)
-AC_SUBST(SHLIB_CFLAGS)
-AC_SUBST(SHLIB_LD)
-AC_SUBST(SHLIB_LD_LIBS)
-AC_SUBST(SHLIB_SUFFIX)
-AC_SUBST(SHLIB_VERSION)
-AC_SUBST(TCLX_TOP_DIR)
-AC_SUBST(TCLX_TCL_DIR)
-AC_SUBST(TCLX_LIB_SPEC)
-AC_SUBST(ITCL_LIB_SPEC)
-AC_SUBST(TCL_LIBS)
-AC_SUBST(TCL_SRC_DIR)
-AC_SUBST(TCL_BIN_DIR)
-AC_SUBST(TCL_LIB_SPEC)
-AC_SUBST(TCL_LD_SEARCH_FLAGS)
-AC_SUBST(TCL_LIB_HNAME)
-AC_SUBST(TCL_SRC_DIR)
-AC_SUBST(TCL_VERSION)
-AC_SUBST(NEO_BUILD_LIB_SPEC)
-AC_SUBST(NEO_LD_SEARCH_FLAGS)
-AC_SUBST(NEO_SHARED_LIB_FILE)
-AC_SUBST(NEO_UNSHARED_LIB_FILE)
-AC_SUBST(NEO_LIB_FILE)
-AC_SUBST(NEO_LIB_SPEC)
-AC_SUBST(NEO_MAJOR_VERSION)
-AC_SUBST(NEO_MINOR_VERSION)
-AC_SUBST(NEO_SHLIB_CFLAGS)
-AC_SUBST(NEO_VERSION)
-dnl AC_SUBST(XINCLUDES)
-dnl AC_SUBST(XLIBSW)
-
-AC_OUTPUT(Makefile pkgIndex.tcl)
diff --git a/contrib/ldaptcl/install-sh b/contrib/ldaptcl/install-sh
deleted file mode 100755 (executable)
index 0ff4b6a..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/sh
-
-#
-# install - install a program, script, or datafile
-# This comes from X11R5; it is not part of GNU.
-#
-# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-
-instcmd="$mvprog"
-chmodcmd=""
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-fi
-
-if [ x"$dst" = x ]
-then
-       echo "install:  no destination specified"
-       exit 1
-fi
-
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-if [ -d $dst ]
-then
-       dst="$dst"/`basename $src`
-fi
-
-# Make a temp file name in the proper directory.
-
-dstdir=`dirname $dst`
-dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-$doit $instcmd $src $dsttmp
-
-# and set any options; do chmod last to preserve setuid bits
-
-if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
-if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
-if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
-if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
-
-# Now rename the file to the real destination.
-
-$doit $rmcmd $dst
-$doit $mvcmd $dsttmp $dst
-
-
-exit 0
diff --git a/contrib/ldaptcl/ldap.n b/contrib/ldaptcl/ldap.n
deleted file mode 100644 (file)
index 267324f..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-'\"
-'\" Copyright (c) 1998 NeoSoft, Inc.
-'\"
-'\" See the file "license.terms" for information on usage and redistribution
-'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-'\" 
-.so man.macros
-.TH ldap n "" Ldap "Ldap Tcl Extension"
-.BS
-'\" Note:  do not modify the .SH NAME line immediately below!
-.SH NAME
-ldap \- connect to and query an LDAP server
-.SH SYNOPSIS
-\fBldap \fBopen \fR \fIcommand\fR \fIhostlist\fR
-.br
-\fBldap \fBinit \fR \fIcommand\fR \fIhostlist\fR ?protocol_version [2|3]?
-.br
-\fBldap \fBexplode ?-nonames|-list?\fR \fIdn\fR
-.br
-\fIcommand \fBsubcommand \fIoptions ...\fR
-.BE
-
-.SH OVERVIEW
-.PP
-A new command by the name of \fIcommand\fR will be created to access
-the LDAP database at \fIhostlist\fR.  \fIhostlist\fR may contain elements
-of the format \fBhost:port\fR if a port other than the default LDAP port
-of 389 is required.  The LDAP library will attempt to connect to each
-host in turn until it succeeds or exhausts the list.
-.PP
-The \fBexplode\fR form provides a means (via ldap_explode(3)) to explode a DN
-into its component parts.  \fB-nonames\fR strips off the attribute names,
-and -list returns a list suitable for \fBarray set\fR.
-.PP
-Finally, the last form, described in more detail below, refers genericly
-to how the command created by the first two examples is used.
-.SH DESCRIPTION
-
-The Lightweight Directory Access Protocol provides TCP/IP access to
-X.500 directory services and/or to a stand-alone LDAP server.
-
-This code provides a Tcl interface to the
-Lightweight Directory Access Protocol package using the Netscape
-Software Development Kit.  It can also be used with the freely
-redistributable University of 
-Michigan (http://www.umich.edu/~rsug/ldap) version by defining the
-UMICH_LDAP macro during compilation.
-
-.SH CONNECTING TO AN LDAP SERVER
-
-To create an ldap interface entity, we use the "ldap" command.
-
-    ldap open foo foo.bar.com
-
-This opens a connection to a LDAP server on foo.bar.com, and makes
-a new Tcl command, foo, through which we will manipulate the interface
-and make queries to the remote LDAP server.
-
-    ldap init foo foo.bar.com
-
-Same as above, foo is created, but for "init", opening the connection is 
-deferred until we actually try to do something.
-
-The init command also allows some optional values to be set for the connection.
-Currently, the only useful option is \fBprotocol_version\fR which take a
-single argument to specify to use LDAP protocol 2 or 3.  This may be required
-when connecting to older LDAP server.
-
-For the purposes of this example, we're going to assume that "foo" is the
-command created by opening a connection using "ldap open".
-
-.SH BINDING
-
-After a connection is made to an LDAP server, an LDAP bind operation must
-be performed before other operations can be attempted over the connection.
-
-Both simple authentication and kerberos authentication are available.
-LDAP version 3 supports many new "SSL"-style authentication and encryption
-systems, which are not currently supported by the OpenLDAP v1.2 server, and
-hence by this interface package.
-
-Currently simple and kerberos-based authentication, are supported.
-
-To use LDAP and still have reasonable security in a networked, 
-Internet/Intranet environment, secure shell can be used to setup
-secure, encrypted connections between client machines and the LDAP
-server, and between the LDAP server and any replica or slave servers
-that might be used.
-
-To perform the LDAP "bind" operation:
-
-    foo bind simple dn password
-
-    foo bind kerberos_ldap
-    foo bind kerberos_dsa
-    foo bind kerberos_both
-
-It either returns nothing (success), or a Tcl error with appropriate error
-text.
-
-For example,
-
-    foo bind simple "cn=Manager,o=NeoSoft Inc,c=us" "secret"
-
-If you attempt to bind with one of the kerberos authentication types
-described above and your LDAP library was not built with KERBEROS
-defined, you will get an unknown auth type error.
-
-To unbind an LDAP connection previously bound with "bind":
-
-    foo unbind
-
-Note that unbinding also deletes the command (\fBfoo\fR in this case).
-Deleting the command has the same affect.
-
-The ability of the library to callback to the client, enabling re-binding
-while following referrals, is not currently supported.
-
-.SH DELETING OBJECTS
-
-To delete an object in the LDAP database, use
-
-    foo delete dn
-
-To rename an object to another relative distinguished name, use
-
-    foo rename_rdn dn rdn
-
-To rename an object to another relative distinguished name, leaving
-the old entry as some kind of attribute (FIX: not sure if this is
-right or how it works)
-
-    foo modify_rdn dn rdn
-
-
-.SH ADDING NEW OBJECTS
-
-    foo add dn attributePairList
-
-This creates a new distinguished name and defines zero or more attributes.
-
-"attributePairList" is a list of key-value pairs, the same as would
-be returned by "array get" if an array had been set up containing the
-key-value pairs.
-
-    foo add "cn=karl, ou=People, o=NeoSoft Inc, c=US" {cn karl ...}
-
-Some directory servers and/or their client SDKs will automatically
-add the leaf attribute value for you.
-
-Here is a more precise description of how an attributePairList looks:
-
-    {cn {karl {Karl Lehenbauer}} telephone 713-968-5800}
-
-Note here that two cn values, "karl" and "Karl Lehenbauer", are added.
-Is it an error to write:
-
-    {cn {Karl Lehenbauer}}
-
-Which adds two cn values, "Karl" and "Lehenbauer", when the intention
-was to give a single cn value of "Karl Lehenbauer".  In real life, one
-finds oneself making prodigous use of the \fBlist\fR command rather than
-typing hard-coded lists.
-
-We have noticed that the Netscape server will automatically add the
-left-most rdn portion of the DN (ie. cn=karl), whereas the University
-of Michigan and OpenLDAP 1.2 versions do not.
-
-.SH ADDING, DELETING, AND REPLACING OBJECT ATTRIBUTES
-
-You can have multiple values for a given attribute in an LDAP object.
-These are represented in search results, through the Tcl interface,
-as a list.
-
-    foo add_attributes dn attributePairList
-
-This adds key-value pairs to an existing DN.  If an attribute being
-added already exists, the new value will be appended to the list.
-If a particular value being added to an attribute already exists in
-the object a Tcl error is raised.
-
-    foo replace_attributes dn attributePairList
-
-This replaces the specified attributes in an existing DN, leaving
-unnamed ones untouched.  Any previous values for the supplied attributes
-(if any) are discarded.
-
-    foo delete_attributes dn attributePairList
-
-This deletes attributes in the list.  If an attribute "foo" has the
-value list {bar snap}, and you delete using the attributePairList "foo bar",
-"foo" will still have "snap".
-
-If you provide an empty string ("") for the value list,
-the entire attribute will be deleted.
-
-In Ldaptcl version 2.0, multiple operations may be combined into a single
-transaction, ie. as in:
-
-    foo add_attributes dn attributePairList replace attributePairList \
-       delete attributePairList
-
-.SH SEARCHING
-
-The Tcl interface to searching takes a control array, which contains
-a couple of mandatory key-value pairs, and can contain a number of
-optional key-value pairs as well, for controlling the search, a
-destination array, into which the specified attributes (or all attributes
-of matching DNs if none are specified) and values are stored.
-
-The "code" part is executed repeatedly, once for each DN matching the
-search criteria.
-
-.nf
-    foo search controlArray destArray code
-
-       Using data in the control array, a search is performed of the
-       LDAP server opened when foo was created.  Possible elements
-       of the control array are enumerated blow.
-
-       controlArray(base) is the DN being searched from. (required)
-
-       controlArray(filter) contains the search criteria. (required)
-
-       controlArray(scope) must be "base", "one_level", or "subtree".
-           If not specified, scope defaults to "subtree".
-
-       controlArray(deref) must be "never", "search", "find", or "always"
-           If not specified, deref defaults to "never"
-
-       controlArray(attributes) is a list of attributes to be fetched.
-           If not specified, all attributes are fetched.
-
-       controlArray(timeout) a timeout value in seconds (may contain
-           fractional values -- extremely very small values are useful
-           for forcing timeout conditions to test timeouts).
-.fi
-
-For each matching record, destArray is populated with none,
-some or all attribute-value pairs as determined by the request and
-access control lists on the server.
-
-Note:  There are some additional parameters that can be set, such as
-how long the synchronous version of the routines should wait before
-timing out, the interfaces for which are not available in the current
-version.
-
-.SH COMPARE
-
-    foo compare dn attribute value
-
-Interface to the ldap_compare_s() command.
-Compares the value of \fIattribute\fR in the object at \fIdn\fR to the
-\fIvalue\fR given in the command line.  Returns an error if \fIdn\fR
-does not exist.  Otherwise, a 
-
-.SH CACHING (Note: Netscape clients do not have caching interfaces).
-
-The UMich and OpenLDAP client libraries offers the client application fairly
-fine-grained control of caching of results retrieved from searches, 
-offering significant performance improvement and reduced
-network traffic.
-
-By default, the cache is disabled.
-
-To enable caching of data received from an LDAP connection,
-
-    foo cache enable timeout maxmem
-
-       ...where timeout is specified in seconds, and maxmem is the
-       maximum memory to be used for caching, in bytes.
-
-       If maxmem is 0, the cache size is restricted only by the timeout.
-
-    foo cache disable
-
-       ...temporarily inhibits use of the cache (while disabled, new requests
-       are not cached and the cache is not checked when returning results).
-
-       Disabling the cache does not delete its contents.
-
-    foo cache destroy
-
-       ...turns off caching and completely removes the cache from memory.
-
-    foo cache flush
-
-       ...deletes the entire cache contents, but does not affect
-       whether or not the cache is being used.
-
-    foo cache uncache dn
-
-       ...removes from the cache all request results that make reference 
-       to the specified DN.
-
-       This should be used, for example, after doing an add_attributes,
-       delete_attributes, or replace_attributes (ldap_modify(3)) 
-       involving the requested DN.  Generally this should not be needed,
-       as the Tcl interface automatically performs this operation on
-       any dn that is modified (add,replace,delete) while caching is
-       enabled.
-
-    foo cache no_errors
-
-       ...suppresses caching of any requests that result in an error.
-
-    foo cache size_errors
-
-       ...suppresses caching of any requests that result in an error,
-       except for requests resulting in "sizelimit exceeded", which 
-       are cached.  This is the default.
-
-    foo cache all_errors
-
-        ...enables caching of all requests, including those that result
-       in errors.
-
-.SH IMPLEMENTATION DECISIONS
-
-Because we used the new "Tcl object" C interfaces, this package only works
-with Tcl 8.0 or above.
-
-This package interfaces with the University of Michigan LDAP protocol
-package, version 3.3, and OpenLDAP version 1.2, both of which are
-implementations of version 2 of the LDAP protocol.
-
-Although an LDAP client (or server) could be written in native Tcl 8.0,
-as Tcl 8.0 and above can do binary I/O, and Tcl 8 and above have strings 
-that are fully eight-bit clean, for a first implementation, to minimize 
-compatibility problems, we created a C interface to the UMich LDAP library.
-
-A native Tcl implementation would be cool because we could bring the receiving
-of messages into the normal Tcl event loop and run the LDAP interface fully
-asynchronous.
-
-This implementation is blocking, and blocking only.  That is to say that
-the Tcl event loop is frozen while the ldap routines are waiting on data.
-
-This could be fixed either by recoding all of the I/O in the LDAP library
-to use Tcl's I/O system instead, or by simply coding the LDAP interface in
-native Tcl, as mentioned above.
-
-Another advantage of coding in high-level Tcl, of course, is that the
-client would immediately be cross-platform to Windows and the Mac, as
-well as Unix.
-
-Binary data is not currently supported.  It will probably be trivial to 
-add, we just haven't dug into it yet.
-
-
-.SH FOR MORE INFORMATION
-
-This document principally describes how to use our Tcl interface to the 
-LDAP library works.
-
-For more information on LDAP and the University of Michigan LDAP package,
-please visit the website mentioned above.  The package includes substantial
-documentation in the form of UNIX manual pages, a SLAPD/SLURPD guide
-in Adobe Portable Document Format (pdf), and a number of Internet RFCs
-related to LDAP services.
-
-.SH AUTHORS
-It was written by Karl Lehenbauer, of NeoSoft, Inc., in August and
-September of 1997.  Ldap explode, and numerous bug fixes and extensions
-by Randy Kunkee, also of NeoSoft, Inc., in 1998-1999.
-
-.SH KEYWORDS
-element, join, list, separator
-.SH BUGS
-The \fBldap init\fR syntax fails to return anything useful.  Use
-\fBldap open\fR instead.
-
-\fBPackage require Ldaptcl\fR won't work unless the ldap and lber libraries
-are also shared, and ldaptcl.so is itself created with the correct flags
-(eg. -R for Solaris).  In short there's a lot of details to make this part
-work, but it should work out of the box for Solaris.  Other systems may
-require that LD_LIBRARY_PATH or other appropraite environment variables
-be set at build and/or runtime.
-
-An asynchronous interface should be provided with callbacks.
-
-We have never tested Kerberos authentication.
-
-It does not tolerate some illegal operations very well.
-
-It is possible to create empty attributes, ie. attributes which are present
-but have no value.  This is done by deleting the attribute values rather
-than, eg. "foo delete_attributes dn {telephone {}}" which would delete
-the telephone attribute altogether.  A search for presence of the attribute
-may return an object, and yet it may have no value.  This interface presents
-such an object as not having the attribute at all (ie. you cannot tell).
-The Netscape SDK does this for you, so this makes the behavior consistent
-when using UMICH_LDAP.
-
-\--enable-netscape configuration support has not been tested and probably
-has bugs.
diff --git a/contrib/ldaptcl/ldaperr.tcl b/contrib/ldaptcl/ldaperr.tcl
deleted file mode 100644 (file)
index e9f8568..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# ldaperr.tcl: scan ldap.h for error return codes for initializing
-# errorCode table.
-#
-
-proc genstrings {path} {
-    set fp [open $path]
-    while {[gets $fp line] != -1 &&
-       ![string match "#define LDAP_SUCCESS*" $line]} { }
-    puts "/* This file automatically generated, hand edit at your own risk! */"
-    puts -nonewline "char *ldaptclerrorcode\[\] = {
-       NULL"
-    while {[gets $fp line] != -1} {
-       if {[clength $line] == 0 || [ctype space $line]} continue
-       if {[string match *typedef* $line]} break
-       if {![string match #define* $line]} continue
-       if {![string match "#define LDAP_*" $line]} continue
-       if {[string match "*LDAP_RANGE*" $line]} continue
-       if {[string match "*LDAP_API_RESULT*" $line]} continue
-       if {[string match {*\\} $line]} {
-           append line [gets $fp]
-       }
-       lassign $line define macro value
-       set ldap_errcode($macro) $value
-    }
-    #parray ldap_errcode
-    foreach i [array names ldap_errcode] {
-       set value $ldap_errcode($i)
-       #puts stderr "checking $value"
-       if [regexp {^[A-Z_]} $value] {
-           if [info exists ldap_errcode($value)] {
-               set value $ldap_errcode($value)
-               set ldap_errcode($i) $value
-           }
-       }
-       set ldap_errname($value) $i
-    }
-    set lasterr 0
-    foreach value [lsort -integer [array names ldap_errname]] {
-       incr lasterr
-       while {$lasterr < $value} {
-           puts -nonewline ",\n\tNULL"
-           incr lasterr
-       }
-       puts -nonewline ",\n\t\"$ldap_errname($value)\""
-    }
-    puts "\n};"
-    puts "#define LDAPTCL_MAXERR\t$value"
-}
-
-#cmdtrace on
-if !$tcl_interactive {
-    genstrings [lindex $argv 0]
-}
diff --git a/contrib/ldaptcl/man.macros b/contrib/ldaptcl/man.macros
deleted file mode 100644 (file)
index 3af2da9..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-'\" The definitions below are for supplemental macros used in Tcl/Tk
-'\" manual entries.
-'\"
-'\" .AP type name in/out ?indent?
-'\"    Start paragraph describing an argument to a library procedure.
-'\"    type is type of argument (int, etc.), in/out is either "in", "out",
-'\"    or "in/out" to describe whether procedure reads or modifies arg,
-'\"    and indent is equivalent to second arg of .IP (shouldn't ever be
-'\"    needed;  use .AS below instead)
-'\"
-'\" .AS ?type? ?name?
-'\"    Give maximum sizes of arguments for setting tab stops.  Type and
-'\"    name are examples of largest possible arguments that will be passed
-'\"    to .AP later.  If args are omitted, default tab stops are used.
-'\"
-'\" .BS
-'\"    Start box enclosure.  From here until next .BE, everything will be
-'\"    enclosed in one large box.
-'\"
-'\" .BE
-'\"    End of box enclosure.
-'\"
-'\" .CS
-'\"    Begin code excerpt.
-'\"
-'\" .CE
-'\"    End code excerpt.
-'\"
-'\" .VS ?version? ?br?
-'\"    Begin vertical sidebar, for use in marking newly-changed parts
-'\"    of man pages.  The first argument is ignored and used for recording
-'\"    the version when the .VS was added, so that the sidebars can be
-'\"    found and removed when they reach a certain age.  If another argument
-'\"    is present, then a line break is forced before starting the sidebar.
-'\"
-'\" .VE
-'\"    End of vertical sidebar.
-'\"
-'\" .DS
-'\"    Begin an indented unfilled display.
-'\"
-'\" .DE
-'\"    End of indented unfilled display.
-'\"
-'\" .SO
-'\"    Start of list of standard options for a Tk widget.  The
-'\"    options follow on successive lines, in four columns separated
-'\"    by tabs.
-'\"
-'\" .SE
-'\"    End of list of standard options for a Tk widget.
-'\"
-'\" .OP cmdName dbName dbClass
-'\"    Start of description of a specific option.  cmdName gives the
-'\"    option's name as specified in the class command, dbName gives
-'\"    the option's name in the option database, and dbClass gives
-'\"    the option's class in the option database.
-'\"
-'\" .UL arg1 arg2
-'\"    Print arg1 underlined, then print arg2 normally.
-'\"
-'\" SCCS: @(#) man.macros 1.9 97/08/22 18:50:59
-'\"
-'\"    # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
-.if t .wh -1.3i ^B
-.nr ^l \n(.l
-.ad b
-'\"    # Start an argument description
-.de AP
-.ie !"\\$4"" .TP \\$4
-.el \{\
-.   ie !"\\$2"" .TP \\n()Cu
-.   el          .TP 15
-.\}
-.ie !"\\$3"" \{\
-.ta \\n()Au \\n()Bu
-\&\\$1 \\fI\\$2\\fP    (\\$3)
-.\".b
-.\}
-.el \{\
-.br
-.ie !"\\$2"" \{\
-\&\\$1 \\fI\\$2\\fP
-.\}
-.el \{\
-\&\\fI\\$1\\fP
-.\}
-.\}
-..
-'\"    # define tabbing values for .AP
-.de AS
-.nr )A 10n
-.if !"\\$1"" .nr )A \\w'\\$1'u+3n
-.nr )B \\n()Au+15n
-.\"
-.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
-.nr )C \\n()Bu+\\w'(in/out)'u+2n
-..
-.AS Tcl_Interp Tcl_CreateInterp in/out
-'\"    # BS - start boxed text
-'\"    # ^y = starting y location
-'\"    # ^b = 1
-.de BS
-.br
-.mk ^y
-.nr ^b 1u
-.if n .nf
-.if n .ti 0
-.if n \l'\\n(.lu\(ul'
-.if n .fi
-..
-'\"    # BE - end boxed text (draw box now)
-.de BE
-.nf
-.ti 0
-.mk ^t
-.ie n \l'\\n(^lu\(ul'
-.el \{\
-.\"    Draw four-sided box normally, but don't draw top of
-.\"    box if the box started on an earlier page.
-.ie !\\n(^b-1 \{\
-\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
-.\}
-.el \}\
-\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
-.\}
-.\}
-.fi
-.br
-.nr ^b 0
-..
-'\"    # VS - start vertical sidebar
-'\"    # ^Y = starting y location
-'\"    # ^v = 1 (for troff;  for nroff this doesn't matter)
-.de VS
-.if !"\\$2"" .br
-.mk ^Y
-.ie n 'mc \s12\(br\s0
-.el .nr ^v 1u
-..
-'\"    # VE - end of vertical sidebar
-.de VE
-.ie n 'mc
-.el \{\
-.ev 2
-.nf
-.ti 0
-.mk ^t
-\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
-.sp -1
-.fi
-.ev
-.\}
-.nr ^v 0
-..
-'\"    # Special macro to handle page bottom:  finish off current
-'\"    # box/sidebar if in box/sidebar mode, then invoked standard
-'\"    # page bottom macro.
-.de ^B
-.ev 2
-'ti 0
-'nf
-.mk ^t
-.if \\n(^b \{\
-.\"    Draw three-sided box if this is the box's first page,
-.\"    draw two sides but no top otherwise.
-.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
-.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
-.\}
-.if \\n(^v \{\
-.nr ^x \\n(^tu+1v-\\n(^Yu
-\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
-.\}
-.bp
-'fi
-.ev
-.if \\n(^b \{\
-.mk ^y
-.nr ^b 2
-.\}
-.if \\n(^v \{\
-.mk ^Y
-.\}
-..
-'\"    # DS - begin display
-.de DS
-.RS
-.nf
-.sp
-..
-'\"    # DE - end display
-.de DE
-.fi
-.RE
-.sp
-..
-'\"    # SO - start of list of standard options
-.de SO
-.SH "STANDARD OPTIONS"
-.LP
-.nf
-.ta 4c 8c 12c
-.ft B
-..
-'\"    # SE - end of list of standard options
-.de SE
-.fi
-.ft R
-.LP
-See the \\fBoptions\\fR manual entry for details on the standard options.
-..
-'\"    # OP - start of full description for a single option
-.de OP
-.LP
-.nf
-.ta 4c
-Command-Line Name:     \\fB\\$1\\fR
-Database Name: \\fB\\$2\\fR
-Database Class:        \\fB\\$3\\fR
-.fi
-.IP
-..
-'\"    # CS - begin code excerpt
-.de CS
-.RS
-.nf
-.ta .25i .5i .75i 1i
-..
-'\"    # CE - end code excerpt
-.de CE
-.fi
-.RE
-..
-.de UL
-\\$1\l'|0\(ul'\\$2
-..
diff --git a/contrib/ldaptcl/neoXldap.c b/contrib/ldaptcl/neoXldap.c
deleted file mode 100644 (file)
index a9f1a8f..0000000
+++ /dev/null
@@ -1,1470 +0,0 @@
-/*
- * NeoSoft Tcl client extensions to Lightweight Directory Access Protocol.
- * 
- * Copyright (c) 1998-1999 NeoSoft, Inc.  
- * All Rights Reserved.
- * 
- * This software may be used, modified, copied, distributed, and sold,
- * in both source and binary form provided that these copyrights are
- * retained and their terms are followed.
- * 
- * Under no circumstances are the authors or NeoSoft Inc. responsible
- * for the proper functioning of this software, nor do the authors
- * assume any liability for damages incurred with its use.
- * 
- * Redistribution and use in source and binary forms are permitted
- * provided that this notice is preserved and that due credit is given
- * to NeoSoft, Inc.
- * 
- * NeoSoft, Inc. may not be used to endorse or promote products derived
- * from this software without specific prior written permission. This
- * software is provided ``as is'' without express or implied warranty.
- * 
- * Requests for permission may be sent to NeoSoft Inc, 1770 St. James Place,
- * Suite 500, Houston, TX, 77056.
- *
- * $OpenLDAP$
- *
- */
-
-/*
- * This code was originally developed by Karl Lehenbauer to work with
- * Umich-3.3 LDAP.  It was debugged against the Netscape LDAP server
- * and their much more reliable SDK, and again backported to the
- * Umich-3.3 client code.  The UMICH_LDAP define is used to include
- * code that will work with the Umich-3.3 LDAP, but not with Netscape's
- * SDK.  OpenLDAP may support some of these, but they have not been tested.
- * Currently supported by Randy Kunkee (kunkee@OpenLDAP.org).
- */
-
-/*
- * Add timeout to controlArray to set timeout for ldap_result.
- * 4/14/99 - Randy
- */
-
-#include "tclExtend.h"
-
-#include <lber.h>
-#include <ldap.h>
-#include <string.h>
-#include <sys/time.h>
-#include <math.h>
-
-/*
- * Macros to do string compares.  They pre-check the first character before
- * checking of the strings are equal.
- */
-
-#define STREQU(str1, str2) \
-       (((str1) [0] == (str2) [0]) && (strcmp (str1, str2) == 0))
-#define STRNEQU(str1, str2, n) \
-       (((str1) [0] == (str2) [0]) && (strncmp (str1, str2, n) == 0))
-
-/*
- * The following section defines some common macros used by the rest
- * of the code.  It's ugly, and can use some work.  This code was
- * originally developed to work with Umich-3.3 LDAP.  It was debugged
- * against the Netscape LDAP server and the much more reliable SDK,
- * and then again backported to the Umich-3.3 client code.
- */
-#define OPEN_LDAP 1
-#if defined(OPEN_LDAP)
-       /* LDAP_API_VERSION must be defined per the current draft spec
-       ** it's value will be assigned RFC number.  However, as
-       ** no RFC is defined, it's value is currently implementation
-       ** specific (though I would hope it's value is greater than 1823).
-       ** In OpenLDAP 2.x-devel, its 2000 + the draft number, ie 2002.
-       ** This section is for OPENLDAP.
-       */
-#ifndef LDAP_API_FEATURE_X_OPENLDAP
-#define ldap_memfree(p) free(p)
-#endif
-#ifdef LDAP_OPT_ERROR_NUMBER
-#define ldap_get_lderrno(ld)   (ldap_get_option(ld, LDAP_OPT_ERROR_NUMBER, &lderrno), lderrno)
-#else
-#define ldap_get_lderrno(ld) (ld->ld_errno)
-#endif
-#define LDAP_ERR_STRING(ld)  \
-       ldap_err2string(ldap_get_lderrno(ld))
-#elif defined( LDAP_OPT_SIZELIMIT )
-       /*
-       ** Netscape SDK w/ ldap_set_option, ldap_get_option
-       */
-#define LDAP_ERR_STRING(ld)  \
-       ldap_err2string(ldap_get_lderrno(ldap))
-#else
-       /* U-Mich/OpenLDAP 1.x API */
-       /* RFC-1823 w/ changes */
-#define UMICH_LDAP 1
-#define ldap_memfree(p) free(p)
-#define ldap_ber_free(p, n) ber_free(p, n)
-#define ldap_value_free_len(bvals) ber_bvecfree(bvals)
-#define ldap_get_lderrno(ld) (ld->ld_errno)
-#define LDAP_ERR_STRING(ld)  \
-       ldap_err2string(ld->ld_errno)
-#endif
-
-typedef struct ldaptclobj {
-    LDAP       *ldap;
-    int                caching;        /* flag 1/0 if caching is enabled */
-    long       timeout;        /* timeout from last cache enable */
-    long       maxmem;         /* maxmem from last cache enable */
-    Tcl_Obj    *trapCmdObj;    /* error handler */
-    int                *traplist;      /* list of errorCodes to trap */
-    int                flags;
-} LDAPTCL;
-
-
-#define LDAPTCL_INTERRCODES    0x001
-
-#include "ldaptclerr.h"
-
-static
-LDAP_SetErrorCode(LDAPTCL *ldaptcl, int code, Tcl_Interp *interp)
-{
-    char shortbuf[16];
-    char *errp;
-    int   lderrno;
-
-    if (code == -1)
-       code = ldap_get_lderrno(ldaptcl->ldap);
-    if ((ldaptcl->flags & LDAPTCL_INTERRCODES) || code > LDAPTCL_MAXERR ||
-      ldaptclerrorcode[code] == NULL) {
-       sprintf(shortbuf, "0x%03x", code);
-       errp = shortbuf;
-    } else
-       errp = ldaptclerrorcode[code];
-
-    Tcl_SetErrorCode(interp, errp, NULL);
-    if (ldaptcl->trapCmdObj) {
-       int *i;
-       Tcl_Obj *cmdObj;
-       if (ldaptcl->traplist != NULL) {
-           for (i = ldaptcl->traplist; *i && *i != code; i++)
-               ;
-           if (*i == 0) return;
-       }
-       (void) Tcl_EvalObj(interp, ldaptcl->trapCmdObj);
-    }
-}
-
-static
-LDAP_ErrorStringToCode(Tcl_Interp *interp, char *s)
-{
-    int offset;
-    int code;
-
-    offset = (strncasecmp(s, "LDAP_", 5) == 0) ? 0 : 5;
-    for (code = 0; code < LDAPTCL_MAXERR; code++) {
-       if (!ldaptclerrorcode[code]) continue;
-       if (strcasecmp(s, ldaptclerrorcode[code]+offset) == 0)
-           return code;
-    }
-    Tcl_ResetResult(interp);
-    Tcl_AppendResult(interp, s, " is an invalid code", (char *) NULL);
-    return -1;
-}
-
-/*-----------------------------------------------------------------------------
- * LDAP_ProcessOneSearchResult --
- * 
- *   Process one result return from an LDAP search.
- *
- * Paramaters:
- *   o interp -            Tcl interpreter; Errors are returned in result.
- *   o ldap -              LDAP structure pointer.
- *   o entry -             LDAP message pointer.
- *   o destArrayNameObj -  Name of Tcl array in which to store attributes.
- *   o evalCodeObj -       Tcl_Obj pointer to code to eval against this result.
- * Returns:
- *   o TCL_OK if processing succeeded..
- *   o TCL_ERROR if an error occured, with error message in interp.
- *-----------------------------------------------------------------------------
- */
-int
-LDAP_ProcessOneSearchResult (interp, ldap, entry, destArrayNameObj, evalCodeObj)
-    Tcl_Interp     *interp;
-    LDAP           *ldap;
-    LDAPMessage    *entry;
-    Tcl_Obj        *destArrayNameObj;
-    Tcl_Obj        *evalCodeObj;
-{
-    char           *attributeName;
-    Tcl_Obj        *attributeNameObj;
-    Tcl_Obj        *attributeDataObj;
-    int             i; 
-    BerElement     *ber; 
-    struct berval **bvals;
-    char          *dn;
-    int                    lderrno;
-
-    Tcl_UnsetVar (interp, Tcl_GetStringFromObj (destArrayNameObj, NULL), 0);
-
-    dn = ldap_get_dn(ldap, entry);
-    if (dn != NULL) {
-       if (Tcl_SetVar2(interp,         /* set dn */
-                      Tcl_GetStringFromObj(destArrayNameObj, NULL),
-                      "dn",
-                      dn,
-                      TCL_LEAVE_ERR_MSG) == NULL)
-           return TCL_ERROR;
-       ldap_memfree(dn);
-    }
-    attributeNameObj = Tcl_NewObj();
-    Tcl_IncrRefCount (attributeNameObj);
-
-    /* Note that attributeName below is allocated for OL2+ libldap, so it
-       must be freed with ldap_memfree().  Test below is admittedly a hack.
-    */
-
-    for (attributeName = ldap_first_attribute (ldap, entry, &ber); 
-      attributeName != NULL;
-      attributeName = ldap_next_attribute(ldap, entry, ber)) {
-
-       bvals = ldap_get_values_len(ldap, entry, attributeName);
-
-       if (bvals != NULL) {
-           /* Note here that the U.of.M. ldap will return a null bvals
-              when the last attribute value has been deleted, but still
-              retains the attributeName.  Even though this is documented
-              as an error, we ignore it to present a consistent interface
-              with Netscape's server
-           */
-           attributeDataObj = Tcl_NewObj();
-           Tcl_SetStringObj(attributeNameObj, attributeName, -1);
-#if LDAP_API_VERSION >= 2004
-           ldap_memfree(attributeName);        /* free if newer API */
-#endif
-           for (i = 0; bvals[i] != NULL; i++) {
-               Tcl_Obj *singleAttributeValueObj;
-
-               singleAttributeValueObj = Tcl_NewStringObj(bvals[i]->bv_val, bvals[i]->bv_len);
-               if (Tcl_ListObjAppendElement (interp, 
-                                             attributeDataObj, 
-                                             singleAttributeValueObj) 
-                 == TCL_ERROR) {
-                   ber_free(ber, 0);
-                   return TCL_ERROR;
-               }
-           }
-
-           ldap_value_free_len(bvals);
-
-           if (Tcl_ObjSetVar2 (interp, 
-                               destArrayNameObj,
-                               attributeNameObj,
-                               attributeDataObj,
-                               TCL_LEAVE_ERR_MSG) == NULL) {
-               return TCL_ERROR;
-           }
-       }
-    }
-    Tcl_DecrRefCount (attributeNameObj);
-    return Tcl_EvalObj (interp, evalCodeObj);
-}
-
-/*-----------------------------------------------------------------------------
- * LDAP_PerformSearch --
- * 
- *   Perform an LDAP search.
- *
- * Paramaters:
- *   o interp -            Tcl interpreter; Errors are returned in result.
- *   o ldap -              LDAP structure pointer.
- *   o base -              Base DN from which to perform search.
- *   o scope -             LDAP search scope, must be one of LDAP_SCOPE_BASE,
- *                         LDAP_SCOPE_ONELEVEL, or LDAP_SCOPE_SUBTREE.
- *   o attrs -             Pointer to array of char * pointers of desired
- *                         attribute names, or NULL for all attributes.
- *   o filtpatt            LDAP filter pattern.
- *   o value               Value to get sprintf'ed into filter pattern.
- *   o destArrayNameObj -  Name of Tcl array in which to store attributes.
- *   o evalCodeObj -       Tcl_Obj pointer to code to eval against this result.
- * Returns:
- *   o TCL_OK if processing succeeded..
- *   o TCL_ERROR if an error occured, with error message in interp.
- *-----------------------------------------------------------------------------
- */
-int 
-LDAP_PerformSearch (interp, ldaptcl, base, scope, attrs, filtpatt, value,
-       destArrayNameObj, evalCodeObj, timeout_p, all, sortattr)
-    Tcl_Interp     *interp;
-    LDAPTCL        *ldaptcl;
-    char           *base;
-    int             scope;
-    char          **attrs;
-    char           *filtpatt;
-    char           *value;
-    Tcl_Obj        *destArrayNameObj;
-    Tcl_Obj        *evalCodeObj;
-    struct timeval *timeout_p;
-    int                    all;
-    char          *sortattr;
-{
-    LDAP        *ldap = ldaptcl->ldap;
-    char          filter[BUFSIZ];
-    int           resultCode;
-    int           errorCode;
-    int                  abandon;
-    int                  tclResult = TCL_OK;
-    int                  msgid;
-    LDAPMessage  *resultMessage = 0;
-    LDAPMessage  *entryMessage = 0;
-    char         *sortKey;
-
-    int                  lderrno;
-
-    sprintf(filter, filtpatt, value);
-
-    fflush(stderr);
-    if ((msgid = ldap_search (ldap, base, scope, filter, attrs, 0)) == -1) {
-       Tcl_AppendResult (interp,
-                               "LDAP start search error: ",
-                                       LDAP_ERR_STRING(ldap),
-                               (char *)NULL);
-       LDAP_SetErrorCode(ldaptcl, -1, interp);
-       return TCL_ERROR;
-    }
-
-    abandon = 0;
-    if (sortattr)
-       all = 1;
-    tclResult = TCL_OK;
-    while (!abandon) {
-       resultCode = ldap_result (ldap, msgid, all, timeout_p, &resultMessage);
-       if (resultCode != LDAP_RES_SEARCH_RESULT &&
-           resultCode != LDAP_RES_SEARCH_ENTRY)
-               break;
-
-       if (sortattr) {
-           sortKey = (strcasecmp(sortattr, "dn") == 0) ? NULL : sortattr;
-           ldap_sort_entries(ldap, &resultMessage, sortKey, strcasecmp);
-       }
-       entryMessage = ldap_first_entry(ldap, resultMessage);
-
-       while (entryMessage) {
-           tclResult = LDAP_ProcessOneSearchResult  (interp, 
-                                   ldap, 
-                                   entryMessage,
-                                   destArrayNameObj,
-                                   evalCodeObj);
-           if (tclResult != TCL_OK) {
-               if (tclResult == TCL_CONTINUE) {
-                   tclResult = TCL_OK;
-               } else if (tclResult == TCL_BREAK) {
-                   tclResult = TCL_OK;
-                   abandon = 1;
-                   break;
-               } else if (tclResult == TCL_ERROR) {
-                   char msg[100];
-                   sprintf(msg, "\n    (\"search\" body line %d)",
-                           interp->errorLine);
-                   Tcl_AddObjErrorInfo(interp, msg, -1);
-                   abandon = 1;
-                   break;
-               } else {
-                   abandon = 1;
-                   break;
-               }
-           }
-           entryMessage = ldap_next_entry(ldap, entryMessage);
-       }
-       if (resultCode == LDAP_RES_SEARCH_RESULT || all)
-           break;
-       if (resultMessage)
-       ldap_msgfree(resultMessage);
-       resultMessage = NULL;
-    }
-    if (abandon) {
-       if (resultMessage)
-           ldap_msgfree(resultMessage);
-       if (resultCode == LDAP_RES_SEARCH_ENTRY)
-           ldap_abandon(ldap, msgid);
-       return tclResult;
-    }
-    if (resultCode == -1) {
-       Tcl_ResetResult (interp);
-       Tcl_AppendResult (interp,
-                               "LDAP result search error: ",
-                               LDAP_ERR_STRING(ldap),
-                               (char *)NULL);
-       LDAP_SetErrorCode(ldaptcl, -1, interp);
-       return TCL_ERROR;
-    }
-
-    if ((errorCode = ldap_result2error (ldap, resultMessage, 0))
-      != LDAP_SUCCESS) {
-      Tcl_ResetResult (interp);
-      Tcl_AppendResult (interp,
-                             "LDAP search error: ",
-                             ldap_err2string(errorCode),
-                             (char *)NULL);
-      if (resultMessage)
-         ldap_msgfree(resultMessage);
-      LDAP_SetErrorCode(ldaptcl, errorCode, interp);
-      return TCL_ERROR;
-    }
-    if (resultMessage)
-       ldap_msgfree(resultMessage);
-    return tclResult;
-}
-
-/*-----------------------------------------------------------------------------
- * NeoX_LdapTargetObjCmd --
- *  
- * Implements the body of commands created by Neo_LdapObjCmd.
- *  
- * Results:
- *      A standard Tcl result.
- *      
- * Side effects:
- *      See the user documentation.
- *-----------------------------------------------------------------------------
- */     
-int
-NeoX_LdapTargetObjCmd (clientData, interp, objc, objv)
-    ClientData    clientData;
-    Tcl_Interp   *interp;
-    int           objc;
-    Tcl_Obj      *CONST objv[];
-{
-    char         *command;
-    char         *subCommand;
-    LDAPTCL      *ldaptcl = (LDAPTCL *)clientData;
-    LDAP         *ldap = ldaptcl->ldap;
-    char         *dn;
-    int           is_add = 0;
-    int           is_add_or_modify = 0;
-    int           mod_op = 0;
-    char        *m, *s, *errmsg;
-    int                 errcode;
-    int                 tclResult;
-    int                 lderrno;       /* might be used by LDAP_ERR_STRING macro */
-
-    Tcl_Obj      *resultObj = Tcl_GetObjResult (interp);
-
-    if (objc < 2) {
-       Tcl_WrongNumArgs (interp, 1, objv, "subcommand [args...]");
-       return TCL_ERROR;
-    }
-
-    command = Tcl_GetStringFromObj (objv[0], NULL);
-    subCommand = Tcl_GetStringFromObj (objv[1], NULL);
-
-    /* object bind authtype name password */
-    if (STREQU (subCommand, "bind")) {
-       char     *binddn;
-       char     *passwd;
-       int       stringLength;
-       char     *ldap_authString;
-       int       ldap_authInt;
-
-       if (objc != 5) {
-           Tcl_WrongNumArgs (interp, 2, objv, "authtype dn passwd");
-           return TCL_ERROR;
-       }
-
-       ldap_authString = Tcl_GetStringFromObj (objv[2], NULL);
-
-       if (STREQU (ldap_authString, "simple")) {
-           ldap_authInt = LDAP_AUTH_SIMPLE;
-       }
-#ifdef UMICH_LDAP
-       else if (STREQU (ldap_authString, "kerberos_ldap")) {
-           ldap_authInt = LDAP_AUTH_KRBV41;
-       } else if (STREQU (ldap_authString, "kerberos_dsa")) {
-           ldap_authInt = LDAP_AUTH_KRBV42;
-       } else if (STREQU (ldap_authString, "kerberos_both")) {
-           ldap_authInt = LDAP_AUTH_KRBV4;
-       }
-#endif
-       else {
-           Tcl_AppendStringsToObj (resultObj,
-                                   "\"",
-                                   command,
-                                   " ",
-                                   subCommand, 
-#ifdef UMICH_LDAP
-                                   "\" authtype must be one of \"simple\", ",
-                                   "\"kerberos_ldap\", \"kerberos_dsa\" ",
-                                   "or \"kerberos_both\"",
-#else
-                                   "\" authtype must be \"simple\", ",
-#endif
-                                   (char *)NULL);
-           return TCL_ERROR;
-       }
-
-       binddn = Tcl_GetStringFromObj (objv[3], &stringLength);
-       if (stringLength == 0)
-           binddn = NULL;
-
-       passwd = Tcl_GetStringFromObj (objv[4], &stringLength);
-       if (stringLength == 0)
-           passwd = NULL;
-
-/*  ldap_bind_s(ldap, dn, pw, method) */
-
-#ifdef UMICH_LDAP
-#define LDAP_BIND(ldap, dn, pw, method) \
-  ldap_bind_s(ldap, dn, pw, method)
-#else
-#define LDAP_BIND(ldap, dn, pw, method) \
-  ldap_simple_bind_s(ldap, dn, pw)
-#endif
-       if ((errcode = LDAP_BIND (ldap, 
-                        binddn, 
-                        passwd, 
-                        ldap_authInt)) != LDAP_SUCCESS) {
-
-           Tcl_AppendStringsToObj (resultObj,
-                                   "LDAP bind error: ",
-                                   ldap_err2string(errcode),
-                                   (char *)NULL);
-           LDAP_SetErrorCode(ldaptcl, errcode, interp);
-           return TCL_ERROR;
-       }
-       return TCL_OK;
-    }
-
-    if (STREQU (subCommand, "unbind")) {
-       if (objc != 2) {
-           Tcl_WrongNumArgs (interp, 2, objv, "");
-           return TCL_ERROR;
-       }
-
-       return Tcl_DeleteCommand(interp, Tcl_GetStringFromObj(objv[0], NULL));
-    }
-
-    /* object delete dn */
-    if (STREQU (subCommand, "delete")) {
-       if (objc != 3) {
-           Tcl_WrongNumArgs (interp, 2, objv, "dn");
-           return TCL_ERROR;
-       }
-
-       dn = Tcl_GetStringFromObj (objv [2], NULL);
-       if ((errcode = ldap_delete_s(ldap, dn)) != LDAP_SUCCESS) {
-          Tcl_AppendStringsToObj (resultObj,
-                                  "LDAP delete error: ",
-                                  ldap_err2string(errcode),
-                                  (char *)NULL);
-          LDAP_SetErrorCode(ldaptcl, errcode, interp);
-          return TCL_ERROR;
-       }
-       return TCL_OK;
-    }
-
-    /* object rename_rdn dn rdn */
-    /* object modify_rdn dn rdn */
-    if (STREQU (subCommand, "rename_rdn") || STREQU (subCommand, "modify_rdn")) {
-       char    *rdn;
-       int      deleteOldRdn;
-
-       if (objc != 4) {
-           Tcl_WrongNumArgs (interp, 2, objv, "dn rdn");
-           return TCL_ERROR;
-       }
-
-       dn = Tcl_GetStringFromObj (objv [2], NULL);
-       rdn = Tcl_GetStringFromObj (objv [3], NULL);
-
-       deleteOldRdn = (*subCommand == 'r');
-
-       if ((errcode = ldap_modrdn2_s (ldap, dn, rdn, deleteOldRdn)) != LDAP_SUCCESS) {
-           Tcl_AppendStringsToObj (resultObj,
-                                   "LDAP ",
-                                   subCommand,
-                                   " error: ",
-                                   ldap_err2string(errcode),
-                                   (char *)NULL);
-           LDAP_SetErrorCode(ldaptcl, errcode, interp);
-           return TCL_ERROR;
-       }
-       return TCL_OK;
-    }
-
-    /* object add dn attributePairList */
-    /* object add_attributes dn attributePairList */
-    /* object replace_attributes dn attributePairList */
-    /* object delete_attributes dn attributePairList */
-
-    if (STREQU (subCommand, "add")) {
-       is_add = 1;
-       is_add_or_modify = 1;
-    } else {
-       is_add = 0;
-       if (STREQU (subCommand, "add_attributes")) {
-           is_add_or_modify = 1;
-           mod_op = LDAP_MOD_ADD;
-       } else if (STREQU (subCommand, "replace_attributes")) {
-           is_add_or_modify = 1;
-           mod_op = LDAP_MOD_REPLACE;
-       } else if (STREQU (subCommand, "delete_attributes")) {
-           is_add_or_modify = 1;
-           mod_op = LDAP_MOD_DELETE;
-       }
-    }
-
-    if (is_add_or_modify) {
-       int          result;
-       LDAPMod    **modArray;
-       LDAPMod     *mod;
-       char       **valPtrs = NULL;
-       int          attribObjc;
-       Tcl_Obj    **attribObjv;
-       int          valuesObjc;
-       Tcl_Obj    **valuesObjv;
-       int          nPairs, allPairs;
-       int          i;
-       int          j;
-       int          pairIndex;
-       int          modIndex;
-
-       Tcl_Obj      *resultObj = Tcl_GetObjResult (interp);
-
-       if (objc < 4 || objc > 4 && is_add || is_add == 0 && objc&1) {
-           Tcl_AppendStringsToObj (resultObj,
-                                   "wrong # args: ",
-                                   Tcl_GetStringFromObj (objv [0], NULL),
-                                   " ",
-                                   subCommand,
-                                   " dn attributePairList",
-                                   (char *)NULL);
-           if (!is_add)
-               Tcl_AppendStringsToObj (resultObj,
-                   " ?[add|delete|replace] attributePairList ...?", (char *)NULL);
-           return TCL_ERROR;
-       }
-
-       dn = Tcl_GetStringFromObj (objv [2], NULL);
-
-       allPairs = 0;
-       for (i = 3; i < objc; i += 2) {
-           if (Tcl_ListObjLength (interp, objv[i], &j) == TCL_ERROR)
-               return TCL_ERROR;
-           if (j & 1) {
-               Tcl_AppendStringsToObj (resultObj,
-                                       "attribute list does not contain an ",
-                                       "even number of key-value elements",
-                                       (char *)NULL);
-               return TCL_ERROR;
-           }
-           allPairs += j / 2;
-       }
-
-       modArray = (LDAPMod **)malloc (sizeof(LDAPMod *) * (allPairs + 1));
-
-       pairIndex = 3;
-       modIndex = 0;
-
-       do {
-
-       if (Tcl_ListObjGetElements (interp, objv [pairIndex], &attribObjc, &attribObjv)
-         == TCL_ERROR) {
-          mod_op = -1;
-          goto badop;
-       }
-
-       nPairs = attribObjc / 2;
-
-       for (i = 0; i < nPairs; i++) {
-           mod = modArray[modIndex++] = (LDAPMod *) malloc (sizeof(LDAPMod));
-           mod->mod_op = mod_op;
-           mod->mod_type = Tcl_GetStringFromObj (attribObjv [i * 2], NULL);
-
-           if (Tcl_ListObjGetElements (interp, attribObjv [i * 2 + 1], &valuesObjc, &valuesObjv) == TCL_ERROR) {
-               /* FIX: cleanup memory here */
-               mod_op = -1;
-               goto badop;
-           }
-
-           valPtrs = mod->mod_vals.modv_strvals = \
-               (char **)malloc (sizeof (char *) * (valuesObjc + 1));
-           valPtrs[valuesObjc] = (char *)NULL;
-
-           for (j = 0; j < valuesObjc; j++) {
-               valPtrs [j] = Tcl_GetStringFromObj (valuesObjv[j], NULL);
-
-               /* If it's "delete" and value is an empty string, make
-                * value be NULL to indicate entire attribute is to be 
-                * deleted */
-               if ((*valPtrs [j] == '\0') 
-                   && (mod->mod_op == LDAP_MOD_DELETE || mod->mod_op == LDAP_MOD_REPLACE)) {
-                       valPtrs [j] = NULL;
-               }
-           }
-       }
-
-       pairIndex += 2;
-       if (mod_op != -1 && pairIndex < objc) {
-           subCommand = Tcl_GetStringFromObj (objv[pairIndex - 1], NULL);
-           mod_op = -1;
-           if (STREQU (subCommand, "add")) {
-               mod_op = LDAP_MOD_ADD;
-           } else if (STREQU (subCommand, "replace")) {
-               mod_op = LDAP_MOD_REPLACE;
-           } else if (STREQU (subCommand, "delete")) {
-               mod_op = LDAP_MOD_DELETE;
-           }
-           if (mod_op == -1) {
-               Tcl_SetStringObj (resultObj,
-                       "Additional operators must be one of"
-                       " add, replace, or delete", -1);
-               mod_op = -1;
-               goto badop;
-           }
-       }
-
-       } while (mod_op != -1 && pairIndex < objc);
-       modArray[modIndex] = (LDAPMod *) NULL;
-
-       if (is_add) {
-           result = ldap_add_s (ldap, dn, modArray);
-       } else {
-           result = ldap_modify_s (ldap, dn, modArray);
-           if (ldaptcl->caching)
-               ldap_uncache_entry (ldap, dn);
-       }
-
-        /* free the modArray elements, then the modArray itself. */
-badop:
-       for (i = 0; i < modIndex; i++) {
-           free ((char *) modArray[i]->mod_vals.modv_strvals);
-           free ((char *) modArray[i]);
-       }
-       free ((char *) modArray);
-
-       /* after modArray is allocated, mod_op = -1 upon error for cleanup */
-       if (mod_op == -1)
-           return TCL_ERROR;
-
-       /* FIX: memory cleanup required all over the place here */
-        if (result != LDAP_SUCCESS) {
-           Tcl_AppendStringsToObj (resultObj,
-                                   "LDAP ",
-                                   subCommand,
-                                   " error: ",
-                                   ldap_err2string(result),
-                                   (char *)NULL);
-           LDAP_SetErrorCode(ldaptcl, result, interp);
-           return TCL_ERROR;
-       }
-       return TCL_OK;
-    }
-
-    /* object search controlArray dn pattern */
-    if (STREQU (subCommand, "search")) {
-       char        *controlArrayName;
-       Tcl_Obj     *controlArrayNameObj;
-
-       char        *scopeString;
-       int          scope;
-
-       char        *derefString;
-       int          deref;
-
-       char        *baseString;
-
-       char       **attributesArray;
-       char        *attributesString;
-       int          attributesArgc;
-
-       char        *filterPatternString;
-
-       char        *timeoutString;
-       double       timeoutTime;
-       struct timeval timeout, *timeout_p;
-
-       char        *paramString;
-       int          cacheThis = -1;
-       int          all = 0;
-
-       char        *sortattr;
-
-       Tcl_Obj     *destArrayNameObj;
-       Tcl_Obj     *evalCodeObj;
-
-       if (objc != 5) {
-           Tcl_WrongNumArgs (interp, 2, objv,
-                                  "controlArray destArray code");
-           return TCL_ERROR;
-       }
-
-        controlArrayNameObj = objv [2];
-       controlArrayName = Tcl_GetStringFromObj (controlArrayNameObj, NULL);
-
-       destArrayNameObj = objv [3];
-
-       evalCodeObj = objv [4];
-
-       baseString = Tcl_GetVar2 (interp, 
-                                 controlArrayName, 
-                                 "base",
-                                 0);
-
-       if (baseString == (char *)NULL) {
-           Tcl_AppendStringsToObj (resultObj,
-                                   "required element \"base\" ",
-                                   "is missing from ldap control array \"",
-                                   controlArrayName,
-                                   "\"",
-                                   (char *)NULL);
-           return TCL_ERROR;
-       }
-
-       filterPatternString = Tcl_GetVar2 (interp,
-                                          controlArrayName,
-                                          "filter",
-                                          0);
-       if (filterPatternString == (char *)NULL) {
-           filterPatternString = "(objectclass=*)";
-       }
-
-       /* Fetch scope setting from control array.
-        * If it doesn't exist, default to subtree scoping.
-        */
-       scopeString = Tcl_GetVar2 (interp, controlArrayName, "scope", 0);
-       if (scopeString == NULL) {
-           scope = LDAP_SCOPE_SUBTREE;
-       } else {
-           if (STREQU(scopeString, "base")) 
-               scope = LDAP_SCOPE_BASE;
-           else if (STRNEQU(scopeString, "one", 3))
-               scope = LDAP_SCOPE_ONELEVEL;
-           else if (STRNEQU(scopeString, "sub", 3))
-               scope = LDAP_SCOPE_SUBTREE;
-           else {
-               Tcl_AppendStringsToObj (resultObj,
-                                       "\"scope\" element of \"",
-                                       controlArrayName,
-                                       "\" array is not one of ",
-                                       "\"base\", \"onelevel\", ",
-                                       "or \"subtree\"",
-                                     (char *) NULL);
-               return TCL_ERROR;
-           }
-       }
-
-#ifdef LDAP_OPT_DEREF                                
-       /* Fetch dereference control setting from control array.
-        * If it doesn't exist, default to never dereference. */
-       derefString = Tcl_GetVar2 (interp,
-                                  controlArrayName,
-                                  "deref",
-                                  0);
-       if (derefString == (char *)NULL) {
-           deref = LDAP_DEREF_NEVER;
-       } else {
-           if (STREQU(derefString, "never"))
-               deref = LDAP_DEREF_NEVER;
-           else if (STREQU(derefString, "search"))
-               deref = LDAP_DEREF_SEARCHING;
-           else if (STREQU(derefString, "find"))
-               deref = LDAP_DEREF_FINDING;
-           else if (STREQU(derefString, "always"))
-               deref = LDAP_DEREF_ALWAYS;
-           else {
-               Tcl_AppendStringsToObj (resultObj,
-                                       "\"deref\" element of \"",
-                                       controlArrayName,
-                                       "\" array is not one of ",
-                                       "\"never\", \"search\", \"find\", ",
-                                       "or \"always\"",
-                                       (char *) NULL);
-               return TCL_ERROR;
-           }
-       }
-#endif
-
-       /* Fetch list of attribute names from control array.
-        * If entry doesn't exist, default to NULL (all).
-        */
-       attributesString = Tcl_GetVar2 (interp,
-                                       controlArrayName,
-                                       "attributes", 
-                                       0);
-       if (attributesString == (char *)NULL) {
-           attributesArray = NULL;
-       } else {
-           if ((Tcl_SplitList (interp, 
-                               attributesString,
-                               &attributesArgc, 
-                               &attributesArray)) != TCL_OK) {
-               return TCL_ERROR;
-           }
-       }
-
-       /* Fetch timeout value if there is one
-        */
-       timeoutString = Tcl_GetVar2 (interp,
-                                       controlArrayName,
-                                       "timeout", 
-                                       0);
-       timeout.tv_usec = 0;
-       if (timeoutString == (char *)NULL) {
-           timeout_p = NULL;
-           timeout.tv_sec = 0;
-       } else {
-           if (Tcl_GetDouble(interp, timeoutString, &timeoutTime) != TCL_OK)
-               return TCL_ERROR;
-           timeout.tv_sec = floor(timeoutTime);
-           timeout.tv_usec = (timeoutTime-timeout.tv_sec) * 1000000;
-           timeout_p = &timeout;
-       }
-
-       paramString = Tcl_GetVar2 (interp, controlArrayName, "cache", 0);
-       if (paramString) {
-           if (Tcl_GetInt(interp, paramString, &cacheThis) == TCL_ERROR)
-               return TCL_ERROR;
-       }
-
-       paramString = Tcl_GetVar2 (interp, controlArrayName, "all", 0);
-       if (paramString) {
-           if (Tcl_GetInt(interp, paramString, &all) == TCL_ERROR)
-               return TCL_ERROR;
-       }
-
-       sortattr = Tcl_GetVar2 (interp, controlArrayName, "sort", 0);
-
-#ifdef UMICH_LDAP
-       ldap->ld_deref = deref; 
-       ldap->ld_timelimit = 0;
-       ldap->ld_sizelimit = 0; 
-       ldap->ld_options = 0;
-#endif
-
-       /* Caching control within the search: if the "cache" control array */
-       /* value is set, disable/enable caching accordingly */
-
-#if 0
-       if (cacheThis >= 0 && ldaptcl->caching != cacheThis) {
-           if (cacheThis) {
-               if (ldaptcl->timeout == 0) {
-                   Tcl_SetStringObj(resultObj, "Caching never before enabled, I have no timeout value to use", -1);
-                   return TCL_ERROR;
-               }
-               ldap_enable_cache(ldap, ldaptcl->timeout, ldaptcl->maxmem);
-           }
-           else
-               ldap_disable_cache(ldap);
-       }
-#endif
-
-#ifdef LDAP_OPT_DEREF
-       ldap_set_option(ldap, LDAP_OPT_DEREF, &deref);
-#endif
-
-       tclResult = LDAP_PerformSearch (interp, 
-                                   ldaptcl, 
-                                   baseString, 
-                                   scope, 
-                                   attributesArray, 
-                                   filterPatternString, 
-                                   "",
-                                   destArrayNameObj,
-                                   evalCodeObj,
-                                   timeout_p,
-                                   all,
-                                   sortattr);
-       /* Following the search, if we changed the caching behavior, change */
-       /* it back. */
-#if 0
-       if (cacheThis >= 0 && ldaptcl->caching != cacheThis) {
-           if (cacheThis)
-               ldap_disable_cache(ldap);
-           else
-               ldap_enable_cache(ldap, ldaptcl->timeout, ldaptcl->maxmem);
-       }
-#ifdef LDAP_OPT_DEREF
-       deref = LDAP_DEREF_NEVER;
-       ldap_set_option(ldap, LDAP_OPT_DEREF, &deref);
-#endif
-#endif
-       return tclResult;
-    }
-
-    /* object compare dn attr value */
-    if (STREQU (subCommand, "compare")) {
-       char        *dn;
-       char        *attr;
-       char        *value;
-       int          result;
-       int          lderrno;
-
-       if (objc != 5) {
-           Tcl_WrongNumArgs (interp, 
-                                  2, objv,
-                                  "dn attribute value");
-           return TCL_ERROR;
-       }
-
-       dn = Tcl_GetStringFromObj (objv[2], NULL);
-       attr = Tcl_GetStringFromObj (objv[3], NULL);
-       value = Tcl_GetStringFromObj (objv[4], NULL);
-       
-       result = ldap_compare_s (ldap, dn, attr, value);
-       if (result == LDAP_COMPARE_TRUE || result == LDAP_COMPARE_FALSE) {
-           Tcl_SetBooleanObj(resultObj, result == LDAP_COMPARE_TRUE);
-           return TCL_OK;
-       }
-       LDAP_SetErrorCode(ldaptcl, result, interp);
-       Tcl_AppendStringsToObj (resultObj,
-                               "LDAP compare error: ",
-                               LDAP_ERR_STRING(ldap),
-                               (char *)NULL);
-       return TCL_ERROR;
-    }
-
-    if (STREQU (subCommand, "cache")) {
-#if defined(UMICH_LDAP) || (defined(OPEN_LDAP) && !defined(LDAP_API_VERSION))
-       char *cacheCommand;
-
-       if (objc < 3) {
-         badargs:
-           Tcl_WrongNumArgs (interp, 2, objv [0], "command [args...]");
-           return TCL_ERROR;
-       }
-
-       cacheCommand = Tcl_GetStringFromObj (objv [2], NULL);
-
-       if (STREQU (cacheCommand, "uncache")) {
-           char *dn;
-
-           if (objc != 4) {
-               Tcl_WrongNumArgs (interp, 
-                                      3, objv,
-                                      "dn");
-               return TCL_ERROR;
-           }
-
-            dn = Tcl_GetStringFromObj (objv [3], NULL);
-           ldap_uncache_entry (ldap, dn);
-           return TCL_OK;
-       }
-
-       if (STREQU (cacheCommand, "enable")) {
-           long   timeout = ldaptcl->timeout;
-           long   maxmem = ldaptcl->maxmem;
-
-           if (objc > 5) {
-               Tcl_WrongNumArgs (interp, 3, objv, "?timeout? ?maxmem?");
-               return TCL_ERROR;
-           }
-
-           if (objc > 3) {
-               if (Tcl_GetLongFromObj (interp, objv [3], &timeout) == TCL_ERROR)
-                   return TCL_ERROR;
-           }
-           if (timeout == 0) {
-               Tcl_SetStringObj(resultObj,
-                   objc > 3 ? "timeouts must be greater than 0" : 
-                   "no previous timeout to reference", -1);
-               return TCL_ERROR;
-           }
-
-           if (objc > 4)
-               if (Tcl_GetLongFromObj (interp, objv [4], &maxmem) == TCL_ERROR)
-                   return TCL_ERROR;
-
-           if (ldap_enable_cache (ldap, timeout, maxmem) == -1) {
-               Tcl_AppendStringsToObj (resultObj,
-                                       "LDAP cache enable error: ",
-                                       LDAP_ERR_STRING(ldap),
-                                       (char *)NULL);
-               LDAP_SetErrorCode(ldaptcl, -1, interp);
-               return TCL_ERROR;
-           }
-           ldaptcl->caching = 1;
-           ldaptcl->timeout = timeout;
-           ldaptcl->maxmem = maxmem;
-           return TCL_OK;
-       }
-
-       if (objc != 3) goto badargs;
-
-       if (STREQU (cacheCommand, "disable")) {
-           ldap_disable_cache (ldap);
-           ldaptcl->caching = 0;
-           return TCL_OK;
-       }
-
-       if (STREQU (cacheCommand, "destroy")) {
-           ldap_destroy_cache (ldap);
-           ldaptcl->caching = 0;
-           return TCL_OK;
-       }
-
-       if (STREQU (cacheCommand, "flush")) {
-           ldap_flush_cache (ldap);
-           return TCL_OK;
-       }
-
-       if (STREQU (cacheCommand, "no_errors")) {
-           ldap_set_cache_options (ldap, LDAP_CACHE_OPT_CACHENOERRS);
-           return TCL_OK;
-       }
-
-       if (STREQU (cacheCommand, "all_errors")) {
-           ldap_set_cache_options (ldap, LDAP_CACHE_OPT_CACHEALLERRS);
-           return TCL_OK;
-       }
-
-       if (STREQU (cacheCommand, "size_errors")) {
-           ldap_set_cache_options (ldap, 0);
-           return TCL_OK;
-       }
-       Tcl_AppendStringsToObj (resultObj,
-                               "\"",
-                               command,
-                               " ",
-                               subCommand, 
-                               "\" subcommand", 
-                               " must be one of \"enable\", ",
-                               "\"disable\", ",
-                               "\"destroy\", \"flush\", \"uncache\", ",
-                               "\"no_errors\", \"size_errors\",",
-                               " or \"all_errors\"",
-                               (char *)NULL);
-       return TCL_ERROR;
-#else
-       return TCL_OK;
-#endif
-    }
-    if (STREQU (subCommand, "trap")) {
-       Tcl_Obj *listObj, *resultObj;
-       int *p, l, i, code;
-
-       if (objc > 4) {
-           Tcl_WrongNumArgs (interp, 2, objv,
-                                  "command ?errorCode-list?");
-           return TCL_ERROR;
-       }
-       if (objc == 2) {
-           if (!ldaptcl->trapCmdObj)
-               return TCL_OK;
-           resultObj = Tcl_NewListObj(0, NULL);
-           Tcl_ListObjAppendElement(interp, resultObj, ldaptcl->trapCmdObj);
-           if (ldaptcl->traplist) {
-               listObj = Tcl_NewObj();
-               for (p = ldaptcl->traplist; *p; p++) {
-                   Tcl_ListObjAppendElement(interp, listObj, 
-                       Tcl_NewStringObj(ldaptclerrorcode[*p], -1));
-               }
-               Tcl_ListObjAppendElement(interp, resultObj, listObj);
-           }
-           Tcl_SetObjResult(interp, resultObj);
-           return TCL_OK;
-       }
-       if (ldaptcl->trapCmdObj) {
-           Tcl_DecrRefCount (ldaptcl->trapCmdObj);
-           ldaptcl->trapCmdObj = NULL;
-       }
-       if (ldaptcl->traplist) {
-           free(ldaptcl->traplist);
-           ldaptcl->traplist = NULL;
-       }
-       Tcl_GetStringFromObj(objv[2], &l);
-       if (l == 0)
-           return TCL_OK;              /* just turn off trap */
-       ldaptcl->trapCmdObj = objv[2];
-       Tcl_IncrRefCount (ldaptcl->trapCmdObj);
-       if (objc < 4)
-           return TCL_OK;              /* no code list */
-       if (Tcl_ListObjLength(interp, objv[3], &l) != TCL_OK)
-           return TCL_ERROR;
-       if (l == 0)
-           return TCL_OK;              /* empty code list */
-       ldaptcl->traplist = (int*)malloc(sizeof(int) * (l + 1));
-       ldaptcl->traplist[l] = 0;
-       for (i = 0; i < l; i++) {
-           Tcl_ListObjIndex(interp, objv[3], i, &resultObj);
-           code = LDAP_ErrorStringToCode(interp, Tcl_GetStringFromObj(resultObj, NULL));
-           if (code == -1) {
-               free(ldaptcl->traplist);
-               ldaptcl->traplist = NULL;
-               return TCL_ERROR;
-           }
-           ldaptcl->traplist[i] = code;
-       }
-       return TCL_OK;
-    }
-    if (STREQU (subCommand, "trapcodes")) {
-       int code;
-       Tcl_Obj *resultObj;
-       Tcl_Obj *stringObj;
-       resultObj = Tcl_GetObjResult(interp);
-
-       for (code = 0; code < LDAPTCL_MAXERR; code++) {
-           if (!ldaptclerrorcode[code]) continue;
-           Tcl_ListObjAppendElement(interp, resultObj,
-                       Tcl_NewStringObj(ldaptclerrorcode[code], -1));
-       }
-       return TCL_OK;
-    }
-#ifdef LDAP_DEBUG
-    if (STREQU (subCommand, "debug")) {
-       if (objc != 3) {
-           Tcl_AppendStringsToObj(resultObj, "Wrong # of arguments",
-               (char*)NULL);
-           return TCL_ERROR;
-       }
-       return Tcl_GetIntFromObj(interp, objv[2], &ldap_debug);
-    }
-#endif
-
-    /* FIX: this needs to enumerate all the possibilities */
-    Tcl_AppendStringsToObj (resultObj,
-                           "subcommand \"", 
-                           subCommand, 
-                           "\" must be one of \"add\", ",
-                           "\"add_attributes\", ",
-                           "\"bind\", \"cache\", \"delete\", ",
-                           "\"delete_attributes\", \"modify\", ",
-                           "\"modify_rdn\", \"rename_rdn\", ",
-                           "\"replace_attributes\", ",
-                           "\"search\" or \"unbind\".",
-                           (char *)NULL);
-    return TCL_ERROR;
-}
-
-/* 
- * Delete and LDAP command object
- *
- */
-static void
-NeoX_LdapObjDeleteCmd(clientData)
-    ClientData    clientData;
-{
-    LDAPTCL      *ldaptcl = (LDAPTCL *)clientData;
-    LDAP         *ldap = ldaptcl->ldap;
-
-    if (ldaptcl->trapCmdObj)
-       Tcl_DecrRefCount (ldaptcl->trapCmdObj);
-    if (ldaptcl->traplist)
-       free(ldaptcl->traplist);
-    ldap_unbind(ldap);
-    free((char*) ldaptcl);
-}
-
-/*-----------------------------------------------------------------------------
- * NeoX_LdapObjCmd --
- *  
- * Implements the `ldap' command:
- *    ldap open newObjName host [port]
- *    ldap init newObjName host [port]
- *  
- * Results:
- *      A standard Tcl result.
- *      
- * Side effects:
- *      See the user documentation.
- *-----------------------------------------------------------------------------
- */     
-static int
-NeoX_LdapObjCmd (clientData, interp, objc, objv)
-    ClientData    clientData;
-    Tcl_Interp   *interp;
-    int           objc;
-    Tcl_Obj      *CONST objv[];
-{
-    extern int    errno;
-    char         *subCommand;
-    char         *newCommand;
-    char         *ldapHost;
-    int           ldapPort = LDAP_PORT;
-    LDAP         *ldap;
-    LDAPTCL     *ldaptcl;
-
-    Tcl_Obj      *resultObj = Tcl_GetObjResult (interp);
-
-    if (objc < 3) {
-       Tcl_WrongNumArgs (interp, 1, objv,
-                              "(open|init) new_command host [port]|explode dn");
-       return TCL_ERROR;
-    }
-
-    subCommand = Tcl_GetStringFromObj (objv[1], NULL);
-
-    if (STREQU(subCommand, "explode")) {
-       char *param;
-       int nonames = 0;
-       int list = 0;
-       char **exploded, **p;
-
-       param = Tcl_GetStringFromObj (objv[2], NULL);
-       if (param[0] == '-') {
-           if (STREQU(param, "-nonames")) {
-               nonames = 1;
-           } else if (STREQU(param, "-list")) {
-               list = 1;
-           } else {
-               Tcl_WrongNumArgs (interp, 1, objv, "explode ?-nonames|-list? dn");
-               return TCL_ERROR;
-           }
-       }
-       if (nonames || list)
-           param = Tcl_GetStringFromObj (objv[3], NULL);
-       exploded = ldap_explode_dn(param, nonames);
-       for (p = exploded; *p; p++) {
-           if (list) {
-               char *q = strchr(*p, '=');
-               if (!q) {
-                   Tcl_SetObjLength(resultObj, 0);
-                   Tcl_AppendStringsToObj(resultObj, "rdn ", *p,
-                       " missing '='", NULL);
-                   ldap_value_free(exploded);
-                   return TCL_ERROR;
-               }
-               *q = '\0';
-               if (Tcl_ListObjAppendElement(interp, resultObj,
-                       Tcl_NewStringObj(*p, -1)) != TCL_OK ||
-                       Tcl_ListObjAppendElement(interp, resultObj,
-                       Tcl_NewStringObj(q+1, -1)) != TCL_OK) {
-                   ldap_value_free(exploded);
-                   return TCL_ERROR;
-               }
-           } else {
-               if (Tcl_ListObjAppendElement(interp, resultObj,
-                       Tcl_NewStringObj(*p, -1))) {
-                   ldap_value_free(exploded);
-                   return TCL_ERROR;
-               }
-           }
-       }
-       ldap_value_free(exploded);
-       return TCL_OK;
-    }
-
-#ifdef UMICH_LDAP
-    if (STREQU(subCommand, "friendly")) {
-       char *friendly = ldap_dn2ufn(Tcl_GetStringFromObj(objv[2], NULL));
-       Tcl_SetStringObj(resultObj, friendly, -1);
-       free(friendly);
-       return TCL_OK;
-    }
-#endif
-
-    newCommand = Tcl_GetStringFromObj (objv[2], NULL);
-    ldapHost = Tcl_GetStringFromObj (objv[3], NULL);
-
-    if (objc == 5) {
-       if (Tcl_GetIntFromObj (interp, objv [4], &ldapPort) == TCL_ERROR) {
-           Tcl_AppendStringsToObj (resultObj,
-                                   "LDAP port number is non-numeric",
-                                   (char *)NULL);
-            return TCL_ERROR;
-       }
-    }
-
-    if (STREQU (subCommand, "open")) {
-       ldap = ldap_open (ldapHost, ldapPort);
-    } else if (STREQU (subCommand, "init")) {
-       int version = -1;
-       int i;
-       int value;
-       char *subOption;
-       char *subValue;
-
-#if LDAPTCL_PROTOCOL_VERSION_DEFAULT
-       version = LDAPTCL_PROTOCOL_VERSION_DEFAULT;
-#endif
-
-       for (i = 6; i < objc; i += 2)  {
-           subOption =  Tcl_GetStringFromObj(objv[i-1], NULL);
-           if (STREQU (subOption, "protocol_version")) {
-#ifdef LDAP_OPT_PROTOCOL_VERSION
-               subValue = Tcl_GetStringFromObj(objv[i], NULL);
-               if (STREQU (subValue, "2")) {
-                   version = LDAP_VERSION2;
-               }
-               else if (STREQU (subValue, "3")) {
-#ifdef LDAP_VERSION3
-                   version = LDAP_VERSION3;
-#else
-                   Tcl_SetStringObj (resultObj, "protocol_version 3 not supported", -1);
-                   return TCL_ERROR;
-#endif
-               }
-               else {
-                   Tcl_SetStringObj (resultObj, "protocol_version must be '2' or '3'", -1);
-                   return TCL_ERROR;
-               }
-#else
-               Tcl_SetStringObj (resultObj, "protocol_version not supported", -1);
-               return TCL_ERROR;
-#endif
-           } else if (STREQU (subOption, "port")) {
-               if (Tcl_GetIntFromObj (interp, objv [i], &ldapPort) == TCL_ERROR) {
-                   Tcl_AppendStringsToObj (resultObj,
-                                           "LDAP port number is non-numeric",
-                                           (char *)NULL);
-                   return TCL_ERROR;
-               }
-           } else {
-               Tcl_SetStringObj (resultObj, "valid options: protocol_version, port", -1);
-               return TCL_ERROR;
-           }
-       }
-       ldap = ldap_init (ldapHost, ldapPort);
-
-#if LDAP_OPT_PROTOCOL_VERSION
-       if (version != -1)
-           ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, &version);
-#endif
-    } else {
-       Tcl_AppendStringsToObj (resultObj, 
-                               "option was not \"open\" or \"init\"");
-       return TCL_ERROR;
-    }
-
-    if (ldap == (LDAP *)NULL) {
-       Tcl_SetErrno(errno);
-       Tcl_AppendStringsToObj (resultObj, 
-                               Tcl_PosixError (interp), 
-                               (char *)NULL);
-       return TCL_ERROR;
-    }
-
-#if UMICH_LDAP
-    ldap->ld_deref = LDAP_DEREF_NEVER;  /* Turn off alias dereferencing */
-#endif
-
-    ldaptcl = (LDAPTCL *) malloc(sizeof(LDAPTCL));
-    ldaptcl->ldap = ldap;
-    ldaptcl->caching = 0;
-    ldaptcl->timeout = 0;
-    ldaptcl->maxmem = 0;
-    ldaptcl->trapCmdObj = NULL;
-    ldaptcl->traplist = NULL;
-    ldaptcl->flags = 0;
-
-    Tcl_CreateObjCommand (interp,
-                         newCommand,
-                          NeoX_LdapTargetObjCmd,
-                          (ClientData) ldaptcl,
-                          NeoX_LdapObjDeleteCmd);
-    return TCL_OK;
-}
-
-/*-----------------------------------------------------------------------------
- * Neo_initLDAP --
- *     Initialize the LDAP interface.
- *-----------------------------------------------------------------------------
- */     
-int
-Ldaptcl_Init (interp)
-Tcl_Interp   *interp;
-{
-    Tcl_CreateObjCommand (interp,
-                         "ldap",
-                          NeoX_LdapObjCmd,
-                          (ClientData) NULL,
-                          (Tcl_CmdDeleteProc*) NULL);
-    /*
-    if (Neo_initLDAPX(interp) != TCL_OK)
-       return TCL_ERROR;
-    */
-    Tcl_PkgProvide(interp, "Ldaptcl", VERSION);
-    return TCL_OK;
-}
diff --git a/contrib/ldaptcl/pkgIndex.tcl.in b/contrib/ldaptcl/pkgIndex.tcl.in
deleted file mode 100644 (file)
index f257556..0000000
+++ /dev/null
@@ -1 +0,0 @@
-package ifneeded Ldaptcl @NEO_VERSION@ "package require Tclx 8.0; load [file join $dir .. @NEO_SHARED_LIB_FILE@] Ldaptcl"
diff --git a/contrib/ldaptcl/tclAppInit.c b/contrib/ldaptcl/tclAppInit.c
deleted file mode 100644 (file)
index f84e182..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/* 
- * tclAppInit.c --
- *
- *     Provides a default version of the main program and Tcl_AppInit
- *     procedure for Tcl applications (without Tk).
- *
- * Copyright (c) 1993 The Regents of the University of California.
- * Copyright (c) 1994-1995 Sun Microsystems, Inc.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- *
- * SCCS: @(#) tclAppInit.c 1.17 96/03/26 12:45:29
- */
-
-#include "tcl.h"
-
-/*
- * The following variable is a special hack that is needed in order for
- * Sun shared libraries to be used for Tcl.
- */
-
-extern int matherr();
-int *tclDummyMathPtr = (int *) matherr;
-
-#ifdef TCL_TEST
-EXTERN int             Tcltest_Init _ANSI_ARGS_((Tcl_Interp *interp));
-#endif /* TCL_TEST */
-\f
-/*
- *----------------------------------------------------------------------
- *
- * main --
- *
- *     This is the main program for the application.
- *
- * Results:
- *     None: Tcl_Main never returns here, so this procedure never
- *     returns either.
- *
- * Side effects:
- *     Whatever the application does.
- *
- *----------------------------------------------------------------------
- */
-
-int
-main(argc, argv)
-    int argc;                  /* Number of command-line arguments. */
-    char **argv;               /* Values of command-line arguments. */
-{
-#ifdef USE_TCLX
-    TclX_Main(argc, argv, Tcl_AppInit);
-#else
-    Tcl_Main(argc, argv, Tcl_AppInit);
-#endif
-    return 0;                  /* Needed only to prevent compiler warning. */
-}
-\f
-/*
- *----------------------------------------------------------------------
- *
- * Tcl_AppInit --
- *
- *     This procedure performs application-specific initialization.
- *     Most applications, especially those that incorporate additional
- *     packages, will have their own version of this procedure.
- *
- * Results:
- *     Returns a standard Tcl completion code, and leaves an error
- *     message in interp->result if an error occurs.
- *
- * Side effects:
- *     Depends on the startup script.
- *
- *----------------------------------------------------------------------
- */
-
-int
-Tcl_AppInit(interp)
-    Tcl_Interp *interp;                /* Interpreter for application. */
-{
-    if (Tcl_Init(interp) == TCL_ERROR) {
-       return TCL_ERROR;
-    }
-
-#ifdef USE_ITCL
-    if (Itcl_Init(interp) == TCL_ERROR) {
-       return TCL_ERROR;
-    }
-    Tcl_StaticPackage (interp, "Itcl", Itcl_Init, NULL);
-#endif
-
-#ifdef TCL_TEST
-    if (Tcltest_Init(interp) == TCL_ERROR) {
-       return TCL_ERROR;
-    }
-    Tcl_StaticPackage(interp, "Tcltest", Tcltest_Init,
-            (Tcl_PackageInitProc *) NULL);
-#endif /* TCL_TEST */
-
-#ifdef USE_TCLX
-    if (Tclx_Init (interp) == TCL_ERROR) {
-       return TCL_ERROR;
-    }   
-    Tcl_StaticPackage (interp, "Tclx", Tclx_Init, NULL);
-#endif
-
-    if (Ldaptcl_Init(interp) == TCL_ERROR) {
-       return TCL_ERROR;
-    }
-    Tcl_StaticPackage(interp, "Ldaptcl", Ldaptcl_Init,
-            (Tcl_PackageInitProc *) NULL);
-
-    /*
-     * Call the init procedures for included packages.  Each call should
-     * look like this:
-     *
-     * if (Mod_Init(interp) == TCL_ERROR) {
-     *     return TCL_ERROR;
-     * }
-     *
-     * where "Mod" is the name of the module.
-     */
-
-    /*
-     * Call Tcl_CreateCommand for application-specific commands, if
-     * they weren't already created by the init procedures called above.
-     */
-
-    /*
-     * Specify a user-specific startup file to invoke if the application
-     * is run interactively.  Typically the startup file is "~/.apprc"
-     * where "app" is the name of the application.  If this line is deleted
-     * then no user-specific startup file will be run under any conditions.
-     */
-
-    Tcl_SetVar(interp, "tcl_rcFileName", "~/.tclshrc", TCL_GLOBAL_ONLY);
-    return TCL_OK;
-}
diff --git a/contrib/ldaptcl/tkAppInit.c b/contrib/ldaptcl/tkAppInit.c
deleted file mode 100644 (file)
index 68fd956..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/* 
- * tkXAppInit.c --
- *
- * Provides a default version of the Tcl_AppInit procedure for use with
- * applications built with Extended Tcl and Tk on Unix systems.  This is based
- * on the the UCB Tk file tkAppInit.c
- *-----------------------------------------------------------------------------
- * Copyright 1991-1996 Karl Lehenbauer and Mark Diekhans.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies.  Karl Lehenbauer and
- * Mark Diekhans make no representations about the suitability of this
- * software for any purpose.  It is provided "as is" without express or
- * implied warranty.
- *-----------------------------------------------------------------------------
- * $OpenLDAP$
- *-----------------------------------------------------------------------------
- */
-
-#include "tclExtend.h"
-#include "tk.h"
-
-/*
- * The following variable is a special hack that insures the tcl
- * version of matherr() is used when linking against shared libraries
- * Even if matherr is not used on this system, there is a dummy version
- * in libtcl.
- */
-EXTERN int matherr ();
-int (*tclDummyMathPtr)() = matherr;
-
-\f
-/*-----------------------------------------------------------------------------
- * main --
- *
- * This is the main program for the application.
- *-----------------------------------------------------------------------------
- */
-#ifdef __cplusplus
-int
-main (int    argc,
-      char **argv)
-#else
-int
-main (argc, argv)
-    int    argc;
-    char **argv;
-#endif
-{
-#ifdef USE_TCLX
-    TkX_Main(argc, argv, Tcl_AppInit);
-#else
-    Tk_Main(argc, argv, Tcl_AppInit);
-#endif
-    return 0;                   /* Needed only to prevent compiler warning. */
-}
-\f
-/*-----------------------------------------------------------------------------
- * Tcl_AppInit --
- *
- * This procedure performs application-specific initialization. Most
- * applications, especially those that incorporate additional packages, will
- * have their own version of this procedure.
- *
- * Results:
- *    Returns a standard Tcl completion code, and leaves an error message in
- * interp->result if an error occurs.
- *-----------------------------------------------------------------------------
- */
-#ifdef __cplusplus
-int
-Tcl_AppInit (Tcl_Interp *interp)
-#else
-int
-Tcl_AppInit (interp)
-    Tcl_Interp *interp;
-#endif
-{
-    if (Tcl_Init (interp) == TCL_ERROR) {
-        return TCL_ERROR;
-    }
-#ifdef USE_TCLX
-    if (Tclx_Init(interp) == TCL_ERROR) {
-        return TCL_ERROR;
-    }
-    Tcl_StaticPackage(interp, "Tclx", Tclx_Init, Tclx_SafeInit);
-#endif
-    if (Tk_Init(interp) == TCL_ERROR) {
-        return TCL_ERROR;
-    }
-    Tcl_StaticPackage(interp, "Tk", Tk_Init, (Tcl_PackageInitProc *) NULL);
-#ifdef USE_TCLX
-    if (Tkx_Init(interp) == TCL_ERROR) {
-        return TCL_ERROR;
-    }
-    Tcl_StaticPackage(interp, "Tkx", Tkx_Init, (Tcl_PackageInitProc *) NULL);
-#endif
-
-    if (Ldaptcl_Init(interp) == TCL_ERROR) {
-       return TCL_ERROR;
-    }
-    Tcl_StaticPackage(interp, "Ldaptcl", Ldaptcl_Init,
-            (Tcl_PackageInitProc *) NULL);
-
-    /*
-     * Call Tcl_CreateCommand for application-specific commands, if
-     * they weren't already created by the init procedures called above.
-     */
-
-    /*
-     * Specify a user-specific startup file to invoke if the application
-     * is run interactively.  Typically the startup file is "~/.apprc"
-     * where "app" is the name of the application.  If this line is deleted
-     * then no user-specific startup file will be run under any conditions.
-     */
-    Tcl_SetVar(interp, "tcl_rcFileName", "~/.wishxrc", TCL_GLOBAL_ONLY);
-    return TCL_OK;
-}