From: Tim Kientzle Date: Fri, 7 Aug 2009 04:01:06 +0000 (-0400) Subject: Test whether printf() supports %jd, %ju, %lld, or %llu. X-Git-Tag: v2.8.0~437 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=794a00f4a16a073a2533cde11e5b93a73d2debc1;p=thirdparty%2Flibarchive.git Test whether printf() supports %jd, %ju, %lld, or %llu. This needs to be implemented in the autoconf machinery and tar and cpio need to be taught to use it when printing very large numbers. SVN-Revision: 1351 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cd67b5ce..d388955de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,7 @@ IF(WIN32 AND NOT CYGWIN) ENDIF(WIN32 AND NOT CYGWIN) # +INCLUDE(CheckCSourceRuns) INCLUDE(CheckFileOffsetBits) INCLUDE(CheckFuncs) INCLUDE(CheckHeaders) @@ -527,6 +528,8 @@ ENDIF(HAVE_SIZEOF_WCHAR_T) # CHECK_FILE_OFFSET_BITS() + + # # Check for Extended Attribute libraries, headers, and functions # @@ -583,9 +586,34 @@ IF(ENABLE_ACL) # MacOS has an acl.h that isn't POSIX. It can be detected by # checking for ACL_USER CHECK_SYMBOL_EXISTS(ACL_USER "sys/acl.h" HAVE_ACL_USER) - ENDIF(ENABLE_ACL) +# Check whether printf() supports "%jd" +CHECK_C_SOURCE_RUNS(" + #include + #include + #include + static char buf[100]; + int main() { + sprintf(buf, \"%jd\", (intmax_t)7); + if (strcmp(buf, \"7\")) return 1; + sprintf(buf, \"%ju\", (uintmax_t)7); + return (strcmp(buf, \"7\")); + }" HAVE_PRINTF_JD) + +# Check whether printf() supports "%lld" +CHECK_C_SOURCE_RUNS(" + #include + #include + #include + static char buf[100]; + int main() { + sprintf(buf, \"%lld\", (long long)7); + if (strcmp(buf, \"7\")) return 1; + sprintf(buf, \"%llu\", (long long)7); + return (strcmp(buf, \"7\")); + }" HAVE_PRINTF_LLD) + # Generate "config.h" from "build/cmake/config.h.in" CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) diff --git a/build/cmake/config.h.in b/build/cmake/config.h.in index 4720aadaf..988d360ee 100644 --- a/build/cmake/config.h.in +++ b/build/cmake/config.h.in @@ -317,6 +317,12 @@ /* Define to 1 if you have the header file. */ #cmakedefine HAVE_POLL_H 1 +/* Define to 1 if printf() supports "%ju" and "%jd" */ +#cmakedefine HAVE_PRINTF_JD 1 + +/* Define to 1 if printf() supports "%llu" and "%lld" */ +#cmakedefine HAVE_PRINTF_LLD 1 + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_PROCESS_H 1