printf-posix.m4 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # printf-posix.m4 serial 6 (gettext-0.18.2)
  2. dnl Copyright (C) 2003, 2007, 2009-2017 Free Software Foundation, Inc.
  3. dnl This file is free software; the Free Software Foundation
  4. dnl gives unlimited permission to copy and/or distribute it,
  5. dnl with or without modifications, as long as this notice is preserved.
  6. dnl From Bruno Haible.
  7. dnl Test whether the printf() function supports POSIX/XSI format strings with
  8. dnl positions.
  9. AC_DEFUN([gt_PRINTF_POSIX],
  10. [
  11. AC_REQUIRE([AC_PROG_CC])
  12. AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
  13. gt_cv_func_printf_posix,
  14. [
  15. AC_RUN_IFELSE(
  16. [AC_LANG_SOURCE([[
  17. #include <stdio.h>
  18. #include <string.h>
  19. /* The string "%2$d %1$d", with dollar characters protected from the shell's
  20. dollar expansion (possibly an autoconf bug). */
  21. static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
  22. static char buf[100];
  23. int main ()
  24. {
  25. sprintf (buf, format, 33, 55);
  26. return (strcmp (buf, "55 33") != 0);
  27. }]])],
  28. [gt_cv_func_printf_posix=yes],
  29. [gt_cv_func_printf_posix=no],
  30. [
  31. AC_EGREP_CPP([notposix], [
  32. #if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
  33. notposix
  34. #endif
  35. ],
  36. [gt_cv_func_printf_posix="guessing no"],
  37. [gt_cv_func_printf_posix="guessing yes"])
  38. ])
  39. ])
  40. case $gt_cv_func_printf_posix in
  41. *yes)
  42. AC_DEFINE([HAVE_POSIX_PRINTF], [1],
  43. [Define if your printf() function supports format strings with positions.])
  44. ;;
  45. esac
  46. ])