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

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

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.

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)?