#if defined( LDAP_R_COMPILE )
# include <ldap_pvt_thread.h>
-# if !defined( HAVE_REENTRANT_FUNCTIONS )
-# if !defined( HAVE_CTIME_R )
-# define LDAP_INT_CTIME_MUTEX 1
-# endif
-# if !defined( HAVE_GETHOSTBYNAME_R )
-# define LDAP_INT_GETHOSTBYNAME_MUTEX 1
-# endif
-# if !defined( HAVE_GETHOSTBYADDR_R )
-# define LDAP_INT_GETHOSTBYADDR_MUTEX 1
-# endif
-# endif /* defined( HAVE_REENTRANT_FUNCTIONS ) */
-
-#if defined( LDAP_INT_CTIME_MUTEX )
-static ldap_pvt_thread_mutex_t ldap_int_ctime_mutex;
-#endif
-#if defined( LDAP_INT_GETHOSTBYNAME_MUTEX )
-static ldap_pvt_thread_mutex_t ldap_int_gethostbyname_mutex;
-#endif
-#if defined( LDAP_INT_GETHOSTBYADDR_MUTEX )
-static ldap_pvt_thread_mutex_t ldap_int_gethostbyaddr_mutex;
-#endif
-#else /* LDAP_R_COMPILE */
-#undef HAVE_REENTRANT_FUNCTIONS
-#endif
-
-#if defined ( HAVE_STRSPN )
-#define int_strspn strspn
#else
-static int int_strspn( const char *str, const char *delim )
-{
- int pos;
- const char *p=delim;
- for( pos=0; (*str) ; pos++,str++) {
- if (*str!=*p)
- for( p=delim; (*p) ; p++ ) {
- if (*str==*p)
- break;
- }
- if (*p=='\0')
- return pos;
- }
- return pos;
-}
+# undef HAVE_REENTRANT_FUNCTIONS
#endif
-#if defined( HAVE_STRPBRK )
-#define int_strpbrk strpbrk
-#else
-static char *int_strpbrk( const char *str, const char *accept )
-{
- const char *p;
- for( ; (*str) ; str++ ) {
- for( p=accept; (*p) ; p++) {
- if (*str==*p)
- return str;
- }
- }
- return NULL;
-}
+#if (defined( HAVE_CTIME_R ) || defined( HAVE_REENTRANT_FUNCTIONS)) \
+ && defined( CTIME_R_NARGS )
+# define USE_CTIME_R
#endif
-char *ldap_pvt_strtok( char *str, const char *delim, char **pos )
-{
-#if defined( HAVE_STRTOK_R ) || defined( HAVE_REENTRANT_FUNCTIONS )
- return strtok_r(str, delim, pos);
-#else
- char *p;
-
- if (pos==NULL)
- return NULL;
- if (str==NULL) {
- if (*pos==NULL)
- return NULL;
- str=*pos;
- }
- /* skip any initial delimiters */
- str += int_strspn( str, delim );
- if (*str == '\0')
- return NULL;
- p = int_strpbrk( str, delim );
- if (p==NULL) {
- *pos = NULL;
- } else {
- *p ='\0';
- *pos = p+1;
- }
- return str;
-#endif
-}
+#ifdef LDAP_COMPILING_R
+# ifndef USE_CTIME_R
+ static ldap_pvt_thread_mutex_t ldap_int_ctime_mutex;
+# endif
+# ifndef HAVE_GETHOSTBYNAME_R
+ static ldap_pvt_thread_mutex_t ldap_int_gethostbyname_mutex;
+# endif
+# ifndef HAVE_GETHOSTBYADDR_R
+ static ldap_pvt_thread_mutex_t ldap_int_gethostbyaddr_mutex;
+# endif
+#endif /* LDAP_R_COMPILE */
char *ldap_pvt_ctime( const time_t *tp, char *buf )
{
-#if (defined( HAVE_CTIME_R ) || defined( HAVE_REENTRANT_FUNCTIONS)) \
- && defined( CTIME_R_NARGS )
+#ifdef USE_CTIME_R
# if (CTIME_R_NARGS > 3) || (CTIME_R_NARGS < 2)
choke me! nargs should have 2 or 3
# elif CTIME_R_NARGS > 2
# else
return ctime_r(tp,buf);
# endif
+
#else
-# if defined( LDAP_INT_CTIME_MUTEX )
+# ifdef LDAP_COMPILNG_R
ldap_pvt_thread_mutex_lock( &ldap_int_ctime_mutex );
-# endif
+# endif
memcpy( buf, ctime(tp), 26 );
-# if defined( LDAP_INT_CTIME_MUTEX )
+# ifdef LDAP_COMPILNG_R
ldap_pvt_thread_mutex_unlock( &ldap_int_ctime_mutex );
-# endif
+# endif
return buf;
#endif
}
struct hostent **result,
int *herrno_ptr )
{
-#if defined( HAVE_GETHOSTBYNAME_R ) || defined( HAVE_REENTRANT_FUNCTIONS )
+#if defined( HAVE_GETHOSTBYNAME_R )
# define NEED_SAFE_REALLOC 1
int r=-1;
int buflen=BUFSTART;
return r;
}
return -1;
-#elif defined( LDAP_INT_GETHOSTBYNAME_MUTEX )
+#elif defined( LDAP_COMPILING_R )
# define NEED_COPY_HOSTENT
struct hostent *he;
int retval;
struct hostent **result,
int *herrno_ptr )
{
-#if defined( HAVE_GETHOSTBYADDR_R ) || defined( HAVE_REENTRANT_FUNCTIONS )
+#if defined( HAVE_GETHOSTBYADDR_R )
# undef NEED_SAFE_REALLOC
# define NEED_SAFE_REALLOC
int r=-1;
return r;
}
return -1;
-#elif defined( LDAP_INT_GETHOSTBYADDR_MUTEX )
+#elif defined( LDAP_COMPILING_R )
# undef NEED_COPY_HOSTENT
# define NEED_COPY_HOSTENT
struct hostent *he;
if (done)
return;
done=1;
-#if defined( LDAP_INT_CTIME_MUTEX )
+
+#ifdef LDAP_COMPILING_R
+
+#if !defined( USE_CTIME_R ) && !defined( HAVE_REENTRANT_FUNCTIONS )
ldap_pvt_thread_mutex_init( &ldap_int_ctime_mutex, NULL );
-#endif
-#if defined( LDAP_INT_GETHOSTBYNAME_MUTEX )
+#endif
+
+#if !defined( HAVE_GETHOSTBYNAME_R )
ldap_pvt_thread_mutex_init( &ldap_int_gethostbyname_mutex, NULL );
#endif
-#if defined( LDAP_INT_GETHOSTBYADDR_MUTEX )
+
+#if !defined( HAVE_GETHOSTBYADDR_R )
ldap_pvt_thread_mutex_init( &ldap_int_gethostbyaddr_mutex, NULL );
#endif
-#if defined( LDAP_R_COMPILE )
+
/* call other module init functions here... */
-#endif
+#endif
}
#if defined( NEED_COPY_HOSTENT )