From 89da5324457070cb4a7391c48c6c4f84ed7fe964 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Tue, 1 Jun 2010 17:25:03 +0200 Subject: [PATCH] fix ldap related compilation issues --- configure.ac | 10 +++++++--- lib/curl_ldap.h | 7 ++++--- lib/ldap.c | 16 ++++++++++++++-- lib/openldap.c | 15 +++++++++++++-- lib/url.c | 5 +++-- lib/version.c | 5 +++-- 6 files changed, 44 insertions(+), 14 deletions(-) diff --git a/configure.ac b/configure.ac index 774fd95ea..f2fd9665d 100644 --- a/configure.ac +++ b/configure.ac @@ -411,6 +411,7 @@ AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]), else AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) + AC_SUBST(HAVE_LDAP_SSL, [1]) curl_ldaps_msg="enabled" fi ;; @@ -2701,10 +2702,13 @@ fi if test "x$CURL_DISABLE_TELNET" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" fi -if test "x$CURL_DISABLE_LDAP" != "x1" -o "x$USE_OPENLDAP" = "x1"; then +if test "x$CURL_DISABLE_LDAP" != "x1"; then SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" - if test "x$CURL_DISABLE_LDAPS" != "x1" -o "x$USE_OPENLDAP$SSL_ENABLED" = "x11"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" + if test "x$CURL_DISABLE_LDAPS" != "x1"; then + if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || + (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then + SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" + fi fi fi if test "x$CURL_DISABLE_DICT" != "x1"; then diff --git a/lib/curl_ldap.h b/lib/curl_ldap.h index a2b167fa0..3cce4bf7b 100644 --- a/lib/curl_ldap.h +++ b/lib/curl_ldap.h @@ -8,7 +8,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -22,10 +22,11 @@ * KIND, either express or implied. * ***************************************************************************/ -#if !defined(CURL_DISABLE_LDAP) || defined(USE_OPENLDAP) +#ifndef CURL_DISABLE_LDAP extern const struct Curl_handler Curl_handler_ldap; -#if defined(HAVE_LDAP_SSL) || defined(USE_OPENLDAP) +#if (defined(USE_OPENLDAP) && defined(USE_SSL)) || \ + (!defined(USE_OPENLDAP) && defined(HAVE_LDAP_SSL)) extern const struct Curl_handler Curl_handler_ldaps; #endif diff --git a/lib/ldap.c b/lib/ldap.c index 06c229042..e837dbfdd 100644 --- a/lib/ldap.c +++ b/lib/ldap.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2009, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2010, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -23,6 +23,18 @@ #include "setup.h" #if !defined(CURL_DISABLE_LDAP) && !defined(USE_OPENLDAP) + +/* + * Notice that USE_OPENLDAP is only a source code selection switch. When + * libcurl is built with USE_OPENLDAP defined the libcurl source code that + * gets compiled is the code from openldap.c, otherwise the code that gets + * compiled is the code from ldap.c. + * + * When USE_OPENLDAP is defined a recent version of the OpenLDAP library + * might be required for compilation and runtime. In order to use ancient + * OpenLDAP library versions, USE_OPENLDAP shall not be defined. + */ + /* -- WIN32 approved -- */ #include #include @@ -715,4 +727,4 @@ static void _ldap_free_urldesc (LDAPURLDesc *ludp) free (ludp); } #endif /* !HAVE_LDAP_URL_PARSE */ -#endif /* CURL_DISABLE_LDAP */ +#endif /* !CURL_DISABLE_LDAP && !USE_OPENLDAP */ diff --git a/lib/openldap.c b/lib/openldap.c index 16bf7b8c8..daba224ed 100644 --- a/lib/openldap.c +++ b/lib/openldap.c @@ -22,7 +22,18 @@ #include "setup.h" -#ifdef USE_OPENLDAP +#if !defined(CURL_DISABLE_LDAP) && defined(USE_OPENLDAP) + +/* + * Notice that USE_OPENLDAP is only a source code selection switch. When + * libcurl is built with USE_OPENLDAP defined the libcurl source code that + * gets compiled is the code from openldap.c, otherwise the code that gets + * compiled is the code from ldap.c. + * + * When USE_OPENLDAP is defined a recent version of the OpenLDAP library + * might be required for compilation and runtime. In order to use ancient + * OpenLDAP library versions, USE_OPENLDAP shall not be defined. + */ #include "urldata.h" #include @@ -588,4 +599,4 @@ static Sockbuf_IO ldapsb_tls = }; #endif /* USE_SSL */ -#endif /* USE_OPENLDAP */ +#endif /* !CURL_DISABLE_LDAP && USE_OPENLDAP */ diff --git a/lib/url.c b/lib/url.c index 3f55f7bda..6ec844a65 100644 --- a/lib/url.c +++ b/lib/url.c @@ -181,9 +181,10 @@ static const struct Curl_handler * const protocols[] = { &Curl_handler_dict, #endif -#if !defined(CURL_DISABLE_LDAP) || defined(USE_OPENLDAP) +#ifndef CURL_DISABLE_LDAP &Curl_handler_ldap, -#if defined(HAVE_LDAP_SSL) || (defined(USE_OPENLDAP) && defined(USE_SSL)) +#if (defined(USE_OPENLDAP) && defined(USE_SSL)) || \ + (!defined(USE_OPENLDAP) && defined(HAVE_LDAP_SSL)) &Curl_handler_ldaps, #endif #endif diff --git a/lib/version.c b/lib/version.c index d482bff1e..9a336a32d 100644 --- a/lib/version.c +++ b/lib/version.c @@ -170,9 +170,10 @@ static const char * const protocols[] = { #if defined(USE_SSL) && !defined(CURL_DISABLE_IMAP) "imaps", #endif -#if !defined(CURL_DISABLE_LDAP) || defined(USE_OPENLDAP) +#ifndef CURL_DISABLE_LDAP "ldap", -#if defined(HAVE_LDAP_SSL) || (defined(USE_OPENLDAP) && defined(USE_SSL)) +#if (defined(USE_OPENLDAP) && defined(USE_SSL)) || \ + (!defined(USE_OPENLDAP) && defined(HAVE_LDAP_SSL)) "ldaps", #endif #endif