git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/4] autoconf: Check for ll hh j z t size specifiers introduced by C99

From
Jakub Narebski <jnareb@gmail.com>
Date
Aug 4, 2006, 15:55 UTC
Message-ID
<11547069591228-git-send-email-jnareb@gmail.com>
In-Reply-To
<7v7j1on71n.fsf@assigned-by-dhcp.cox.net>

Add custom test for checking whether formatted IO functions (printf/scanf et.al.) support 'size specifiers' introduced by C99, namely ll, hh, j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
 configure.ac |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
index 178220f..1796cf4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -189,6 +189,27 @@ # sockaddr_storage.
 AC_CHECK_TYPE(struct sockaddr_storage,[],
 [GIT_CONF_APPEND_LINE(NO_SOCKADDR_STORAGE=YesPlease)],
 [#include <netinet/in.h>])
+#
+# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.)
+# do not support the 'size specifiers' introduced by C99, namely ll, hh,
+# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t).
+# some C compilers supported these specifiers prior to C99 as an extension.
+AC_CACHE_CHECK(whether IO functions support %ll %hh %j %z %t size specifiers,
+ ac_cv_c_c99_format,
+[# Actually git uses only %z (%zu) in alloc.c, and %t (%td) in mktag.c
+AC_RUN_IFELSE(
+	[AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
+		[[char buf[64];
+		if (sprintf(buf, "%lld%hhd%jd%zd%td", (long long int)1, (char)2, (intmax_t)3, (size_t)4, (ptrdiff_t)5) != 5)
+		  exit(1);
+		else if (strcmp(buf, "12345"))
+		  exit(2);]])],
+	[ac_cv_c_c99_format=yes],
+	[ac_cv_c_c99_format=no])
+])
+if test $ac_cv_c_c99_format = no; then
+	GIT_CONF_APPEND_LINE(NO_C99_FORMAT=YesPlease)
+fi
 
 
 ## Checks for library functions.
-- 
1.4.1.1
Previous: Jakub NarebskiNext: Jakub Narebski
Message 6 of 14 in “What's in git.git”
  1. Junio C HamanoAug 4, 2006
  2. Jakub NarebskiAug 4, 2006
  3. 1/4 autoconf: Check for working mmapJakub Narebski, Aug 4, 2006
  4. Junio C HamanoAug 4, 2006
  5. Jakub NarebskiAug 4, 2006
  6. 2/4 autoconf: Check for ll hh j z t size specifiers introduced by C99Jakub Narebski, Aug 4, 2006
  7. 3/4 autoconf: Typo cleanup, reordering etc.Jakub Narebski, Aug 4, 2006
  8. 4/4 Copy description of new build configuration variables to configure.acJakub Narebski, Aug 4, 2006
  9. Johannes SchindelinAug 4, 2006
  10. Jakub NarebskiAug 4, 2006
  11. Junio C HamanoAug 4, 2006
  12. Junio C HamanoAug 4, 2006
  13. Junio C HamanoAug 4, 2006
  14. Jakub NarebskiAug 4, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.