From: RĂ©mi Denis-Courmont Date: Wed, 19 Mar 2008 16:37:26 +0000 (+0200) Subject: Factorize the localtime_r replacement X-Git-Tag: 0.9.0-test0~1987 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=540c761324ae1034f4aa5a5d45b84907d7720b65;p=vlc Factorize the localtime_r replacement --- diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h index 4008ce8411..ca9c667925 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -103,3 +103,18 @@ # endif #endif +#ifndef HAVE_LOCALTIME_R +/* If localtime_r() is not provided, we assume localtime() uses + * thread-specific storage. */ +# include +static struct tm *localtime_r (const time_t *timep, struct tm *result) +{ + struct tm *s = localtime (timep); + if (s == NULL) + return NULL; + + *result = *s; + return result; +} +#endif + diff --git a/modules/access_filter/dump.c b/modules/access_filter/dump.c index c2881496c9..b0626c5e29 100644 --- a/modules/access_filter/dump.c +++ b/modules/access_filter/dump.c @@ -244,26 +244,6 @@ static int Seek (access_t *access, int64_t offset) return ret; } - -#ifndef HAVE_LOCALTIME_R -static inline struct tm *localtime_r (const time_t *now, struct tm *res) -{ - struct tm *unsafe = localtime (now); - /* - * This is not thread-safe. Blame your C library. - * On Win32 there SHOULD be _localtime_s instead, but of course - * Cygwin and Mingw32 don't know about it. You're on your own if you - * use this platform. - */ - if (unsafe == NULL) - return NULL; - - memcpy (res, unsafe, sizeof (*res)); - return res; -} -#endif - - static void Trigger (access_t *access) { access_sys_t *p_sys = access->p_sys; diff --git a/modules/access_filter/record.c b/modules/access_filter/record.c index a4c8459d60..7b9cec1154 100644 --- a/modules/access_filter/record.c +++ b/modules/access_filter/record.c @@ -367,16 +367,7 @@ static void Dump( access_t *p_access, uint8_t *p_buffer, int i_buffer ) time_t t = time(NULL); struct tm l; -#ifdef HAVE_LOCALTIME_R if( !localtime_r( &t, &l ) ) memset( &l, 0, sizeof(l) ); -#else - /* Grrr */ - { - struct tm *p_l = localtime( &t ); - if( p_l ) l = *p_l; - else memset( &l, 0, sizeof(l) ); - } -#endif p_input = vlc_object_find( p_access, VLC_OBJECT_INPUT, FIND_PARENT ); if( p_input ) diff --git a/src/input/vlm.c b/src/input/vlm.c index fbc7d33c91..5f68f3962f 100644 --- a/src/input/vlm.c +++ b/src/input/vlm.c @@ -1536,13 +1536,7 @@ static vlm_message_t *vlm_Show( vlm_t *vlm, vlm_media_sys_t *media, time_t i_time = (time_t)( schedule->i_date / 1000000 ); char *psz_date; -#ifdef HAVE_LOCALTIME_R localtime_r( &i_time, &date); -#else - struct tm *p_date = localtime( &i_time ); - date = *p_date; -#endif - asprintf( &psz_date, "%d/%d/%d-%d:%d:%d", date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, date.tm_hour, date.tm_min, date.tm_sec ); @@ -1891,13 +1885,7 @@ static char *Save( vlm_t *vlm ) struct tm date; time_t i_time = (time_t) ( schedule->i_date / 1000000 ); -#ifdef HAVE_LOCALTIME_R localtime_r( &i_time, &date); -#else - struct tm *p_date = localtime( &i_time ); - date = *p_date; -#endif - p += sprintf( p, "new %s schedule ", schedule->psz_name); if( schedule->b_enabled == VLC_TRUE ) diff --git a/src/text/strings.c b/src/text/strings.c index a9a8d79eed..896b22583e 100644 --- a/src/text/strings.c +++ b/src/text/strings.c @@ -618,23 +618,14 @@ char *str_format_time( const char *tformat ) { char buffer[255]; time_t curtime; -#if defined(HAVE_LOCALTIME_R) struct tm loctime; -#else - struct tm *loctime; -#endif /* Get the current time. */ curtime = time( NULL ); /* Convert it to local time representation. */ -#if defined(HAVE_LOCALTIME_R) localtime_r( &curtime, &loctime ); strftime( buffer, 255, tformat, &loctime ); -#else - loctime = localtime( &curtime ); - strftime( buffer, 255, tformat, loctime ); -#endif return strdup( buffer ); }