From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 11 Aug 2004 22:39:58 +0000 (+0000)
Subject: Include <inttypes.h> and <stdint.h> if available.
X-Git-Tag: cvs-readonly~4008
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=bde1c39819cc2516039506b5529bc124210ec3e6;p=gnulib.git

Include <inttypes.h> and <stdint.h> if available.
(union fooround): Use uintmax_t, not long int.
The rest is a merge from libc:
[defined _LIBC]: Include <shlib-compat.h>.
(_obstack) [defined _LIBC]: Remove after 2.3.4.
---

diff --git a/lib/obstack.c b/lib/obstack.c
index 8ce49ad8cc..25cb9abba3 100644
--- a/lib/obstack.c
+++ b/lib/obstack.c
@@ -24,6 +24,7 @@
 
 #ifdef _LIBC
 # include <obstack.h>
+# include <shlib-compat.h>
 #else
 # include "obstack.h"
 #endif
@@ -59,10 +60,17 @@
 #ifndef ELIDE_CODE
 
 
+# if HAVE_INTTYPES_H
+#  include <inttypes.h>
+# endif
+# if HAVE_STDINT_H || defined _LIBC
+#  include <stdint.h>
+# endif
+
 /* Determine default alignment.  */
 union fooround
 {
-  long int i;
+  uintmax_t i;
   long double d;
   void *p;
 };
@@ -103,10 +111,13 @@ int obstack_exit_failure = EXIT_FAILURE;
 # endif
 
 # ifdef _LIBC
+#  if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
 /* A looong time ago (before 1994, anyway; we're not sure) this global variable
    was used by non-GNU-C macros to avoid multiple evaluation.  The GNU C
    library still exports it because somebody might use it.  */
-struct obstack *_obstack;
+struct obstack *_obstack_compat;
+compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
+#  endif
 # endif
 
 /* Define a macro that either calls functions with the traditional malloc/free