From: Bruno Haible Date: Fri, 6 Apr 2007 12:25:54 +0000 (+0000) Subject: Fix problem with Compaq (ex-DEC) Desktop C compiler on Tru64. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ab7a59fc062fe1290a3a314f3a2aa875ee8b2b5;p=pspp Fix problem with Compaq (ex-DEC) Desktop C compiler on Tru64. --- diff --git a/ChangeLog b/ChangeLog index cd0061a7e7..09e94417bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2007-04-06 Bruno Haible + + 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 in + . + 2007-04-04 Eric Blake * m4/stdint.m4 (gl_STDINT_H): Detect WINT_MAX bug in cygwin diff --git a/lib/math_.h b/lib/math_.h index e8dfb2a7d5..66aa0538e4 100644 --- a/lib/math_.h +++ b/lib/math_.h @@ -16,10 +16,16 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#ifdef __DECC +# include_next +#endif + #ifndef _GL_MATH_H #define _GL_MATH_H -#include @ABSOLUTE_MATH_H@ +#ifndef __DECC +# include @ABSOLUTE_MATH_H@ +#endif /* The definition of GL_LINK_WARNING is copied here. */ diff --git a/lib/stdio_.h b/lib/stdio_.h index 183cf7fe06..86d04e1d10 100644 --- a/lib/stdio_.h +++ b/lib/stdio_.h @@ -23,10 +23,17 @@ #else /* Normal invocation convention. */ + +#ifdef __DECC +# include_next +#endif + #ifndef _GL_STDIO_H #define _GL_STDIO_H -#include @ABSOLUTE_STDIO_H@ +#ifndef __DECC +# include @ABSOLUTE_STDIO_H@ +#endif #include #include diff --git a/lib/stdlib_.h b/lib/stdlib_.h index a9204088e3..0581509adc 100644 --- a/lib/stdlib_.h +++ b/lib/stdlib_.h @@ -30,6 +30,11 @@ #else /* Normal invocation convention. */ + +#ifdef __DECC +# include_next +#endif + #ifndef _GL_STDLIB_H #define _GL_STDLIB_H @@ -40,7 +45,9 @@ # pragma GCC system_header #endif -#include @ABSOLUTE_STDLIB_H@ +#ifndef __DECC +# include @ABSOLUTE_STDLIB_H@ +#endif /* The definition of GL_LINK_WARNING is copied here. */ diff --git a/lib/string_.h b/lib/string_.h index b50523cce0..a7c0c23f4a 100644 --- a/lib/string_.h +++ b/lib/string_.h @@ -16,6 +16,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#ifdef __DECC +# include_next +#endif + #ifndef _GL_STRING_H #define _GL_STRING_H @@ -25,7 +29,9 @@ # pragma GCC system_header #endif -#include @ABSOLUTE_STRING_H@ +#ifndef __DECC +# include @ABSOLUTE_STRING_H@ +#endif /* The definition of GL_LINK_WARNING is copied here. */ diff --git a/lib/time_.h b/lib/time_.h index 5467d3dc88..28fb04ddbf 100644 --- a/lib/time_.h +++ b/lib/time_.h @@ -22,86 +22,97 @@ #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 # 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 (e.g., FreeBSD circa 1997). */ -# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ -# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ -# include -# else -# undef timespec -# define timespec rpl_timespec +# if ! @TIME_H_DEFINES_STRUCT_TIMESPEC@ +# if @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +# include +# 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 . */ -# 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 and . */ -# 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 . */ -# 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 diff --git a/lib/wchar_.h b/lib/wchar_.h index 6813a2116d..5f87be7aa3 100644 --- a/lib/wchar_.h +++ b/lib/wchar_.h @@ -25,6 +25,11 @@ * For now, this just ensures proper prerequisite inclusion order. */ +#ifdef __DECC +# include +# include_next +#endif + #ifndef _GL_WCHAR_H #define _GL_WCHAR_H @@ -37,6 +42,8 @@ #include /* Include the original . */ -#include @ABSOLUTE_WCHAR_H@ +#ifndef __DECC +# include @ABSOLUTE_WCHAR_H@ +#endif #endif /* _GL_WCHAR_H */ diff --git a/lib/wctype_.h b/lib/wctype_.h index 1297c61e62..f9028e4d03 100644 --- a/lib/wctype_.h +++ b/lib/wctype_.h @@ -26,9 +26,6 @@ * 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: must be included before . Tru64 with Desktop Toolkit C has a bug: must be included before @@ -39,15 +36,29 @@ # include # include # include -typedef wint_t __wctype_wint_t; -#else -typedef int __wctype_wint_t; #endif +#if @HAVE_WCTYPE_H@ +# ifdef __DECC +# include_next +# endif +#endif + +#ifndef _GL_WCTYPE_H +#define _GL_WCTYPE_H + /* Include the original if it exists. BeOS 5 has the functions but no . */ #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 but lacks the functions.