/* $OpenLDAP$ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Portions Copyright 1998 A. Hartgers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
*/
+/* ACKNOWLEDGEMENTS:
+ * This work was initially developed by Bart Hartgers for inclusion in
+ * OpenLDAP Software.
+ */
+
/*
* util-int.c Various functions to replace missing threadsafe ones.
- * Without the real *_r funcs, things will
- * work, but might not be threadsafe.
- *
- * Written by Bart Hartgers.
- *
- * Copyright 1998, A. Hartgers, All rights reserved.
- * This software is not subject to any license of Eindhoven University of
- * Technology, since it was written in my spare time.
- *
- * Redistribution and use in source and binary forms are permitted only
- * as authorized by the OpenLDAP Public License. A copy of this
- * license is available at http://www.OpenLDAP.org/license.html or
- * in file LICENSE in the top-level directory of the distribution.
- */
-
+ * Without the real *_r funcs, things will
+ * work, but might not be threadsafe.
+ */
#include "portable.h"
extern int h_errno;
#endif
+#ifdef HAVE_HSTRERROR
+# define HSTRERROR(e) hstrerror(e)
+#else
+# define HSTRERROR(e) hp_strerror(e)
+#endif
+
#ifndef LDAP_R_COMPILE
# undef HAVE_REENTRANT_FUNCTIONS
# undef HAVE_CTIME_R
# include <ldap_pvt_thread.h>
ldap_pvt_thread_mutex_t ldap_int_resolv_mutex;
-#if (defined( HAVE_CTIME_R ) || defined( HAVE_REENTRANT_FUNCTIONS)) \
- && defined( CTIME_R_NARGS )
-# define USE_CTIME_R
+# if (defined( HAVE_CTIME_R ) || defined( HAVE_REENTRANT_FUNCTIONS)) \
+ && defined( CTIME_R_NARGS )
+# define USE_CTIME_R
# else
static ldap_pvt_thread_mutex_t ldap_int_ctime_mutex;
# endif
#define BUFSTART (1024-32)
#define BUFMAX (32*1024-32)
+#if defined(LDAP_R_COMPILE)
static char *safe_realloc( char **buf, int len );
-#if !defined(HAVE_GETHOSTBYNAME_R) && defined(LDAP_R_COMPILE)
+#if !(defined(HAVE_GETHOSTBYNAME_R) && defined(HAVE_GETHOSTBYADDR_R))
static int copy_hostent( struct hostent *res,
char **buf, struct hostent * src );
#endif
+#endif
int ldap_pvt_gethostbyname_a(
const char *name,
#endif
}
-#ifndef GETNAMEINFO
+#if !defined( HAVE_GETNAMEINFO ) && !defined( HAVE_HSTRERROR )
static const char *
hp_strerror( int err )
{
#if defined( LDAP_R_COMPILE )
ldap_pvt_thread_mutex_unlock( &ldap_int_resolv_mutex );
#endif
- if ( rc ) *err = AC_GAI_STRERROR( rc );
+ if ( rc ) *err = (char *)AC_GAI_STRERROR( rc );
return rc;
#else /* !HAVE_GETNAMEINFO */
alen = sizeof(sin->sin_addr);
} else {
rc = NO_RECOVERY;
- *err = (char *)hp_strerror( rc );
+ *err = (char *)HSTRERROR( rc );
return rc;
}
#if defined( HAVE_GETHOSTBYADDR_R )
if (hp) {
strncpy( name, hp->h_name, namelen );
} else {
- *err = (char *)hp_strerror( h_errno );
+ *err = (char *)HSTRERROR( h_errno );
}
LDAP_FREE(buf);
#else /* HAVE_GETHOSTBYADDR_R */
rc = 0;
} else {
rc = h_errno;
- *err = (char *)hp_strerror( h_errno );
+ *err = (char *)HSTRERROR( h_errno );
}
#if defined( LDAP_R_COMPILE )
ldap_pvt_thread_mutex_unlock( &ldap_int_resolv_mutex );
ldap_pvt_thread_mutex_init( &ldap_int_ctime_mutex );
#endif
ldap_pvt_thread_mutex_init( &ldap_int_resolv_mutex );
+
+#ifdef HAVE_CYRUS_SASL
+ ldap_pvt_thread_mutex_init( &ldap_int_sasl_mutex );
+#endif
#endif
/* call other module init functions here... */
int n_alias=0;
int total_alias_len=0;
int n_addr=0;
- int total_addr_len;
+ int total_addr_len=0;
int total_len;
/* calculate the size needed for the buffer */
return fqdn;
}
-#if defined( HAVE_GETADDRINFO ) && !defined( HAVE_GAI_STRERROR )
+#if ( defined( HAVE_GETADDRINFO ) || defined( HAVE_GETNAMEINFO ) ) \
+ && !defined( HAVE_GAI_STRERROR )
char *ldap_pvt_gai_strerror (int code) {
static struct {
int code;