mirror of
https://github.com/postgres/postgres.git
synced 2025-08-08 06:02:22 +03:00
Allow long long on BSDI.
This commit is contained in:
@@ -606,7 +606,43 @@ int does_int64_work()
|
|||||||
main() {
|
main() {
|
||||||
exit(! does_int64_work());
|
exit(! does_int64_work());
|
||||||
}],
|
}],
|
||||||
[AC_DEFINE(HAVE_LONG_LONG_INT_64) AC_MSG_RESULT(yes)],
|
[AC_DEFINE(HAVE_LONG_LONG_INT_64_Ld) AC_MSG_RESULT(yes)],
|
||||||
|
AC_MSG_RESULT(no),
|
||||||
|
AC_MSG_RESULT(assuming not on target machine))
|
||||||
|
|
||||||
|
AC_TRY_RUN([#include <stdio.h>
|
||||||
|
typedef long long int int64;
|
||||||
|
#define INT64_FORMAT "%qd"
|
||||||
|
|
||||||
|
int64 a = 20000001;
|
||||||
|
int64 b = 40000005;
|
||||||
|
|
||||||
|
int does_int64_work()
|
||||||
|
{
|
||||||
|
int64 c,d,e;
|
||||||
|
char buf[100];
|
||||||
|
|
||||||
|
if (sizeof(int64) != 8)
|
||||||
|
return 0; /* doesn't look like the right size */
|
||||||
|
|
||||||
|
/* we do perfunctory checks on multiply, divide, sprintf, sscanf */
|
||||||
|
c = a * b;
|
||||||
|
sprintf(buf, INT64_FORMAT, c);
|
||||||
|
if (strcmp(buf, "800000140000005") != 0)
|
||||||
|
return 0; /* either multiply or sprintf is busted */
|
||||||
|
if (sscanf(buf, INT64_FORMAT, &d) != 1)
|
||||||
|
return 0;
|
||||||
|
if (d != c)
|
||||||
|
return 0;
|
||||||
|
e = d / b;
|
||||||
|
if (e != a)
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
main() {
|
||||||
|
exit(! does_int64_work());
|
||||||
|
}],
|
||||||
|
[AC_DEFINE(HAVE_LONG_LONG_INT_64_qd) AC_MSG_RESULT(yes)],
|
||||||
AC_MSG_RESULT(no),
|
AC_MSG_RESULT(no),
|
||||||
AC_MSG_RESULT(assuming not on target machine))
|
AC_MSG_RESULT(assuming not on target machine))
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: int8.h,v 1.4 1998/09/05 01:19:38 thomas Exp $
|
* $Id: int8.h,v 1.5 1998/09/10 03:27:09 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* These data types are supported on all 64-bit architectures, and may
|
* These data types are supported on all 64-bit architectures, and may
|
||||||
@@ -29,11 +29,17 @@ typedef long int int64;
|
|||||||
|
|
||||||
#define INT64_FORMAT "%ld"
|
#define INT64_FORMAT "%ld"
|
||||||
#else
|
#else
|
||||||
#ifdef HAVE_LONG_LONG_INT_64
|
#ifdef HAVE_LONG_LONG_INT_64_Ld
|
||||||
/* We have working support for "long long int", use that */
|
/* We have working support for "long long int", use that */
|
||||||
typedef long long int int64;
|
typedef long long int int64;
|
||||||
|
|
||||||
#define INT64_FORMAT "%lld"
|
#define INT64_FORMAT "%Ld"
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_LONG_LONG_INT_64_qd
|
||||||
|
/* We have working support for "long long int", use that */
|
||||||
|
typedef long long int int64;
|
||||||
|
|
||||||
|
#define INT64_FORMAT "%qd"
|
||||||
#else
|
#else
|
||||||
/* Won't actually work, but fall back to long int so that int8.c compiles */
|
/* Won't actually work, but fall back to long int so that int8.c compiles */
|
||||||
typedef long int int64;
|
typedef long int int64;
|
||||||
@@ -42,6 +48,7 @@ typedef long int int64;
|
|||||||
#define INT64_IS_BUSTED
|
#define INT64_IS_BUSTED
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int64 *int8in(char *str);
|
extern int64 *int8in(char *str);
|
||||||
extern char *int8out(int64 * val);
|
extern char *int8out(int64 * val);
|
||||||
|
Reference in New Issue
Block a user