Fix problem with Compaq (ex-DEC) Desktop C compiler on Tru64.
authorBruno Haible <bruno@clisp.org>
Fri, 6 Apr 2007 12:25:54 +0000 (12:25 +0000)
committerBruno Haible <bruno@clisp.org>
Fri, 6 Apr 2007 12:25:54 +0000 (12:25 +0000)
ChangeLog
lib/math_.h
lib/stdio_.h
lib/stdlib_.h
lib/string_.h
lib/time_.h
lib/wchar_.h
lib/wctype_.h

index cd0061a7e7c72359fbcb49b6167eb42154d88b62..09e94417bc3be7b583e7c086d34535f555ab811d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+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
index e8dfb2a7d5e15eeed07277bd6cdb7ac9d48d5bd7..66aa0538e4819d73d977ac30dbccd587e08fa618 100644 (file)
    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 <math.h>
+#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.  */
index 183cf7fe0674d5e88fac58ef18de778b755e0db3..86d04e1d10df7592ebb303910faed0374ee35150 100644 (file)
 
 #else
 /* Normal invocation convention.  */
+
+#ifdef __DECC
+# include_next <stdio.h>
+#endif
+
 #ifndef _GL_STDIO_H
 #define _GL_STDIO_H
 
-#include @ABSOLUTE_STDIO_H@
+#ifndef __DECC
+# include @ABSOLUTE_STDIO_H@
+#endif
 
 #include <stdarg.h>
 #include <stddef.h>
index a9204088e3f3d546405bf8f3c51faf9b950d6f89..0581509adc3a02f894efa933084ffaca68db27f8 100644 (file)
 
 #else
 /* Normal invocation convention.  */
+
+#ifdef __DECC
+# include_next <stdlib.h>
+#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.  */
index b50523cce0e7cd61bb0c10da548c997f6bbea931..a7c0c23f4a437af3a84c08201852e5ef7d8b787a 100644 (file)
    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 <string.h>
+#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.  */
index 5467d3dc88fc2834492a4a542c66e8e577920eb4..28fb04ddbff7d18c9b54988903e1cdd126483b0a 100644 (file)
 #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
index 6813a2116d82052a2aa26ff2fca57a4dd7852999..5f87be7aa3c66b0a88c8c8fa6a9cff4402192fd9 100644 (file)
  * For now, this just ensures proper prerequisite inclusion order.
  */
 
+#ifdef __DECC
+# include <stdio.h>
+# include_next <wchar.h>
+#endif
+
 #ifndef _GL_WCHAR_H
 #define _GL_WCHAR_H
 
@@ -37,6 +42,8 @@
 #include <time.h>
 
 /* Include the original <wchar.h>.  */
-#include @ABSOLUTE_WCHAR_H@
+#ifndef __DECC
+# include @ABSOLUTE_WCHAR_H@
+#endif
 
 #endif /* _GL_WCHAR_H */
index 1297c61e62b7492c498af106906f30713f03a84c..f9028e4d03e9b2be0195c826cb6c05e450d2a7b9 100644 (file)
@@ -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: <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.