Test for localtime_r only after including the right MT enabling CFLAGS
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>
Mon, 11 Jan 1999 14:41:07 +0000 (14:41 +0000)
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>
Mon, 11 Jan 1999 14:41:07 +0000 (14:41 +0000)
1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

* configure.in: Test for localtime_r only after including the
right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).

* gdate.c (g_date_set_time): Emit warning, if no localtime_r
function is available on thread enabled systems. Define ptm only,
if really needed, and assert on it.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
configure.in
gdate.c
glib/gdate.c

index 17a91e0..a1f32ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 17a91e0..a1f32ce 100644 (file)
@@ -1,3 +1,12 @@
+1999-01-11  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>
+
+       * configure.in: Test for localtime_r only after including the
+       right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
+
+       * gdate.c (g_date_set_time): Emit warning, if no localtime_r
+       function is available on thread enabled systems. Define ptm only,
+       if really needed, and assert on it.
+
 Sat Jan  9 15:08:44 1999  Jeff Garzik  <jgarzik@pobox.com>
 
        * testglib.c:
index 327cb0a..2d22881 100644 (file)
@@ -254,7 +254,7 @@ AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))
 AC_CHECK_HEADER(alloca.h, glib_have_alloca_h=yes, glib_have_alloca_h=no)
 
 # Check for some functions
-AC_CHECK_FUNCS(localtime_r rand_r lstat strerror strsignal memmove vsnprintf vasprintf strcasecmp strncasecmp poll)
+AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf vasprintf strcasecmp strncasecmp poll)
 
 # Check for sys_errlist
 AC_MSG_CHECKING(for sys_errlist)
@@ -717,6 +717,8 @@ AC_SUBST(G_THREAD_LIBS)
 
 CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
 
+AC_CHECK_FUNCS(localtime_r rand_r)
+
 dnl **********************************************
 dnl *** GDefaultMutex setup and initialization ***
 dnl **********************************************
diff --git a/gdate.c b/gdate.c
index 04d0a9a..f44d70b 100644 (file)
--- a/gdate.c
+++ b/gdate.c
@@ -790,15 +790,22 @@ g_date_set_time (GDate *d,
                 GTime  time)
 {
   time_t t = time;
-  struct tm tm, *ptm;
+  struct tm tm;
   
   g_return_if_fail (d != NULL);
   
-#if HAVE_LOCALTIME_R
+#ifdef HAVE_LOCALTIME_R
   localtime_r (&t, &tm);
 #else
-  ptm = localtime (&t);
-  memcpy((void *) &tm, (void *) ptm, sizeof(struct tm));
+#  ifdef G_THREADS_ENABLED
+#  warning "the `g_date_set_time' function will not be MT-safe"
+#  warning "because there is no `localtime_r' on your system."
+#  endif
+  {
+    struct tm *ptm = localtime (&t);
+    g_assert (ptm);
+    memcpy ((void *) &tm, (void *) ptm, sizeof(struct tm));
+  }
 #endif
   
   d->julian = FALSE;
index 04d0a9a..f44d70b 100644 (file)
@@ -790,15 +790,22 @@ g_date_set_time (GDate *d,
                 GTime  time)
 {
   time_t t = time;
-  struct tm tm, *ptm;
+  struct tm tm;
   
   g_return_if_fail (d != NULL);
   
-#if HAVE_LOCALTIME_R
+#ifdef HAVE_LOCALTIME_R
   localtime_r (&t, &tm);
 #else
-  ptm = localtime (&t);
-  memcpy((void *) &tm, (void *) ptm, sizeof(struct tm));
+#  ifdef G_THREADS_ENABLED
+#  warning "the `g_date_set_time' function will not be MT-safe"
+#  warning "because there is no `localtime_r' on your system."
+#  endif
+  {
+    struct tm *ptm = localtime (&t);
+    g_assert (ptm);
+    memcpy ((void *) &tm, (void *) ptm, sizeof(struct tm));
+  }
 #endif
   
   d->julian = FALSE;