diff options
author | Dan Fandrich <dan@coneharvesters.com> | 2005-03-11 05:28:07 +0000 |
---|---|---|
committer | Dan Fandrich <dan@coneharvesters.com> | 2005-03-11 05:28:07 +0000 |
commit | 205f8b266cfeedc18d4fad134b7fbd6d68c14ef3 (patch) | |
tree | ddf643c58ca3a235cfbc838c0542875a139c0a4c /lib/ldap.c | |
parent | c4ce9ac4de5eeb924c9f5fd98bc1c6d58481db43 (diff) |
Fixed LDAP library file name bug (KNOWN_BUGS #1). configure now auto-detects
the correct dynamic library names by default, and provides override switches
--with-ldap-lib, --with-lber-lib and --without-lber-lib. Added
CURL_DISABLE_LDAP to platform-specific config files to disable LDAP
support on those platforms that probably don't have dynamic OpenLDAP
libraries available to avoid compile errors.
Diffstat (limited to 'lib/ldap.c')
-rw-r--r-- | lib/ldap.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/lib/ldap.c b/lib/ldap.c index 15c19b377..bb8a84933 100644 --- a/lib/ldap.c +++ b/lib/ldap.c @@ -110,7 +110,7 @@ typedef void * (*dynafunc)(void *input); */ #if defined(HAVE_DLOPEN) || defined(HAVE_LIBDL) || defined(WIN32) static void *libldap = NULL; -#ifndef WIN32 +#if defined(DL_LBER_FILE) static void *liblber = NULL; #endif #endif @@ -120,24 +120,26 @@ static int DynaOpen(const char **mod_name) #if defined(HAVE_DLOPEN) || defined(HAVE_LIBDL) if (libldap == NULL) { /* - * libldap.so should be able to resolve its dependency on - * liblber.so automatically, but since it does not we will + * libldap.so can normally resolve its dependency on liblber.so + * automatically, but in broken installation it does not so * handle it here by opening liblber.so as global. */ - *mod_name = "liblber.so"; +#ifdef DL_LBER_FILE + *mod_name = DL_LBER_FILE; liblber = dlopen(*mod_name, DLOPEN_MODE); + if (!liblber) + return 0; +#endif /* Assume loading libldap.so will fail if loading of liblber.so failed */ - if (liblber) { - *mod_name = "libldap.so"; - libldap = dlopen(*mod_name, RTLD_LAZY); - } + *mod_name = DL_LDAP_FILE; + libldap = dlopen(*mod_name, RTLD_LAZY); } - return (libldap != NULL && liblber != NULL); + return (libldap != NULL); #elif defined(WIN32) - *mod_name = "wldap32.dll"; + *mod_name = DL_LDAP_FILE; if (!libldap) libldap = (void*)LoadLibrary(*mod_name); return (libldap != NULL); @@ -155,10 +157,12 @@ static void DynaClose(void) dlclose(libldap); libldap=NULL; } +#ifdef DL_LBER_FILE if (liblber) { dlclose(liblber); liblber=NULL; } +#endif #elif defined(WIN32) if (libldap) { FreeLibrary ((HMODULE)libldap); |