# 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
+
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;
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 )
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 );
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 )
{
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 );
}