diff lib-src/b2m.c @ 83507:81f2d90dee68

Merged from Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-188 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-189 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-190 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-191 Undo incorrect merge of etc/images/README from Gnus 5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-192 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-193 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-194 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-195 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-196 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-197 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-198 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-199 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-200 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-201 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-202 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-203 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-204 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-205 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-206 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-73 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-74 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-75 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-76 Update from CVS: README: Addition from 5.10.6 tar ball. * emacs@sv.gnu.org/gnus--rel--5.10--patch-77 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-78 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-79 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-80 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-547
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 10 Apr 2006 14:52:24 +0000
parents 1e68e7f3b824
children 65ca8fb66a0d 5048b64c7cf0
line wrap: on
line diff
--- a/lib-src/b2m.c	Sat Apr 01 17:16:18 2006 +0000
+++ b/lib-src/b2m.c	Mon Apr 10 14:52:24 2006 +0000
@@ -26,7 +26,6 @@
 #undef static
 #endif
 
-#include <limits.h>
 #include <stdio.h>
 #include <time.h>
 #include <sys/types.h>
@@ -45,15 +44,13 @@
 
 typedef int logical;
 
-/* True if TM_YEAR is a struct tm's tm_year value that is acceptable
-   to asctime.  Glibc asctime returns a useful string unless TM_YEAR
-   is nearly INT_MAX, but the C Standard lets C libraries overrun a
-   buffer if TM_YEAR needs more than 4 bytes.  */
-#ifdef __GLIBC__
-# define TM_YEAR_IN_ASCTIME_RANGE(tm_year) ((tm_year) <= INT_MAX - 1900)
-#else
+#define TM_YEAR_BASE 1900
+
+/* Nonzero if TM_YEAR is a struct tm's tm_year value that causes
+   asctime to have well-defined behavior.  */
+#ifndef TM_YEAR_IN_ASCTIME_RANGE
 # define TM_YEAR_IN_ASCTIME_RANGE(tm_year) \
-    (-999 - 1900 <= (tm_year) && (tm_year) <= 9999 - 1900)
+    (1000 - TM_YEAR_BASE <= (tm_year) && (tm_year) <= 9999 - TM_YEAR_BASE)
 #endif
 
 /*
@@ -148,9 +145,9 @@
      Don't use 'ctime', as that might dump core if the hardware clock
      is set to a bizarre value.  */
   tm = localtime (&ltoday);
-  if (! (tm && TM_YEAR_IN_ASCTIME_RANGE (tm->tm_year)))
+  if (! (tm && TM_YEAR_IN_ASCTIME_RANGE (tm->tm_year)
+	 && (today = asctime (tm))))
     fatal ("current time is out of range");
-  today = asctime (tm);
   data.size = 200;
   data.buffer = xnew (200, char);