* configure.in: Check for vsnprintf and vasprintf, and for positional
authorKen Raeburn <raeburn@mit.edu>
Thu, 9 Mar 2006 00:52:55 +0000 (00:52 +0000)
committerKen Raeburn <raeburn@mit.edu>
Thu, 9 Mar 2006 00:52:55 +0000 (00:52 +0000)
specification support in printf format strings.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@17723 dc483132-0cff-0310-8789-dd5450dbe970

src/ChangeLog
src/configure.in

index 8d40b20a91bf3dffce3b900e683f95612ea2acbf..471fa0fdd81f0bf2779efb298544ff38843473b7 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-08  Ken Raeburn  <raeburn@mit.edu>
+
+       * configure.in: Check for vsnprintf and vasprintf, and for
+       positional specification support in printf format strings.
+
 2006-03-06  Ken Raeburn  <raeburn@mit.edu>
 
        * configure.in: Don't check for dlopen here.  Call
index 63021d9f34bf759a21be8d61e698fce564670cba..1364043674b9c18ea164f6f91df5a3fc3ff81365 100644 (file)
@@ -56,7 +56,7 @@ LIBUTIL=-lutil
 AC_SUBST(LIBUTIL)
 dnl for kdc
 AC_CHECK_HEADERS(syslog.h stdarg.h sys/select.h sys/sockio.h ifaddrs.h unistd.h)
-AC_CHECK_FUNCS(openlog syslog closelog strftime vsprintf)
+AC_CHECK_FUNCS(openlog syslog closelog strftime vsprintf vasprintf vsnprintf)
 KRB5_NEED_PROTO([#include <string.h>
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -496,6 +496,30 @@ AC_CHECK_TYPES([uint32_t, int32_t, uint64_t, int64_t, uint_least32_t, uintptr_t,
 #endif
 ])
 dnl
+dnl Test for POSIX 2001 *printf support (X/Open System Interfaces extension
+dnl to ANSI/ISO C 1999 specification).  Specifically, positional
+dnl specifications; not checking for other features like %zx at present.
+AC_MSG_CHECKING(for POSIX printf positional specification support)
+AC_CACHE_VAL(ac_cv_printf_positional,[
+AC_TRY_RUN([
+#include <stdio.h>
+#include <string.h>
+const char expected[] = "200 100";
+int main () {
+    char buf[30];
+    sprintf(buf, "%2\$x %1\$d", 100, 512);
+    if (strcmp(expected, buf)) {
+       fprintf(stderr,"bad result: <%s> wanted: <%s>\n", buf, expected);
+       return 1;
+    }
+    return 0;
+}],
+  ac_cv_printf_positional=yes,
+  ac_cv_printf_positional=no,
+  AC_MSG_ERROR([Cannot test for printf positional argument support when cross compiling]))])
+dnl Nothing for autoconf.h for now.
+AC_MSG_RESULT($ac_cv_printf_positional)
+dnl
 dnl
 dnl Check for thread safety issues.
 dnl (Is there a better place for this?)