[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: header file order issue on tar-1.19/lib/inttypes.h
From: |
Paul Eggert |
Subject: |
Re: header file order issue on tar-1.19/lib/inttypes.h |
Date: |
Tue, 18 Dec 2007 16:17:29 -0800 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) |
"John E. Malmberg" <address@hidden> 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 <address@hidden>
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. */