[patch] replace deprecated form of AC_CHECK_TYPE

Brad Hards bradh at frogmouth.net
Wed Apr 22 06:39:47 GMT 2009


libreplace makes use of an older form of AC_CHECK_TYPE which basically 
provides a fallback definition for the type if it isn't available. 
http://www.gnu.org/software/hello/manual/autoconf/Obsolete-Macros.html#Obsolete-Macros
shows why this isn't a good idea (its not so important, except for pointer 
types).
This patch partly addresses the issue.

Brad

diff --git a/lib/replace/libreplace_cc.m4 b/lib/replace/libreplace_cc.m4
index 30c63f2..a26dee4 100644
--- a/lib/replace/libreplace_cc.m4
+++ b/lib/replace/libreplace_cc.m4
@@ -141,9 +141,7 @@ AC_CHECK_SIZEOF(off_t)
 AC_CHECK_SIZEOF(size_t)
 AC_CHECK_SIZEOF(ssize_t)

-AC_CHECK_TYPE(intptr_t, long long)
-AC_CHECK_TYPE(uintptr_t, unsigned long long)
-AC_CHECK_TYPE(ptrdiff_t, unsigned long long)
+AC_CHECK_TYPES([intptr_t, uintptr_t, ptrdiff_t])

 if test x"$ac_cv_type_long_long" != x"yes";then
        AC_MSG_ERROR([LIBREPLACE needs type 'long long'])
diff --git a/lib/replace/replace.h b/lib/replace/replace.h
index c5b8676..fe1f732 100644
--- a/lib/replace/replace.h
+++ b/lib/replace/replace.h
@@ -535,6 +535,18 @@ typedef int bool;
 #endif
 #endif

+#if !defined(HAVE_INTPTR_T)
+typedef long long intptr_t ;
+#endif
+
+#if !defined(HAVE_UINTPTR_T)
+typedef unsigned long long uintptr_t ;
+#endif
+
+#if !defined(HAVE_PTRDIFF_T)
+typedef unsigned long long ptrdiff_t ;
+#endif
+
 /*
  * to prevent <rpcsvc/yp_prot.h> from doing a redefine of 'bool'
  *


More information about the samba-technical mailing list