Use gmtime_r() if HAVE_GMTIME_R is defined (need to add autoconf check)

This commit is contained in:
Luke Howard 2003-12-06 05:37:00 +00:00
parent 369b1515db
commit 399b57eada
4 changed files with 24 additions and 0 deletions

View File

@ -65,7 +65,9 @@ struct berval NoAttrs = BER_BVC( LDAP_NO_ATTRS );
*/
ldap_pvt_thread_pool_t connection_pool;
int connection_pool_max = SLAP_MAX_WORKER_THREADS;
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_t gmtime_mutex;
#endif
#if defined( SLAPD_CRYPT ) || defined( SLAPD_SPASSWD )
ldap_pvt_thread_mutex_t passwd_mutex;
#endif
@ -153,7 +155,9 @@ slap_init( int mode, const char *name )
}
#endif
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_init( &gmtime_mutex );
#endif
#if defined( SLAPD_CRYPT ) || defined( SLAPD_SPASSWD )
ldap_pvt_thread_mutex_init( &passwd_mutex );
#endif

View File

@ -801,15 +801,24 @@ int slap_mods_opattrs(
if ( SLAP_LASTMOD( op->o_bd )) {
struct tm *ltm;
#ifdef HAVE_GMTIME_R
struct tm ltm_buf;
#endif
time_t now = slap_get_time();
#ifdef HAVE_GMTIME_R
ltm = gmtime_r( &now, &ltm_buf );
#else
ldap_pvt_thread_mutex_lock( &gmtime_mutex );
ltm = gmtime( &now );
#endif /* HAVE_GMTIME_R */
lutil_gentime( timebuf, sizeof(timebuf), ltm );
slap_get_csn( op, csnbuf, sizeof(csnbuf), &csn, 1 );
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
#endif
timestamp.bv_val = timebuf;
timestamp.bv_len = strlen(timebuf);

View File

@ -1242,7 +1242,9 @@ LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) replog_mutex;
#if defined( SLAPD_CRYPT ) || defined( SLAPD_SPASSWD )
LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) passwd_mutex;
#endif
#ifndef HAVE_GMTIME_R
LDAP_SLAPD_V (ldap_pvt_thread_mutex_t) gmtime_mutex;
#endif
LDAP_SLAPD_V (AccessControl *) global_acl;

View File

@ -132,6 +132,9 @@ schema_info( Entry **entry, const char **text )
{
struct tm *ltm;
#ifdef HAVE_GMTIME_R
struct tm ltm_buf;
#endif
char timebuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
/*
@ -145,10 +148,16 @@ schema_info( Entry **entry, const char **text )
* AND modified at server startup time ...
*/
#ifdef HAVE_GMTIME_R
ltm = gmtime_r( &starttime, &ltm_buf );
#else
ldap_pvt_thread_mutex_lock( &gmtime_mutex );
ltm = gmtime( &starttime );
#endif /* HAVE_GMTIME_R */
lutil_gentime( timebuf, sizeof(timebuf), ltm );
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
#endif
vals[0].bv_val = timebuf;
vals[0].bv_len = strlen( timebuf );