-/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/pgtypes_interval.h,v 1.10 2006/08/23 12:01:52 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/include/pgtypes_interval.h,v 1.11 2006/08/24 10:48:21 meskes Exp $ */
#ifndef PGTYPES_INTERVAL
#define PGTYPES_INTERVAL
#include <ecpg_config.h>
-#if defined(USE_INTEGER_DATETIMES) && (defined(HAVE_LONG_INT_64) || defined(HAVE_LONG_LONG_INT_64))
+#ifndef C_H
+
+#ifdef HAVE_LONG_INT_64
+#ifndef HAVE_INT64
+typedef long int int64;
+#endif
+#elif defined(HAVE_LONG_LONG_INT_64)
+/* We have working support for "long long int", use that */
+
+#ifndef HAVE_INT64
+typedef long long int int64;
+#endif
+#else /* not HAVE_LONG_INT_64 and not
+ * HAVE_LONG_LONG_INT_64 */
+
+/* Won't actually work, but fall back to long int so that code compiles */
+#ifndef HAVE_INT64
+typedef long int int64;
+#endif
+
+#define INT64_IS_BUSTED
+#endif /* not HAVE_LONG_INT_64 and not HAVE_LONG_LONG_INT_64 */
+
+#if defined(USE_INTEGER_DATETIMES) && !defined(INT64_IS_BUSTED)
#define HAVE_INT64_TIMESTAMP
#endif
+#endif /* C_H */
+
typedef struct
{
#ifdef HAVE_INT64_TIMESTAMP