1
0
mirror of https://github.com/postgres/postgres.git synced 2025-12-04 12:02:48 +03:00

Have configure check for use of %lld for int64, and if that fails, check for

use of %qd...a more generic solution then having #ifdef __<INSERT OS HERE>__
in the code...
This commit is contained in:
Marc G. Fournier
1999-03-08 04:17:33 +00:00
parent a431aaec44
commit 75007a72d6
4 changed files with 679 additions and 435 deletions

View File

@@ -788,7 +788,7 @@ dnl If we found "long int" is 64 bits, assume snprintf handles it.
dnl If we found we need to use "long long int", better check.
if [[ x$SNPRINTF = x -a $HAVE_LONG_LONG_INT_64 -eq 1 ]] ; then
AC_MSG_CHECKING(whether snprintf handles 'long long int')
AC_MSG_CHECKING(whether snprintf handles 'long long int' as %lld)
AC_TRY_RUN([#include <stdio.h>
typedef long long int int64;
#define INT64_FORMAT "%lld"
@@ -813,11 +813,45 @@ int does_int64_snprintf_work()
main() {
exit(! does_int64_snprintf_work());
}],
AC_MSG_RESULT(yes),
[SNPRINTF='snprintf.o'
AC_MSG_RESULT(no)],
[SNPRINTF='snprintf.o'
AC_MSG_RESULT(assuming not on target machine)])
[ AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_INT64_AS_LLD) ],
[ AC_MSG_RESULT(no)
AC_MSG_CHECKING(whether snprintf handles 'long long int' as %qd)
AC_TRY_RUN([#include <stdio.h>
typedef long long int int64;
#define INT64_FORMAT "%qd"
int64 a = 20000001;
int64 b = 40000005;
int does_int64_snprintf_work()
{
int64 c;
char buf[100];
if (sizeof(int64) != 8)
return 0; /* doesn't look like the right size */
c = a * b;
snprintf(buf, 100, INT64_FORMAT, c);
if (strcmp(buf, "800000140000005") != 0)
return 0; /* either multiply or snprintf is busted */
return 1;
}
main() {
exit(! does_int64_snprintf_work());
}],
[ AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_INT64_AS_QD) ],
[ SNPRINTF='snprintf.o'
AC_MSG_RESULT(no)],
[ SNPRINTF='snprintf.o'
AC_MSG_RESULT(assuming not on target machine)]) ],
[ SNPRINTF='snprintf.o'
AC_MSG_RESULT(no)],
[ SNPRINTF='snprintf.o'
AC_MSG_RESULT(assuming not on target machine)])
fi