"John E. Malmberg" <[EMAIL PROTECTED]> writes: > The quick patch that I can do is to move where the #undef of the > _GL_JUST_INCLUDE_SYSTEM_DIRECTORY_H is.
Yes, thanks, that sounds like a reasonable fix. I installed the patch below: does it work for you? > The long term fix to avoid this would be to not use the same names for > the replacement header files as the system header files, That would mean we'd have to rewrite all our source code that includes <stdint.h>. We'd rather not do that. If this becomes a real problem on a lot of platforms I suppose we'll have to rethink things, but for now the current approach seems to be working OK. 2007-12-18 Paul Eggert <[EMAIL PROTECTED]> Fix problem with _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H on VMS. * lib/stdint.in.h (_GL_JUST_INCLUDE_SYSTEM_INTTYPES_H): Define before any system include files, and undef after them all. This should fix a problem on VMS reported by John E. Malmberg in <http://lists.gnu.org/archive/html/bug-gnulib/2007-12/msg00118.html>. diff --git a/lib/stdint.in.h b/lib/stdint.in.h index 3dcd9ba..265bd87 100644 --- a/lib/stdint.in.h +++ b/lib/stdint.in.h @@ -23,6 +23,12 @@ #ifndef _GL_STDINT_H +/* When including a system file that in turn includes <inttypes.h>, + use the system <inttypes.h>, not our substitute. This avoids + problems with (for example) VMS, whose <sys/bitypes.h> includes + <inttypes.h>. */ +#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H + /* Get those types that are already defined in other system include files, so that we can "#define int8_t signed char" below without worrying about a later system include file containing a "typedef @@ -66,9 +72,7 @@ /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__. <inttypes.h> also defines intptr_t and uintptr_t. */ -# define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H # include <inttypes.h> -# undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H #elif @HAVE_SYS_INTTYPES_H@ /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */ @@ -91,6 +95,8 @@ #endif +#undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H + /* Minimum and maximum values for a integer type under the usual assumption. Return an unspecified value if BITS == 0, adding a check to pacify picky compilers. */