+2007-04-06 Bruno Haible <bruno@clisp.org>
+
+ Fix problem with Compaq (ex-DEC) Desktop C compiler on Tru64.
+ * lib/math_.h [__DECC]: Include the overridden include file through
+ #include_next, outside the double-inclusion guard.
+ * lib/stdio_.h [__DECC]: Likewise.
+ * lib/stdlib_.h [__DECC]: Likewise.
+ * lib/string_.h [__DECC]: Likewise.
+ * lib/time_.h [__DECC]: Likewise.
+ * lib/wchar_.h [__DECC]: Likewise.
+ * lib/wctype_.h [__DECC]: Likewise.
+ Reported by Albert Chin <china@thewrittenword.com> in
+ <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00088.html>.
+
2007-04-04 Eric Blake <ebb9@byu.net>
* m4/stdint.m4 (gl_STDINT_H): Detect WINT_MAX bug in cygwin
#if defined __need_time_t || defined __need_clock_t || defined __need_timespec
# include @ABSOLUTE_TIME_H@
-#elif ! defined _GL_TIME_H
-# define _GL_TIME_H
-# include @ABSOLUTE_TIME_H@
+#else
+/* Normal invocation convention. */
-# ifdef __cplusplus
-extern "C" {
+# ifdef __DECC
+# include_next <time.h>
# endif
+# if ! defined _GL_TIME_H
+# define _GL_TIME_H
+
+# ifndef __DECC
+# include @ABSOLUTE_TIME_H@
+# endif
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
/* Some systems don't define struct timespec (e.g., AIX 4.1, Ultrix 4.3).
Or they define it with the wrong member names or define it in <sys/time.h>
(e.g., FreeBSD circa 1997). */
-# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
-# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
-# include <sys/time.h>
-# else
-# undef timespec
-# define timespec rpl_timespec
+# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@
+# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
+# include <sys/time.h>
+# else
+# undef timespec
+# define timespec rpl_timespec
struct timespec
{
time_t tv_sec;
long int tv_nsec;
};
+# endif
# endif
-# endif
/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
return -1 and store the remaining time into RMTP. See
<http://www.opengroup.org/susv3xsh/nanosleep.html>. */
-# if @REPLACE_NANOSLEEP@
-# define nanosleep rpl_nanosleep
+# if @REPLACE_NANOSLEEP@
+# define nanosleep rpl_nanosleep
int nanosleep (struct timespec const *__rqtp, struct timespec *__rmtp);
-# endif
+# endif
/* Convert TIMER to RESULT, assuming local time and UTC respectively. See
<http://www.opengroup.org/susv3xsh/localtime_r.html> and
<http://www.opengroup.org/susv3xsh/gmtime_r.html>. */
-# if @REPLACE_LOCALTIME_R@
-# undef localtime_r
-# define localtime_r rpl_localtime_r
-# undef gmtime_r
-# define gmtime_r rpl_gmtime_r
+# if @REPLACE_LOCALTIME_R@
+# undef localtime_r
+# define localtime_r rpl_localtime_r
+# undef gmtime_r
+# define gmtime_r rpl_gmtime_r
struct tm *localtime_r (time_t const *restrict __timer,
struct tm *restrict __result);
struct tm *gmtime_r (time_t const *restrict __timer,
struct tm *restrict __result);
-# endif
+# endif
/* Parse BUF as a time stamp, assuming FORMAT specifies its layout, and store
the resulting broken-down time into TM. See
<http://www.opengroup.org/susv3xsh/strptime.html>. */
-# if @REPLACE_STRPTIME@
-# undef strptime
-# define strptime rpl_strptime
+# if @REPLACE_STRPTIME@
+# undef strptime
+# define strptime rpl_strptime
char *strptime (char const *restrict __buf, char const *restrict __format,
struct tm *restrict __tm);
-# endif
+# endif
/* Convert TM to a time_t value, assuming UTC. */
-# if @REPLACE_TIMEGM@
-# undef timegm
-# define timegm rpl_timegm
+# if @REPLACE_TIMEGM@
+# undef timegm
+# define timegm rpl_timegm
time_t timegm (struct tm *__tm);
-#endif
+# endif
/* Encourage applications to avoid unsafe functions that can overrun
buffers when given outlandish struct tm values. Portable
applications should use strftime (or even sprintf) instead. */
-# if GNULIB_PORTCHECK
-# undef asctime
-# define asctime eschew_asctime
-# undef asctime_r
-# define asctime_r eschew_asctime_r
-# undef ctime
-# define ctime eschew_ctime
-# undef ctime_r
-# define ctime_r eschew_ctime_r
-# endif
+# if GNULIB_PORTCHECK
+# undef asctime
+# define asctime eschew_asctime
+# undef asctime_r
+# define asctime_r eschew_asctime_r
+# undef ctime
+# define ctime eschew_ctime
+# undef ctime_r
+# define ctime_r eschew_ctime_r
+# endif
-# ifdef __cplusplus
+# ifdef __cplusplus
}
-# endif
+# endif
+# endif
#endif
* wctrans_t, and wctype_t are not yet implemented.
*/
-#ifndef _GL_WCTYPE_H
-#define _GL_WCTYPE_H
-
#if @HAVE_WINT_T@
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
# include <stdio.h>
# include <time.h>
# include <wchar.h>
-typedef wint_t __wctype_wint_t;
-#else
-typedef int __wctype_wint_t;
#endif
+#if @HAVE_WCTYPE_H@
+# ifdef __DECC
+# include_next <wctype.h>
+# endif
+#endif
+
+#ifndef _GL_WCTYPE_H
+#define _GL_WCTYPE_H
+
/* Include the original <wctype.h> if it exists.
BeOS 5 has the functions but no <wctype.h>. */
#if @HAVE_WCTYPE_H@
-# include @ABSOLUTE_WCTYPE_H@
+# ifndef __DECC
+# include @ABSOLUTE_WCTYPE_H@
+# endif
+#endif
+
+#if @HAVE_WINT_T@
+typedef wint_t __wctype_wint_t;
+#else
+typedef int __wctype_wint_t;
#endif
/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.