X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Finit.c;h=c6b68759823304508494be73f768def571f82827;hb=b0b8546f054f31b1a080defede171f833d20b124;hp=c167a00592042adb61f9af8113fc185d0ae6212a;hpb=0e2af54a3ffdeebe3901370683be56fcc53023b0;p=openldap diff --git a/libraries/libldap/init.c b/libraries/libldap/init.c index c167a00592..c6b6875982 100644 --- a/libraries/libldap/init.c +++ b/libraries/libldap/init.c @@ -115,7 +115,12 @@ static void openldap_ldap_init_w_conf( return; } +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_DETAIL1, + "openldap_init_w_conf: trying %s\n", file )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: trying %s\n", file, 0, 0); +#endif fp = fopen(file, "r"); if(fp == NULL) { @@ -123,7 +128,12 @@ static void openldap_ldap_init_w_conf( return; } +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_DETAIL1, + "openldap_init_w_conf: using %s\n", file )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: using %s\n", file, 0, 0); +#endif while((start = fgets(linebuf, sizeof(linebuf), fp)) != NULL) { /* skip lines starting with '#' */ @@ -251,12 +261,22 @@ static void openldap_ldap_init_w_userconf(const char *file) home = getenv("HOME"); if (home != NULL) { +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_ARGS, + "openldap_init_w_userconf: HOME env is %s\n", home )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: HOME env is %s\n", home, 0, 0); +#endif path = LDAP_MALLOC(strlen(home) + strlen(file) + 3); } else { +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_ARGS, + "openldap_init_w_userconf: HOME env is NULL\n" )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: HOME env is NULL\n", 0, 0, 0); +#endif } if(home != NULL && path != NULL) { @@ -364,6 +384,17 @@ static void openldap_ldap_init_w_env( } } +#if defined(__GNUC__) +/* Declare this function as a destructor so that it will automatically be + * invoked either at program exit (if libldap is a static library) or + * at unload time (if libldap is a dynamic library). + * + * Sorry, don't know how to handle this for non-GCC environments. + */ +static void ldap_int_destroy_global_options(void) + __attribute__ ((destructor)); +#endif + static void ldap_int_destroy_global_options(void) { @@ -396,11 +427,16 @@ void ldap_int_initialize_global_options( struct ldapoptions *gopts, int *dbglvl gopts->ldo_tm_api = (struct timeval *)NULL; gopts->ldo_tm_net = (struct timeval *)NULL; - /* ldo_defludp wll be freed by the atexit() handler + /* ldo_defludp will be freed by the termination handler */ ldap_url_parselist(&gopts->ldo_defludp, "ldap://localhost/"); gopts->ldo_defport = LDAP_PORT; +#if !defined(__GNUC__) && !defined(PIC) + /* Do this only for a static library, and only if we can't + * arrange for it to be executed as a library destructor + */ atexit(ldap_int_destroy_global_options); +#endif gopts->ldo_refhoplimit = LDAP_DEFAULT_REFHOPLIMIT; gopts->ldo_rebind_proc = NULL; @@ -448,11 +484,6 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl ) ldap_int_error_init(); -#if defined(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND) \ - || defined(HAVE_TLS) || defined(HAVE_CYRUS_SASL) - ldap_int_hostname = ldap_pvt_get_fqdn( ldap_int_hostname ); -#endif - #ifdef HAVE_WINSOCK2 { WORD wVersionRequested; WSADATA wsaData; @@ -485,6 +516,11 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl ) return; } } +#endif + +#if defined(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND) \ + || defined(HAVE_TLS) || defined(HAVE_CYRUS_SASL) + ldap_int_hostname = ldap_pvt_get_fqdn( ldap_int_hostname ); #endif ldap_int_utils_init(); @@ -518,26 +554,50 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl ) char *altfile = getenv(LDAP_ENV_PREFIX "CONF"); if( altfile != NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_DETAIL1, + "openldap_init_w_userconf: %sCONF env is %s\n", + LDAP_ENV_PREFIX, altfile )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is %s\n", LDAP_ENV_PREFIX "CONF", altfile, 0); +#endif openldap_ldap_init_w_sysconf( altfile ); } else +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_DETAIL1, + "openldap_init_w_userconf: %sCONF env is NULL\n", + LDAP_ENV_PREFIX )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is NULL\n", LDAP_ENV_PREFIX "CONF", 0, 0); +#endif } { char *altfile = getenv(LDAP_ENV_PREFIX "RC"); if( altfile != NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_DETAIL1, + "openldap_init_w_userconf: %sRC env is %s\n", + LDAP_ENV_PREFIX, altfile )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is %s\n", LDAP_ENV_PREFIX "RC", altfile, 0); +#endif openldap_ldap_init_w_userconf( altfile ); } else +#ifdef NEW_LOGGING + LDAP_LOG (( "init", LDAP_LEVEL_DETAIL1, + "openldap_init_w_userconf: %sRC env is NULL\n", + LDAP_ENV_PREFIX )); +#else Debug(LDAP_DEBUG_TRACE, "ldap_init: %s env is NULL\n", LDAP_ENV_PREFIX "RC", 0, 0); +#endif } openldap_ldap_init_w_env(gopts, NULL);