[vlc-devel] commit: Factorize the localtime_r replacement ( Rémi Denis-Courmont )
git version control
git at videolan.org
Wed Mar 19 17:48:44 CET 2008
vlc | branch: master | Rémi Denis-Courmont <rem at videolan.org> | Wed Mar 19 18:37:26 2008 +0200| [540c761324ae1034f4aa5a5d45b84907d7720b65]
Factorize the localtime_r replacement
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=540c761324ae1034f4aa5a5d45b84907d7720b65
---
include/vlc_fixups.h | 15 +++++++++++++++
modules/access_filter/dump.c | 20 --------------------
modules/access_filter/record.c | 9 ---------
src/input/vlm.c | 12 ------------
src/text/strings.c | 9 ---------
5 files changed, 15 insertions(+), 50 deletions(-)
diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h
index 4008ce8..ca9c667 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 <time.h>
+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 c288149..b0626c5 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 a4c8459..7b9cec1 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 fbc7d33..5f68f39 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 a9a8d79..896b225 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 );
}
More information about the vlc-devel
mailing list