[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: librewrite & co vs. logging & ldap-int.h

Hallvard B Furuseth wrote:
The ITS#6625 patch causes preprocessor warnings about conflicts
with ldap-int.h, so I'm looking again at old ITS#5421 to kill off

     #include "...libldap/ldap-int.h"

These occur in librewrite, rwm, back-ldap and back-meta.

The #include is for two things: Expose struct ldapmsg&  LDAP_FREE, the
need of which I've just removed in HEAD, and set up libldap logging.

I expect the slapd components just as well can drop the #include and
use slapd logging?  back-*/search.c then need lber-int.h instead.

Sounds fine.

librewrite still needs the #define ldap_debug in ldap-int.h.

Instead we could either:

(1) use liblber logging in librewrite,

(2) or throw the code LDAP_INT_IN_KERNEL .. #endif /* LDAP_DEBUG */
out of ldap-int.h to a separate file, either include/ldap_log.h or
something like libldap/ldap-int-log.h.  This file would not expose
structs with different definitions depending on LDAP_R_COMPILE&  co.

Since the file when not LDAP_INT_IN_KERNEL does need to refer
ldap_debug to ldap_int_global_options.ldo_debug, that can be done with:

   /* This struct starts with the same members as ldapoptions */
   struct ldapoptions_prefix {
       short ldo_valid;
       int   ldo_debug;
   #define ldap_debug \
           (*(int *) ((char *)&ldap_int_global_options \
                      + offsetof(struct ldapoptions_prefix, ldo_debug)))

   struct ldapoptions;
   LDAP_V ( struct ldapoptions ) ldap_int_global_options;

Opinions?  Put it in ldap-int.h, or ldap_log.h?  Maybe the latter
only if #defined LDAP_LIBRARY_LOGGING (defined by the user)?

ldap_log.h would be ok.

  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/